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

Dokk (the docking game):

-Added name input screen for top ten

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@1944 5a81b35b-ba03-0410-adc8-b2c5c5119f08
parent beb3abee
No related branches found
No related tags found
No related merge requests found
......@@ -2,6 +2,7 @@
NAME: Thrombin
DIFFICULTY: Medium
TIME: 60000
SAVE: 1
[Intro]
TEXTTIME: 3000
......@@ -125,4 +126,6 @@ FRAMESKIP: 12
[Goal]
RMSD: 0
SAVE: True
[Name]
TEXT: Bitte geben Sie ihr Krzel ein:
[1]
score = 1.39103358587
name = STU
......@@ -2,6 +2,7 @@
NAME: Thrombin
DIFFICULTY: Medium
TIME: 60000
SAVE: 1
[Intro]
TEXTTIME: 3000
......@@ -70,23 +71,17 @@ TEXTCOLORRED: 255
TEXTCOLORGREEN: 0
TEXTCOLORBLUE: 0
TEXTSIZE: 16
TEXT_COUNT: 2
TEXT_COUNT: 1
TEXT1: Bravo, sie wurden $RANKer!
TEXTTIME1: 4000
TEXT1: Bravo, Sie wurden $RANKer!
RMSD: $RMSD
Zeitmalus: $TIMEMALUS
Endergebnis: $SCORE
TEXTTIME1: 2000
TEXTCOLORRED1: 0
TEXTCOLORGREEN1: 255
TEXTCOLORBLUE1: 64
TEXTSIZE1: 100
TEXT2: RMSD: $RMSD
Zeitmalus: $TIMEMALUS
Endergebnis: $SCORE
TEXTTIME2: 8000
TEXTCOLORRED2: 0
TEXTCOLORGREEN2: 255
TEXTCOLORBLUE2: 0
TEXTSIZE2: 100
TEXTSIZE1: 80
[Box]
XMIN:-25
......@@ -108,6 +103,5 @@ ROTZ:0.3
[Score]
FRAMESKIP: 5
[Goal]
RMSD: 0
SAVE: True
[Name]
TEXT: Bitte geben Sie ihr Krzel ein:
[1]
score = 0.5437265475591
name = STU
[3]
score = 1.00718728701
name = SAA
[2]
score = 1.0
name = 2AA
[5]
score = 1.51238689423
name = TOB
[4]
score = 1.08293996255
name = STU
[7]
score = 59.7783283631
name = STU
[6]
score = 2.04023006757
name = STU
......@@ -36,10 +36,12 @@ class HUDObject(QObject):
self.timer = QTimer()
self.timer.setSingleShot(True)
self.hud = None
self.endtime = None
QObject.connect(self.timer, SIGNAL("timeout()"), self.Timeout)
def Appended(self, hud):
self.hud = hud
if self.time >= 0:
self.timer.start(self.time)
self.endtime = float(time.time()+(self.time)/1000.0)
......@@ -64,6 +66,7 @@ class TextHUDObject(HUDObject):
self.font = font
def Paint(self, painter):
if self.endtime is not None:
rem_time = (self.endtime-float(time.time()))*1000.0
if rem_time > 0:
self.color.setAlpha((rem_time/self.time)*255)
......@@ -84,6 +87,7 @@ class RectTextHUDObject(HUDObject):
self.font = font
def Paint(self, painter):
if self.endtime is not None:
rem_time = (self.endtime-float(time.time()))*1000.0
if rem_time > 0:
self.color.setAlpha((rem_time/self.time)*255)
......@@ -100,8 +104,9 @@ class RectHUDObject(HUDObject):
self.border_color = border_color
def Paint(self, painter):
if self.fade:
rem_time = (self.endtime-float(time.time()))*1000.0
if self.fade and rem_time > 0:
if rem_time >0:
alpha = (rem_time/self.time)*255
self.bg_color.setAlpha(alpha)
self.border_color.setAlpha(alpha)
......
import dokk
from PyQt4 import QtCore, QtGui
from hud import *
from ost import gui
ALPHABET = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9']
LETTER_BREAK = 3000
NAME_BREAK = 8000
class NameEnter(QtCore.QObject):
def __init__(self, parent=None):
QtCore.QObject.__init__(self, parent)
self.spnav = gui.SpnavInput.GetQThread()
self.spnav.start()
QtCore.QObject.connect(self.spnav,QtCore.SIGNAL("deviceTransformed(int,int,int,int,int,int)"), self.InputChanged)
QtCore.QObject.connect(self.spnav,QtCore.SIGNAL("deviceButtonPressed(int)"), self.ToggleInputMode)
self.letter_pos = 0
self.al_len = len(ALPHABET)
self.letter_score = 0
self.name = "AAA"
self.name_pos = 0
self.name_len = len(self.name)
self.name_score = 0
self.int = 0
def InputChanged(self, tx,ty,tz,rx,ry,rz):
if(abs(tx) > abs(tz)):
self.name_score += tx
if(self.name_score > NAME_BREAK):
self.name_pos +=1
self.__SetNamePos()
elif(self.name_score < -NAME_BREAK):
self.name_pos -=1
self.__SetNamePos()
else:
self.letter_score += tz
if(self.letter_score > LETTER_BREAK):
self.letter_pos +=1
self.__SetLetterPos()
elif(self.letter_score < -LETTER_BREAK):
self.letter_pos -=1
self.__SetLetterPos()
def ToggleInputMode(self, button):
if button == 10:
self.emit(QtCore.SIGNAL("Finished()"))
def GetName(self):
return self.name
def __SetLetterPos(self):
self.letter_pos = self.letter_pos % self.al_len
self.__SetName()
self.letter_score = 0
def __SetNamePos(self):
self.name_pos = self.name_pos % self.name_len
for i in range(0,self.al_len):
if ALPHABET[i] == self.name[self.name_pos]:
self.letter_pos = i
self.name_score = 0
self.emit(QtCore.SIGNAL("Changed()"))
def __SetName(self):
self.name = self.name[0:self.name_pos] + ALPHABET[self.letter_pos] + self.name[self.name_pos+1:]
self.emit(QtCore.SIGNAL("Changed()"))
class HUDNameInput(QtCore.QObject):
def __init__(self, parent=None):
QtCore.QObject.__init__(self, parent)
self.ne = NameEnter()
self.connect(self.ne,QtCore.SIGNAL("Changed()"),self.Update)
self.connect(self.ne,QtCore.SIGNAL("Finished()"),self.Finished)
self.huds = list()
rect = QtCore.QRect(QtCore.QPoint(60, 60), QtCore.QSize(dokk.Dokk().gl_win.Width()-120, 220))
self.bg = RectHUDObject(-1,rect, bg_color=QtGui.QColor(128,128,128,200))
dokk.Dokk().gl_win.AddHUDObject(self.bg)
self.hud_text = RectTextHUDObject(dokk.Dokk().GetLevel().config.Name["TEXT"], rect=rect, time=-1,font = QtGui.QFont("Verdana",30))
dokk.Dokk().gl_win.AddHUDObject(self.hud_text)
font = QtGui.QFont("Courier", 30)
xpos = (dokk.Dokk().gl_win.Width()/2) - ((len(self.ne.GetName())*30)/2)
for i in range(0,len(self.ne.GetName())):
hud_obj = TextHUDObject(self.ne.GetName()[i], QtCore.QPoint(xpos,250), -1,font = font)
if self.ne.name_pos == i:
hud_obj.color = QtGui.QColor(255,255,0)
else:
hud_obj.color = QtGui.QColor(255,255,255)
self.huds.append(hud_obj)
dokk.Dokk().gl_win.AddHUDObject(hud_obj)
xpos += 30
def GetName(self):
return self.ne.GetName()
def Update(self):
for i in range(0,len(self.ne.GetName())):
self.huds[i].text = self.ne.GetName()[i]
if self.ne.name_pos == i:
self.huds[i].color = QtGui.QColor(255,255,0)
else:
self.huds[i].color = QtGui.QColor(255,255,255)
def Finished(self):
for hud in self.huds:
dokk.Dokk().gl_win.RemoveHUDObject(hud)
dokk.Dokk().gl_win.RemoveHUDObject(self.hud_text)
dokk.Dokk().gl_win.RemoveHUDObject(self.bg)
self.emit(QtCore.SIGNAL("Finished()"))
\ 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