Skip to content
Snippets Groups Projects
Commit 100379cc authored by stefan's avatar stefan
Browse files

dokk (the docking game):

 - Moving Camera when game not started
 - Added Goal to game

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@1969 5a81b35b-ba03-0410-adc8-b2c5c5119f08
parent 59b6c369
Branches
Tags
No related merge requests found
...@@ -3,6 +3,7 @@ NAME: Dengue Virus ...@@ -3,6 +3,7 @@ NAME: Dengue Virus
DIFFICULTY: Easy DIFFICULTY: Easy
TIME: 60000 TIME: 60000
SAVE: 1 SAVE: 1
GOAL: 0.0
[Intro] [Intro]
TEXTTIME: 3000 TEXTTIME: 3000
...@@ -104,4 +105,4 @@ ROTZ:0.3 ...@@ -104,4 +105,4 @@ ROTZ:0.3
FRAMESKIP: 5 FRAMESKIP: 5
[Name] [Name]
TEXT: Bitte geben Sie ihr Krzel ein: TEXT: Bitte geben Sie ihr Krzel ein:
[1]
score = 2.11296811104
name = STU
...@@ -3,6 +3,7 @@ NAME: Glyoxalase ...@@ -3,6 +3,7 @@ NAME: Glyoxalase
DIFFICULTY: Chuck Norris like.. DIFFICULTY: Chuck Norris like..
TIME: 60000 TIME: 60000
SAVE: 1 SAVE: 1
GOAL: 0.0
[Intro] [Intro]
TEXTTIME: 3000 TEXTTIME: 3000
...@@ -104,4 +105,4 @@ ROTZ:0.3 ...@@ -104,4 +105,4 @@ ROTZ:0.3
FRAMESKIP: 5 FRAMESKIP: 5
[Name] [Name]
TEXT: Bitte geben Sie ihr Krzel ein: TEXT: Bitte geben Sie ihr Krzel ein:
[1]
score = 2.234915483
name = STU
[Level] [Level]
NAME: Retinol Bindung NAME: Retinol Bindung
DIFFICULTY: Chuck Norris like.. DIFFICULTY: Hard
TIME: 60000 TIME: 60000
SAVE: 1 SAVE: 1
GOAL: 0.0
[Intro] [Intro]
TEXTTIME: 3000 TEXTTIME: 3000
...@@ -104,4 +105,4 @@ ROTZ:0.3 ...@@ -104,4 +105,4 @@ ROTZ:0.3
FRAMESKIP: 5 FRAMESKIP: 5
[Name] [Name]
TEXT: Bitte geben Sie ihr Krzel ein: TEXT: Bitte geben Sie ihr Krzel ein:
...@@ -3,6 +3,7 @@ NAME: Thrombin ...@@ -3,6 +3,7 @@ NAME: Thrombin
DIFFICULTY: Medium DIFFICULTY: Medium
TIME: 60000 TIME: 60000
SAVE: 1 SAVE: 1
GOAL: 0.0
[Intro] [Intro]
TEXTTIME: 3000 TEXTTIME: 3000
...@@ -18,10 +19,10 @@ TEXTTIME1: 5000 ...@@ -18,10 +19,10 @@ TEXTTIME1: 5000
TEXT2: Mit diesem Spiel wird Ihnen demonstriert wie ein... TEXT2: Mit diesem Spiel wird Ihnen demonstriert wie ein...
TEXTTIME2: 1000 TEXTTIME2: 1000
TEXT3: Sie knnen mit dem 3D-Input Device den Liganden sowohl drehen als auch verschieben. TEXT3: Sie k�nnen mit dem 3D-Input Device den Liganden sowohl drehen als auch verschieben.
TEXTTIME3: 3000 TEXTTIME3: 3000
TEXT4: Falls Fragen bestehen, knnen Sie sich gerne an eine unserer Fachkrfte wenden. TEXT4: Falls Fragen bestehen, k�nnen Sie sich gerne an eine unserer Fachkr�fte wenden.
TEXTTIME4: 3000 TEXTTIME4: 3000
TEXT5: So nun kann es los gehen. TEXT5: So nun kann es los gehen.
...@@ -128,4 +129,4 @@ FRAMESKIP: 12 ...@@ -128,4 +129,4 @@ FRAMESKIP: 12
RMSD: 0 RMSD: 0
[Name] [Name]
TEXT: Bitte geben Sie ihr Krzel ein: TEXT: Bitte geben Sie ihr K�rzel ein:
[1]
score = 45.1562461853
name = GAA
...@@ -3,6 +3,7 @@ NAME: Thrombin no H ...@@ -3,6 +3,7 @@ NAME: Thrombin no H
DIFFICULTY: Mittelschwer DIFFICULTY: Mittelschwer
TIME: 60000 TIME: 60000
SAVE: 1 SAVE: 1
GOAL: 0.0
[Intro] [Intro]
TEXTTIME: 3000 TEXTTIME: 3000
...@@ -104,4 +105,4 @@ ROTZ:0.3 ...@@ -104,4 +105,4 @@ ROTZ:0.3
FRAMESKIP: 5 FRAMESKIP: 5
[Name] [Name]
TEXT: Bitte geben Sie ihr Krzel ein: TEXT: Bitte geben Sie ihr Krzel ein:
...@@ -62,6 +62,7 @@ class DokkGLCanvas(QGLWidget): ...@@ -62,6 +62,7 @@ class DokkGLCanvas(QGLWidget):
painter.drawText(QPoint(self.width()-100, 20), "%.0f seconds left" % self.dokk.GetLevel().GetRemainingTime()) painter.drawText(QPoint(self.width()-100, 20), "%.0f seconds left" % self.dokk.GetLevel().GetRemainingTime())
if self.hud is not None: if self.hud is not None:
self.hud.Paint(painter) self.hud.Paint(painter)
self.dokk.GetLevel().CheckSolved()
def resizeGL(self, w, h): def resizeGL(self, w, h):
gfx.Scene().Resize(w, h) gfx.Scene().Resize(w, h)
...@@ -70,9 +71,9 @@ class DokkGLCanvas(QGLWidget): ...@@ -70,9 +71,9 @@ class DokkGLCanvas(QGLWidget):
self.last_point_=QPoint(event.x(), event.y()) self.last_point_=QPoint(event.x(), event.y())
def mouseMoveEvent(self, event): def mouseMoveEvent(self, event):
if not self._lock_input:
delta=QPoint(event.x(), event.y())-self.last_point_ delta=QPoint(event.x(), event.y())-self.last_point_
self.last_point_=QPoint(event.x(), event.y()) self.last_point_=QPoint(event.x(), event.y())
if not self._lock_input:
if event.buttons() & Qt.LeftButton: if event.buttons() & Qt.LeftButton:
tf=gfx.Scene().GetTransform() tf=gfx.Scene().GetTransform()
if event.modifiers() & Qt.ShiftModifier: if event.modifiers() & Qt.ShiftModifier:
...@@ -88,7 +89,7 @@ class DokkGLCanvas(QGLWidget): ...@@ -88,7 +89,7 @@ class DokkGLCanvas(QGLWidget):
self.dokk.GetLevel().RotateAxis(tf.GetRot().GetRow(1), delta.x()*0.005) self.dokk.GetLevel().RotateAxis(tf.GetRot().GetRow(1), delta.x()*0.005)
self.dokk.GetLevel().UpdateScores() self.dokk.GetLevel().UpdateScores()
self.update() self.update()
elif event.buttons() & Qt.RightButton: if event.buttons() & Qt.RightButton:
if delta.y()!=0: if delta.y()!=0:
gfx.Scene().Apply(gfx.InputEvent(gfx.INPUT_DEVICE_MOUSE, gfx.Scene().Apply(gfx.InputEvent(gfx.INPUT_DEVICE_MOUSE,
gfx.INPUT_COMMAND_ROTX, delta.y()*0.5), gfx.INPUT_COMMAND_ROTX, delta.y()*0.5),
...@@ -102,7 +103,6 @@ class DokkGLCanvas(QGLWidget): ...@@ -102,7 +103,6 @@ class DokkGLCanvas(QGLWidget):
if not self._lock_input: if not self._lock_input:
self.dokk.GetLevel().SetPivot(event.x(), self.height()-event.y()) self.dokk.GetLevel().SetPivot(event.x(), self.height()-event.y())
def wheelEvent(self, event): def wheelEvent(self, event):
if not self._lock_input:
self.OnTransform(gfx.INPUT_COMMAND_TRANSZ,0,gfx.TRANSFORM_VIEW, self.OnTransform(gfx.INPUT_COMMAND_TRANSZ,0,gfx.TRANSFORM_VIEW,
0.1*(-event.delta())) 0.1*(-event.delta()))
......
...@@ -111,6 +111,7 @@ class Level(QtCore.QObject): ...@@ -111,6 +111,7 @@ class Level(QtCore.QObject):
def Reset(self): def Reset(self):
self.endtime = 0 self.endtime = 0
self.stop_time = 0 self.stop_time = 0
self._started = False
self.timer.stop() self.timer.stop()
self.CleanHUD() self.CleanHUD()
self.ResetPos() self.ResetPos()
...@@ -164,6 +165,14 @@ class Level(QtCore.QObject): ...@@ -164,6 +165,14 @@ class Level(QtCore.QObject):
self.protein.Close() self.protein.Close()
self.ligand.Close() self.ligand.Close()
def CheckSolved(self):
goal = float(self.config.Level["GOAL"])
if self.GetRMSD()< goal:
self.Finished()
def IsStarted(self):
return self._started
def _IntroEnd(self): def _IntroEnd(self):
if self._started: if self._started:
Dokk().gl_win.SetLockInput(False) Dokk().gl_win.SetLockInput(False)
......
...@@ -11,7 +11,10 @@ class LevelInfo(QtCore.QObject): ...@@ -11,7 +11,10 @@ class LevelInfo(QtCore.QObject):
self.timer = QtCore.QTimer() self.timer = QtCore.QTimer()
self.timer.setSingleShot(True) self.timer.setSingleShot(True)
if bool(int(level.config.Level["SAVE"])):
self.highscore = HighScore(level.topten) self.highscore = HighScore(level.topten)
else:
self.highscore = None
self.level_info = LevelDetails(level.config.Level["NAME"],level.config.Level["DIFFICULTY"]) self.level_info = LevelDetails(level.config.Level["NAME"],level.config.Level["DIFFICULTY"])
self.connect(level,QtCore.SIGNAL("Started()"),self.Finish) self.connect(level,QtCore.SIGNAL("Started()"),self.Finish)
self.connect(level,QtCore.SIGNAL("Stopped()"),self.Start) self.connect(level,QtCore.SIGNAL("Stopped()"),self.Start)
...@@ -25,11 +28,13 @@ class LevelInfo(QtCore.QObject): ...@@ -25,11 +28,13 @@ class LevelInfo(QtCore.QObject):
def Finish(self): def Finish(self):
self.start = False self.start = False
if self.highscore:
self.highscore.Finish() self.highscore.Finish()
self.level_info.Finish() self.level_info.Finish()
def Timeout(self): def Timeout(self):
if self.start: if self.start:
if self.highscore:
self.highscore.Start() self.highscore.Start()
self.level_info.Start() self.level_info.Start()
......
...@@ -66,6 +66,10 @@ class SpnavInputDevice(QtCore.QObject): ...@@ -66,6 +66,10 @@ class SpnavInputDevice(QtCore.QObject):
dokk.Dokk().NextLevel() dokk.Dokk().NextLevel()
elif button == 6: elif button == 6:
QtGui.QApplication.exit() QtGui.QApplication.exit()
elif button == 13:
self.level.ResetPos()
elif button == 12 and not self.level.IsStarted():
self.level.Solve()
if (not self._lock_input): if (not self._lock_input):
if button == 0: if button == 0:
...@@ -84,7 +88,3 @@ class SpnavInputDevice(QtCore.QObject): ...@@ -84,7 +88,3 @@ class SpnavInputDevice(QtCore.QObject):
self.level.Finished() self.level.Finished()
elif button == 11: elif button == 11:
self.level.Finished() self.level.Finished()
elif button == 12:
self.level.Solve()
elif button == 13:
self.level.ResetPos()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment