diff --git a/examples/dokk/datafiles/dengue/level.ini b/examples/dokk/datafiles/dengue/level.ini index 2dc60d7540cb54adcca25dbdbd856566609c006e..3e666df05021115d25363e49ed685e5b9226174e 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c9383bdcbd6a9605ed18b49f684216bfbe3f8df5 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 00bff0f11b8afb2ffee1294b00ccb087f10b09d1..c971889d63fd8c850b18a05ba8dfdd2da52cb311 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4206ef2bcf6c53522cdbab09ff58d8cfad5e9911 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 bb8537a0a2ff8259e60a249e6e607b08c444183c..a6f78d513aff78fdc302d88391afb574b46c8d3b 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 82b8c9afab5d9c8f320762f9ec4d7181c5957c18..7541f228f389bb824c8c3eed3f095fcbecbe43f2 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fd278ffe3f7a651d32cf1e70fd23fb4c5e8b4e5d 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 db51d6dfbde891d7f41cec1424ca7ff0986e91b6..fae1fcdf4db36ddd1514f76bb1c8bbb262d92408 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 f57b52cd5d91ca15e61013662b71c95646fac0ca..2f3ade599fc86de1144f49c0c6c46328c4cf5612 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 76b4bdb30b277156944c8f7c2f92deebf083c3c8..edbede190218ae0c73288aa9015e9cf2dc7a116f 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 934a4beae4589108ccfec043b42c1bfd53690dc1..759147ef19df5df43a1bd357ab245c6618560d05 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 b0eed4b5446ae87b0260b1ef0bfeba69509414bb..d079fe6c4cd66660e3efb23fc54afeb6fe2ea220 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()