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

Dokk (the dokking game):

- Added new Level (thrombinNoH)
- Added level.ini
- Fixed Overlays

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@1926 5a81b35b-ba03-0410-adc8-b2c5c5119f08
parent 14569263
No related branches found
No related tags found
No related merge requests found
Showing
with 62426 additions and 32 deletions
[Level]
NAME: Thrombin
DIFFICULTY: Medium
[Intro]
TEXTTIME: 3000
TEXTCOLORRED: 255
TEXTCOLORGREEN: 255
TEXTCOLORBLUE: 255
TEXTSIZE: 16
TEXT_COUNT: 9
TEXT1: Hallo und herzlich wilkommen zu dokk
dem Dokking-Spiel
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.
TEXTTIME3: 3000
TEXT4: Falls Fragen bestehen, knnen Sie sich gerne an eine unserer Fachkrfte wenden.
TEXTTIME4: 3000
TEXT5: So nun kann es los gehen.
TEXTTIME5: 1000
TEXT6: 3
TEXTTIME6: 1500
TEXTCOLORRED6: 255
TEXTCOLORGREEN6: 0
TEXTCOLORBLUE6: 0
TEXTSIZE6: 40
TEXT7: 2
TEXTTIME7: 1500
TEXTCOLORRED7: 255
TEXTCOLORGREEN7: 165
TEXTCOLORBLUE7: 0
TEXTSIZE7: 70
TEXT8: 1
TEXTTIME8: 1500
TEXTCOLORRED8: 255
TEXTCOLORGREEN8: 255
TEXTCOLORBLUE8: 0
TEXTSIZE8: 100
TEXT9: LOS!
TEXTTIME9: 2000
TEXTCOLORRED9: 0
TEXTCOLORGREEN9: 255
TEXTCOLORBLUE9: 0
TEXTSIZE9: 130
[Box]
XMIN:-25
XMAX:40
YMIN:-21
YMAX:25
ZMIN:-20
ZMAX:100
[Start]
POSX:10.0
POSY:-2.0
POSZ:60.0
ROTX:-2.0
ROTY:0.25
ROTZ:0.3
[Score]
FRAMESKIP: 20
[Goal]
RMSD: 0
SAVE: True
2CF8_lig.pdb
3D
Structure written by MMmdl.
37 41 0 0 1 0 999 V2000
9.4980 -5.9460 27.5040 N 0 3 0 0 0 0
9.4020 -5.4570 26.6360 H 0 0 0 0 0 0
9.4890 -6.9490 27.5020 H 0 0 0 0 0 0
9.6250 -5.2840 28.6420 C 0 0 0 0 0 0
9.7480 -5.9950 29.7790 N 0 3 0 0 0 0
9.7350 -6.9930 29.7460 H 0 0 0 0 0 0
9.8440 -5.5390 30.6640 H 0 0 0 0 0 0
9.6200 -3.7970 28.6750 C 0 0 3 0 0 0
9.4630 -3.0320 27.5360 C 0 0 0 0 0 0
9.4940 -1.6490 27.5650 C 0 0 0 0 0 0
9.6340 -0.9640 28.7790 C 0 0 1 0 0 0
9.8110 -1.7350 29.9300 C 0 0 0 0 0 0
9.8010 -3.1160 29.8900 C 0 0 0 0 0 0
9.6470 0.5280 28.7910 C 0 0 2 0 0 0
10.3290 1.1380 29.9640 N 0 3 1 0 0 0
10.0227 0.6725 30.8064 H 0 0 0 0 0 0
11.8150 1.0140 29.8890 C 0 0 0 0 0 0
12.3650 2.3960 29.5680 C 0 0 0 0 0 0
11.1720 3.2900 29.2380 C 0 0 0 0 0 0
10.0050 2.5750 29.9150 C 0 0 1 0 0 0
8.6340 2.6510 29.2600 C 0 0 2 0 0 0
7.5040 3.1360 30.1890 C 0 0 2 0 0 0
6.7170 1.9390 30.4290 N 0 0 0 0 0 0
7.2510 0.7830 29.7930 C 0 0 0 0 0 0
6.8460 -0.3180 30.0120 O 0 0 0 0 0 0
8.2910 1.2400 28.8090 C 0 0 2 0 0 0
5.9360 1.7620 31.6750 C 0 0 0 0 0 0
4.4810 1.7460 31.2190 C 0 0 3 0 0 0
3.8910 0.5760 30.7950 C 0 0 0 0 0 0
2.5790 0.5230 30.3430 C 0 0 0 0 0 0
1.8460 1.6980 30.3320 C 0 0 3 0 0 0
2.4070 2.8920 30.7520 C 0 0 0 0 0 0
3.7280 2.9210 31.1930 C 0 0 0 0 0 0
6.6140 4.2060 29.5470 C 0 0 0 0 0 0
5.9190 3.7520 28.2640 C 0 0 0 0 0 0
7.4200 5.4640 29.3380 C 0 0 0 0 0 0
0.1500 1.6660 29.7940 Cl 0 0 0 0 0 0
1 2 1 0 0 0
1 3 1 0 0 0
1 4 2 0 0 0
4 5 1 0 0 0
4 8 1 0 0 0
5 6 1 0 0 0
5 7 1 0 0 0
8 9 2 0 0 0
8 13 1 0 0 0
9 10 1 0 0 0
10 11 2 0 0 0
11 12 1 0 0 0
11 14 1 0 0 0
12 13 2 0 0 0
14 15 1 0 0 0
14 26 1 0 0 0
15 16 1 0 0 0
15 17 1 0 0 0
15 20 1 0 0 0
17 18 1 0 0 0
18 19 1 0 0 0
19 20 1 0 0 0
20 21 1 0 0 0
21 22 1 0 0 0
21 26 1 0 0 0
22 23 1 0 0 0
22 34 1 0 0 0
23 24 1 0 0 0
23 27 1 0 0 0
24 25 2 0 0 0
24 26 1 0 0 0
27 28 1 0 0 0
28 29 2 0 0 0
28 33 1 0 0 0
29 30 1 0 0 0
30 31 2 0 0 0
31 32 1 0 0 0
31 37 1 0 0 0
32 33 2 0 0 0
34 35 1 0 0 0
34 36 1 0 0 0
M CHG 3 1 1 5 1 15 1
M END
> <s_m_entry_name>
lig.1
> <s_m_entry_id>
1
$$$$
Source diff could not be displayed: it is too large. Options to address this: view the blob.
Source diff could not be displayed: it is too large. Options to address this: view the blob.
Source diff could not be displayed: it is too large. Options to address this: view the blob.
#!/bin/sh #!/bin/sh
cat dokk.py | gosty Dokk $@ cat start_dokk.py | gosty Dokk $@
\ No newline at end of file \ No newline at end of file
import glwin import glwin
from ost import io, geom, gfx
from level import Level class Dokk(object):
def __new__(type, *args):
if not '_the_instance' in type.__dict__:
type._the_instance = object.__new__(type)
return type._the_instance
dokk_win=glwin.DokkGLWin() def __init__(self):
if not '_ready' in dir(self):
self.gl_win=glwin.DokkGLWin(self)
self._ready = True
def SetLevel(self,level):
self.gl_win.SetLevel(level)
self.level_ = level
level=Level('thrombin') def NextLevel(self):
dokk_win.SetLevel(level) self.level_.Close()
def GetLevel(self):
return self.level_
def Start(self, args):
self.gl_win.Show(fullscreen=('--fullscreen' in args))
dokk_win.Show(fullscreen=('--fullscreen' in sys.argv))
...@@ -6,18 +6,26 @@ from PyQt4.QtOpenGL import * ...@@ -6,18 +6,26 @@ from PyQt4.QtOpenGL import *
import OpenGL.GL as ogl import OpenGL.GL as ogl
from spnav_input import SpnavInputDevice from spnav_input import SpnavInputDevice
from hud import HUD
from hud import HUDObject
UPDATE_INTERVAL = 20
TRANS_VAL = 20 TRANS_VAL = 20
class DokkGLCanvas(QGLWidget): class DokkGLCanvas(QGLWidget):
def __init__(self, format, parent=None): def __init__(self, format, dokk, parent=None):
QGLWidget.__init__(self, format, parent) QGLWidget.__init__(self, format, parent)
self.last_pos_=QPoint() self.last_pos_=QPoint()
self.setAutoFillBackground(False) self.setAutoFillBackground(False)
#self.setAttribute(Qt.WA_KeyCompression,True) #self.setAttribute(Qt.WA_KeyCompression,True)
self.resize(800, 800) self.resize(800, 800)
self.dokk = dokk
self.spnav_input = SpnavInputDevice(self) self.spnav_input = SpnavInputDevice(self)
self.update_timer = QTimer()
self.update_timer.start(UPDATE_INTERVAL)
QObject.connect(self.update_timer, SIGNAL("timeout()"), self.update)
def initializeGL(self): def initializeGL(self):
gfx.Scene().InitGL() gfx.Scene().InitGL()
...@@ -31,6 +39,7 @@ class DokkGLCanvas(QGLWidget): ...@@ -31,6 +39,7 @@ class DokkGLCanvas(QGLWidget):
def SetLevel(self, level): def SetLevel(self, level):
self.level_=level self.level_=level
self.hud = HUD(level)
self.spnav_input.SetLevel(level) self.spnav_input.SetLevel(level)
def paintEvent(self, event): def paintEvent(self, event):
...@@ -39,7 +48,6 @@ class DokkGLCanvas(QGLWidget): ...@@ -39,7 +48,6 @@ class DokkGLCanvas(QGLWidget):
painter=QPainter(self) painter=QPainter(self)
painter.setRenderHint(QPainter.Antialiasing); painter.setRenderHint(QPainter.Antialiasing);
self.RenderHUD(painter) self.RenderHUD(painter)
print "%.3f"%self.level_.GetRMSD()
def RenderHUD(self, painter): def RenderHUD(self, painter):
...@@ -49,6 +57,8 @@ class DokkGLCanvas(QGLWidget): ...@@ -49,6 +57,8 @@ class DokkGLCanvas(QGLWidget):
painter.setPen(QPen(QColor(255,255,255), Qt.SolidLine)) painter.setPen(QPen(QColor(255,255,255), Qt.SolidLine))
painter.setFont(QFont("Verdana")) painter.setFont(QFont("Verdana"))
painter.drawText(QPoint(10, 20), "You are %.1f away from the solution" % self.level_.GetRMSD()) painter.drawText(QPoint(10, 20), "You are %.1f away from the solution" % self.level_.GetRMSD())
if self.hud is not None:
self.hud.Paint(painter)
def resizeGL(self, w, h): def resizeGL(self, w, h):
gfx.Scene().Resize(w, h) gfx.Scene().Resize(w, h)
...@@ -117,9 +127,9 @@ class DokkGLWin(gfx.GLWinBase): ...@@ -117,9 +127,9 @@ class DokkGLWin(gfx.GLWinBase):
fmt=QGLFormat() fmt=QGLFormat()
fmt.setAlpha(True) fmt.setAlpha(True)
return fmt return fmt
def __init__(self): def __init__(self,dokk):
gfx.GLWinBase.__init__(self) gfx.GLWinBase.__init__(self)
self.canvas_=DokkGLCanvas(self._CreateFormat()) self.canvas_=DokkGLCanvas(self._CreateFormat(),dokk)
def DoRefresh(self): def DoRefresh(self):
self.refresh_=True self.refresh_=True
def SetLevel(self, level): def SetLevel(self, level):
...@@ -131,3 +141,9 @@ class DokkGLWin(gfx.GLWinBase): ...@@ -131,3 +141,9 @@ class DokkGLWin(gfx.GLWinBase):
self.canvas_.show() self.canvas_.show()
def SetStereo(): def SetStereo():
pass pass
def Width(self):
return self.canvas_.width()
def Height(self):
return self.canvas_.height()
\ No newline at end of file
import math
import time
from ost import gfx
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtOpenGL import *
class HUD(QObject):
def __init__(self, level, parent=None):
QObject.__init__(self,parent)
self.level = level
level.hud = self
self.objects = list()
def Add(self, hud_object):
if hud_object in self.objects:
self.objects.remove(hud_object)
self.objects.append(hud_object)
hud_object.Appended(self)
self.emit(SIGNAL('HUDChanged()'))
def Remove(self, hud_object):
if hud_object in self.objects:
self.objects.remove(hud_object)
self.emit(SIGNAL('HUDChanged()'))
def Paint(self, painter):
for hud_object in self.objects:
hud_object.Paint(painter)
class HUDObject(QObject):
def __init__(self, time, parent=None):
QObject.__init__(self, parent)
self.time = time
self.timer = QTimer()
self.timer.setSingleShot(True)
self.hud = None
QObject.connect(self.timer, SIGNAL("timeout()"), self.Timeout)
def Appended(self, hud):
self.hud = hud
self.timer.start(self.time)
self.endtime = float(time.time()+(self.time)/1000.0)
def Timeout(self):
self.timer.stop()
if self.hud is not None:
self.hud.Remove(self)
self.emit(SIGNAL('Finished()'))
def Reset(self):
self.timer.stop()
if self.hud is not None:
self.hud.Add(self)
class TextHUDObject(HUDObject):
def __init__(self, text, pos, time, color=QColor(255,255,255), font=QFont("Verdana"), parent=None):
HUDObject.__init__(self,time,parent)
self.text = text
self.pos = pos
self.rect = None
self.color = color
self.font = font
#def __init__(self, text, rect, time, align=Qt.AlignCenter, color=QColor(255,255,255), font=QFont("Verdana"), parent=None):
# HUDObject.__init__(self,time,parent)
#self.text = text
#self.pos = None
#self.rect = rect
#self.align = align
#self.color = color
#self.font = font
def Paint(self, painter):
rem_time = (self.endtime-float(time.time()))*1000.0
if rem_time > 0:
self.color.setAlpha((rem_time/self.time)*255)
painter.setPen(QPen(self.color, Qt.SolidLine))
painter.setFont(self.font)
if self.pos is not None:
painter.drawText(self.pos, self.text)
if self.rect is not None:
painter.drawText(self.rect, self.align, self.text)
class RectTextHUDObject(HUDObject):
def __init__(self, text, rect, time, align=Qt.AlignCenter, color=QColor(255,255,255), font=QFont("Verdana"), parent=None):
HUDObject.__init__(self,time,parent)
self.text = text
self.rect = rect
self.align = align
self.color = color
self.font = font
def Paint(self, painter):
rem_time = (self.endtime-float(time.time()))*1000.0
if rem_time > 0:
self.color.setAlpha((rem_time/self.time)*255)
painter.setPen(QPen(self.color, Qt.SolidLine))
painter.setFont(self.font)
painter.drawText(self.rect, self.align, self.text)
class RectHUDObject(HUDObject):
def __init__(self, time, rect, fade=False, bg_color=QColor(255,255,255), border_color=QColor(255,255,255), parent=None):
HUDObject.__init__(self,time,parent)
self.rect = rect
self.fade = fade
self.bg_color = bg_color
self.border_color = border_color
def Paint(self, painter):
rem_time = (self.endtime-float(time.time()))*1000.0
if self.fade and rem_time > 0:
alpha = (rem_time/self.time)*255
self.bg_color.setAlpha(alpha)
self.border_color.setAlpha(alpha)
painter.setPen(self.border_color)
painter.setBrush(self.bg_color)
painter.drawRect(self.rect)
painter.setPen(QPen(self.border_color, Qt.SolidLine))
\ No newline at end of file
...@@ -5,11 +5,17 @@ from surface import Surface ...@@ -5,11 +5,17 @@ from surface import Surface
from protein import Protein from protein import Protein
from score_updater import ScoreUpdater from score_updater import ScoreUpdater
from config import Config from config import Config
from dokk import Dokk
from level_intro import LevelIntro
class Level: class Level:
def __init__(self, name): def __init__(self, name):
self.name_=name self.name_=name
self.Load() self.Load()
self.hud = None
dokk = Dokk()
self.li = LevelIntro(self)
def Load(self): def Load(self):
level_dir=os.path.join('datafiles', self.name_) level_dir=os.path.join('datafiles', self.name_)
self.config = Config(os.path.join(level_dir, 'level.ini')) self.config = Config(os.path.join(level_dir, 'level.ini'))
...@@ -28,6 +34,7 @@ class Level: ...@@ -28,6 +34,7 @@ class Level:
def RotateAxis(self, axis, angle): def RotateAxis(self, axis, angle):
self.ligand.RotateAxis(axis, angle) self.ligand.RotateAxis(axis, angle)
def SetPivot(self, x, y): def SetPivot(self, x, y):
v1=gfx.Scene().UnProject(geom.Vec3(x, y, 0.0)); v1=gfx.Scene().UnProject(geom.Vec3(x, y, 0.0));
v2=gfx.Scene().UnProject(geom.Vec3(x, y, 1.0)); v2=gfx.Scene().UnProject(geom.Vec3(x, y, 1.0));
...@@ -57,3 +64,14 @@ class Level: ...@@ -57,3 +64,14 @@ class Level:
gfx.Scene().SetCenter(self.surface.go.GetCenter()) gfx.Scene().SetCenter(self.surface.go.GetCenter())
gfx.Scene().RequestRedraw() gfx.Scene().RequestRedraw()
self.su.UpdateScores() self.su.UpdateScores()
def AddHUDObject(self, hud_object):
self.hud.Add(hud_object)
def Begin(self):
self.li.Start()
def Close(self):
self.surface.Close()
self.protein.Close()
self.ligand.Close()
\ No newline at end of file
from PyQt4 import QtCore, QtGui
from dokk import Dokk
from hud import TextHUDObject
from hud import RectHUDObject
from hud import RectTextHUDObject
class LevelIntro(QtCore.QObject):
def __init__(self, level, parent=None):
QtCore.QObject.__init__(self,parent)
self.level = level
text_count = int(level.config.Intro["TEXT_COUNT"])
self.text_list = list()
default_time = int(level.config.Intro["TEXTTIME"])
default_color = QtGui.QColor(int(level.config.Intro["TEXTCOLORRED"]),
int(level.config.Intro["TEXTCOLORGREEN"]),
int(level.config.Intro["TEXTCOLORBLUE"]))
default_size = int(level.config.Intro["TEXTSIZE"])
self.total_time = 0
for i in range(1,text_count+1):
try:
time = int(level.config.Intro["TEXTTIME%s"%i])
except:
time = default_time
try:
color = QtGui.QColor(int(level.config.Intro["TEXTCOLORRED%s"%i]),
int(level.config.Intro["TEXTCOLORGREEN%s"%i]),
int(level.config.Intro["TEXTCOLORBLUE%s"%i]))
except:
color = default_color
try:
size = int(level.config.Intro["TEXTSIZE%s"%i])
except:
size = default_size
self.text_list.append([level.config.Intro["TEXT%s"%i], time, color, size])
self.total_time += time
self.cur_text = 0
def Start(self):
dokk = Dokk()
font = QtGui.QFont("Verdana", 15);
rect = QtCore.QRect(QtCore.QPoint(60, 60), QtCore.QSize(dokk.gl_win.Width()-120, dokk.gl_win.Height()-120))
self.text = RectTextHUDObject(text="", rect=rect, time=0, font=font)
QtCore.QObject.connect(self.text, QtCore.SIGNAL("Finished()"), self.NextMessage)
self.bg = RectHUDObject(self.total_time,rect, bg_color=QtGui.QColor(128,128,128,200))
self.level.AddHUDObject(self.bg)
self.level.AddHUDObject(self.text)
def Reset(self):
self.cur_text = 0
def NextMessage(self):
if self.cur_text >=0 and self.cur_text < len(self.text_list):
dokk = Dokk()
self.text.text=self.text_list[self.cur_text][0]
self.text.time=self.text_list[self.cur_text][1]
self.text.color=self.text_list[self.cur_text][2]
self.text.font.setPointSize(self.text_list[self.cur_text][3])
self.text.Reset()
print (dokk.gl_win.Width()/2.0) - (len(self.text.text)*10)
else:
self.cur_text = -1
self.cur_text+=1
\ No newline at end of file
...@@ -50,7 +50,7 @@ class Ligand: ...@@ -50,7 +50,7 @@ class Ligand:
edi.ApplyTransform(trans) edi.ApplyTransform(trans)
self.go.UpdatePositions() self.go.UpdatePositions()
def SetTF(self, tf): def ApplyTF(self, tf):
edi=self.handle.RequestXCSEditor() edi=self.handle.RequestXCSEditor()
rot = geom.Mat4(tf.GetRot()) rot = geom.Mat4(tf.GetRot())
trans=geom.Mat4() trans=geom.Mat4()
...@@ -68,11 +68,6 @@ class Ligand: ...@@ -68,11 +68,6 @@ class Ligand:
edi.ApplyTransform(full_tf) edi.ApplyTransform(full_tf)
self.go.UpdatePositions() self.go.UpdatePositions()
def UpdateScores(self):
for a in self.b.view.atoms:
score=qa.ClashScore(a.handle, self.a.view)
a.SetGenericFloatProperty('clash', score)
def RMSDToSolution(self): def RMSDToSolution(self):
return alg.CalculateRMSD(self.handle.CreateFullView(), return alg.CalculateRMSD(self.handle.CreateFullView(),
self.the_solution_) self.the_solution_)
...@@ -96,6 +91,10 @@ class Ligand: ...@@ -96,6 +91,10 @@ class Ligand:
self.RotateAxis(geom.Vec3(0,0,1), float(self.config.start["ROTZ"])) self.RotateAxis(geom.Vec3(0,0,1), float(self.config.start["ROTZ"]))
self.go.UpdatePositions() self.go.UpdatePositions()
def Close(self):
gfx.Scene().Remove(self.go)
del(self.go)
def __IsInside(self, vec): def __IsInside(self, vec):
if vec[0]< self.box_max[0] and vec[0]> self.box_min[0] and \ if vec[0]< self.box_max[0] and vec[0]> self.box_min[0] and \
vec[1]< self.box_max[1] and vec[1]> self.box_min[1] and \ vec[1]< self.box_max[1] and vec[1]> self.box_min[1] and \
......
...@@ -6,3 +6,7 @@ class Protein: ...@@ -6,3 +6,7 @@ class Protein:
a.SetGenericFloatProperty('clash', 0.0) a.SetGenericFloatProperty('clash', 0.0)
self.prot_go_=gfx.Entity("Prot", self.handle) self.prot_go_=gfx.Entity("Prot", self.handle)
gfx.Scene().Add(self.prot_go_) gfx.Scene().Add(self.prot_go_)
def Close(self):
gfx.Scene().Remove(self.prot_go_)
del(self.prot_go_)
\ No newline at end of file
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
from hud import TextHUDObject
from ost import mol, geom, gfx, gui from ost import mol, geom, gfx, gui
DEFAULT_REFRESHRATE = 30 DEFAULT_REFRESHRATE = 30
...@@ -21,6 +21,10 @@ class SpnavInputDevice(QtCore.QObject): ...@@ -21,6 +21,10 @@ class SpnavInputDevice(QtCore.QObject):
self.score_scip = 0 self.score_scip = 0
def SetLevel(self, level): def SetLevel(self, level):
self.level=level self.level=level
self.trans_hud = TextHUDObject("Translation Enabled: %s"%self.trans, QtCore.QPoint(10,50), 0)
self.rot_hud = TextHUDObject("Rotation Enabled: %s"%self.rot, QtCore.QPoint(10,70), 0)
self.level.AddHUDObject(self.trans_hud)
self.level.AddHUDObject(self.rot_hud)
try: try:
self.refresh_rate_ = int(level.config.Score["FRAMESKIP"]) self.refresh_rate_ = int(level.config.Score["FRAMESKIP"])
except: except:
...@@ -39,28 +43,33 @@ class SpnavInputDevice(QtCore.QObject): ...@@ -39,28 +43,33 @@ class SpnavInputDevice(QtCore.QObject):
transf.ApplyXAxisRotation(rx/480.0) transf.ApplyXAxisRotation(rx/480.0)
transf.ApplyYAxisRotation(ry/480.0) transf.ApplyYAxisRotation(ry/480.0)
transf.ApplyZAxisRotation(rz/480.0) transf.ApplyZAxisRotation(rz/480.0)
ligand.SetTF(transf) ligand.ApplyTF(transf)
if self.score_scip >= self.refresh_rate_: if self.score_scip >= self.refresh_rate_:
self.level.UpdateScores() self.level.UpdateScores()
self.score_scip = 0 self.score_scip = 0
self.score_scip += 1 self.score_scip += 1
gfx.Scene().RequestRedraw() gfx.Scene().RequestRedraw()
self.gfx_win.update()
def ToggleInputMode(self, button): def ToggleInputMode(self, button):
print button print button
if button == 0: if button == 0:
self.trans = not self.trans self.trans = not self.trans
print "Translation Enabled:",self.trans self.trans_hud.text= "Translation Enabled: %s"%self.trans
self.trans_hud.time = 2000
self.trans_hud.Reset()
elif button == 1: elif button == 1:
self.rot = not self.rot self.rot = not self.rot
print "Rotation Enabled:",self.rot self.rot_hud.text= "Rotation Enabled: %s"%self.rot
self.rot_hud.time = 2000
self.rot_hud.Reset()
elif button == 2:
self.level.Begin()
elif button == 4:
Dokk().NextLevel()
elif button == 6: elif button == 6:
QtGui.QApplication.exit() QtGui.QApplication.exit()
elif button == 10: elif button == 10:
self.level.Reset() self.level.Reset()
self.gfx_win.update()
elif button == 11: elif button == 11:
self.level.Solve() self.level.Solve()
self.gfx_win.update()
from level import Level
from dokk import Dokk
dokk=Dokk()
dokk.SetLevel(Level('thrombin'))
dokk.Start(sys.argv)
...@@ -11,3 +11,7 @@ class Surface: ...@@ -11,3 +11,7 @@ class Surface:
grad.SetColorAt(0.7, gfx.Color(1.0, 1.0, 0.0)) grad.SetColorAt(0.7, gfx.Color(1.0, 1.0, 0.0))
grad.SetColorAt(1.0, gfx.Color(1.0, 0.0, 0.0)) grad.SetColorAt(1.0, gfx.Color(1.0, 0.0, 0.0))
self.go.ColorBy('clash', grad, 0.0, 10.0, mol.Prop.Level.ATOM) self.go.ColorBy('clash', grad, 0.0, 10.0, mol.Prop.Level.ATOM)
def Close(self):
gfx.Scene().Remove(self.go)
del(self.go)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment