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
No related branches found
No related tags found
No related merge requests found
......@@ -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 Krzel ein:
TEXT: Bitte geben Sie ihr Krzel ein:
[1]
score = 2.11296811104
name = STU
......@@ -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 Krzel ein:
TEXT: Bitte geben Sie ihr Krzel ein:
[1]
score = 2.234915483
name = STU
[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 Krzel ein:
TEXT: Bitte geben Sie ihr Krzel ein:
......@@ -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 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
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
TEXT5: So nun kann es los gehen.
......@@ -128,4 +129,4 @@ FRAMESKIP: 12
RMSD: 0
[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
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 Krzel ein:
TEXT: Bitte geben Sie ihr Krzel ein:
......@@ -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):
......
......@@ -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)
......
......@@ -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()
......
......@@ -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()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment