From 100379ccdba93858ee861af2e6831a31e868a54d Mon Sep 17 00:00:00 2001 From: stefan <stefan@5a81b35b-ba03-0410-adc8-b2c5c5119f08> Date: Mon, 12 Apr 2010 12:14:18 +0000 Subject: [PATCH] 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 --- examples/dokk/datafiles/dengue/level.ini | 3 +- examples/dokk/datafiles/dengue/top_ten.ini | 4 +++ examples/dokk/datafiles/glyoxalase/level.ini | 3 +- .../dokk/datafiles/glyoxalase/top_ten.ini | 4 +++ examples/dokk/datafiles/retinol/level.ini | 5 ++-- examples/dokk/datafiles/thrombin/level.ini | 7 +++-- examples/dokk/datafiles/thrombin/top_ten.ini | 4 +++ examples/dokk/datafiles/thrombinNoH/level.ini | 3 +- examples/dokk/glwin.py | 30 +++++++++---------- examples/dokk/level.py | 9 ++++++ examples/dokk/level_info.py | 11 +++++-- examples/dokk/spnav_input.py | 10 +++---- 12 files changed, 62 insertions(+), 31 deletions(-) diff --git a/examples/dokk/datafiles/dengue/level.ini b/examples/dokk/datafiles/dengue/level.ini index 2dc60d754..3e666df05 100644 --- a/examples/dokk/datafiles/dengue/level.ini +++ b/examples/dokk/datafiles/dengue/level.ini @@ -3,6 +3,7 @@ NAME: Dengue Virus DIFFICULTY: Easy TIME: 60000 SAVE: 1 +GOAL: 0.0 [Intro] TEXTTIME: 3000 @@ -104,4 +105,4 @@ ROTZ:0.3 FRAMESKIP: 5 [Name] -TEXT: Bitte geben Sie ihr K�rzel ein: +TEXT: Bitte geben Sie ihr K�rzel ein: diff --git a/examples/dokk/datafiles/dengue/top_ten.ini b/examples/dokk/datafiles/dengue/top_ten.ini index e69de29bb..c9383bdcb 100644 --- a/examples/dokk/datafiles/dengue/top_ten.ini +++ b/examples/dokk/datafiles/dengue/top_ten.ini @@ -0,0 +1,4 @@ +[1] +score = 2.11296811104 +name = STU + diff --git a/examples/dokk/datafiles/glyoxalase/level.ini b/examples/dokk/datafiles/glyoxalase/level.ini index 00bff0f11..c971889d6 100644 --- a/examples/dokk/datafiles/glyoxalase/level.ini +++ b/examples/dokk/datafiles/glyoxalase/level.ini @@ -3,6 +3,7 @@ NAME: Glyoxalase DIFFICULTY: Chuck Norris like.. TIME: 60000 SAVE: 1 +GOAL: 0.0 [Intro] TEXTTIME: 3000 @@ -104,4 +105,4 @@ ROTZ:0.3 FRAMESKIP: 5 [Name] -TEXT: Bitte geben Sie ihr K�rzel ein: +TEXT: Bitte geben Sie ihr K�rzel ein: diff --git a/examples/dokk/datafiles/glyoxalase/top_ten.ini b/examples/dokk/datafiles/glyoxalase/top_ten.ini index e69de29bb..4206ef2bc 100644 --- a/examples/dokk/datafiles/glyoxalase/top_ten.ini +++ b/examples/dokk/datafiles/glyoxalase/top_ten.ini @@ -0,0 +1,4 @@ +[1] +score = 2.234915483 +name = STU + diff --git a/examples/dokk/datafiles/retinol/level.ini b/examples/dokk/datafiles/retinol/level.ini index bb8537a0a..a6f78d513 100644 --- a/examples/dokk/datafiles/retinol/level.ini +++ b/examples/dokk/datafiles/retinol/level.ini @@ -1,8 +1,9 @@ [Level] NAME: Retinol Bindung -DIFFICULTY: Chuck Norris like.. +DIFFICULTY: Hard TIME: 60000 SAVE: 1 +GOAL: 0.0 [Intro] TEXTTIME: 3000 @@ -104,4 +105,4 @@ ROTZ:0.3 FRAMESKIP: 5 [Name] -TEXT: Bitte geben Sie ihr K�rzel ein: +TEXT: Bitte geben Sie ihr K�rzel ein: diff --git a/examples/dokk/datafiles/thrombin/level.ini b/examples/dokk/datafiles/thrombin/level.ini index 82b8c9afa..7541f228f 100644 --- a/examples/dokk/datafiles/thrombin/level.ini +++ b/examples/dokk/datafiles/thrombin/level.ini @@ -3,6 +3,7 @@ NAME: Thrombin DIFFICULTY: Medium TIME: 60000 SAVE: 1 +GOAL: 0.0 [Intro] TEXTTIME: 3000 @@ -18,10 +19,10 @@ TEXTTIME1: 5000 TEXT2: Mit diesem Spiel wird Ihnen demonstriert wie ein... TEXTTIME2: 1000 -TEXT3: Sie k�nnen 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 -TEXT4: Falls Fragen bestehen, k�nnen Sie sich gerne an eine unserer Fachkr�fte wenden. +TEXT4: Falls Fragen bestehen, k�nnen Sie sich gerne an eine unserer Fachkr�fte wenden. TEXTTIME4: 3000 TEXT5: So nun kann es los gehen. @@ -128,4 +129,4 @@ FRAMESKIP: 12 RMSD: 0 [Name] -TEXT: Bitte geben Sie ihr K�rzel ein: +TEXT: Bitte geben Sie ihr K�rzel ein: diff --git a/examples/dokk/datafiles/thrombin/top_ten.ini b/examples/dokk/datafiles/thrombin/top_ten.ini index e69de29bb..fd278ffe3 100644 --- a/examples/dokk/datafiles/thrombin/top_ten.ini +++ b/examples/dokk/datafiles/thrombin/top_ten.ini @@ -0,0 +1,4 @@ +[1] +score = 45.1562461853 +name = GAA + diff --git a/examples/dokk/datafiles/thrombinNoH/level.ini b/examples/dokk/datafiles/thrombinNoH/level.ini index db51d6dfb..fae1fcdf4 100644 --- a/examples/dokk/datafiles/thrombinNoH/level.ini +++ b/examples/dokk/datafiles/thrombinNoH/level.ini @@ -3,6 +3,7 @@ NAME: Thrombin no H DIFFICULTY: Mittelschwer TIME: 60000 SAVE: 1 +GOAL: 0.0 [Intro] TEXTTIME: 3000 @@ -104,4 +105,4 @@ ROTZ:0.3 FRAMESKIP: 5 [Name] -TEXT: Bitte geben Sie ihr K�rzel ein: +TEXT: Bitte geben Sie ihr K�rzel ein: diff --git a/examples/dokk/glwin.py b/examples/dokk/glwin.py index f57b52cd5..2f3ade599 100644 --- a/examples/dokk/glwin.py +++ b/examples/dokk/glwin.py @@ -62,6 +62,7 @@ class DokkGLCanvas(QGLWidget): painter.drawText(QPoint(self.width()-100, 20), "%.0f seconds left" % self.dokk.GetLevel().GetRemainingTime()) if self.hud is not None: self.hud.Paint(painter) + self.dokk.GetLevel().CheckSolved() def resizeGL(self, w, h): gfx.Scene().Resize(w, h) @@ -70,9 +71,9 @@ class DokkGLCanvas(QGLWidget): self.last_point_=QPoint(event.x(), event.y()) def mouseMoveEvent(self, event): + delta=QPoint(event.x(), event.y())-self.last_point_ + self.last_point_=QPoint(event.x(), event.y()) if not self._lock_input: - delta=QPoint(event.x(), event.y())-self.last_point_ - self.last_point_=QPoint(event.x(), event.y()) if event.buttons() & Qt.LeftButton: tf=gfx.Scene().GetTransform() if event.modifiers() & Qt.ShiftModifier: @@ -88,23 +89,22 @@ class DokkGLCanvas(QGLWidget): self.dokk.GetLevel().RotateAxis(tf.GetRot().GetRow(1), delta.x()*0.005) self.dokk.GetLevel().UpdateScores() self.update() - elif event.buttons() & Qt.RightButton: - if delta.y()!=0: - gfx.Scene().Apply(gfx.InputEvent(gfx.INPUT_DEVICE_MOUSE, - gfx.INPUT_COMMAND_ROTX, delta.y()*0.5), - False) - if delta.x()!=0: - gfx.Scene().Apply(gfx.InputEvent(gfx.INPUT_DEVICE_MOUSE, - gfx.INPUT_COMMAND_ROTY, delta.x()*0.5), - False) - self.update() + if event.buttons() & Qt.RightButton: + if delta.y()!=0: + gfx.Scene().Apply(gfx.InputEvent(gfx.INPUT_DEVICE_MOUSE, + gfx.INPUT_COMMAND_ROTX, delta.y()*0.5), + False) + if delta.x()!=0: + gfx.Scene().Apply(gfx.InputEvent(gfx.INPUT_DEVICE_MOUSE, + gfx.INPUT_COMMAND_ROTY, delta.x()*0.5), + False) + self.update() def mouseDoubleClickEvent(self, event): if not self._lock_input: self.dokk.GetLevel().SetPivot(event.x(), self.height()-event.y()) def wheelEvent(self, event): - if not self._lock_input: - self.OnTransform(gfx.INPUT_COMMAND_TRANSZ,0,gfx.TRANSFORM_VIEW, - 0.1*(-event.delta())) + self.OnTransform(gfx.INPUT_COMMAND_TRANSZ,0,gfx.TRANSFORM_VIEW, + 0.1*(-event.delta())) def OnTransform(self,com, indx, trg, val): diff --git a/examples/dokk/level.py b/examples/dokk/level.py index 76b4bdb30..edbede190 100644 --- a/examples/dokk/level.py +++ b/examples/dokk/level.py @@ -111,6 +111,7 @@ class Level(QtCore.QObject): def Reset(self): self.endtime = 0 self.stop_time = 0 + self._started = False self.timer.stop() self.CleanHUD() self.ResetPos() @@ -164,6 +165,14 @@ class Level(QtCore.QObject): self.protein.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): if self._started: Dokk().gl_win.SetLockInput(False) diff --git a/examples/dokk/level_info.py b/examples/dokk/level_info.py index 934a4beae..759147ef1 100644 --- a/examples/dokk/level_info.py +++ b/examples/dokk/level_info.py @@ -11,7 +11,10 @@ class LevelInfo(QtCore.QObject): self.timer = QtCore.QTimer() self.timer.setSingleShot(True) - self.highscore = HighScore(level.topten) + if bool(int(level.config.Level["SAVE"])): + self.highscore = HighScore(level.topten) + else: + self.highscore = None 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("Stopped()"),self.Start) @@ -25,12 +28,14 @@ class LevelInfo(QtCore.QObject): def Finish(self): self.start = False - self.highscore.Finish() + if self.highscore: + self.highscore.Finish() self.level_info.Finish() def Timeout(self): if self.start: - self.highscore.Start() + if self.highscore: + self.highscore.Start() self.level_info.Start() diff --git a/examples/dokk/spnav_input.py b/examples/dokk/spnav_input.py index b0eed4b54..d079fe6c4 100644 --- a/examples/dokk/spnav_input.py +++ b/examples/dokk/spnav_input.py @@ -66,7 +66,11 @@ class SpnavInputDevice(QtCore.QObject): dokk.Dokk().NextLevel() elif button == 6: 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 button == 0: self.trans = not self.trans @@ -84,7 +88,3 @@ class SpnavInputDevice(QtCore.QObject): self.level.Finished() elif button == 11: self.level.Finished() - elif button == 12: - self.level.Solve() - elif button == 13: - self.level.ResetPos() -- GitLab