From 8bf56af29452f9d2224512a7e99b624e59b497b3 Mon Sep 17 00:00:00 2001
From: stefan <stefan@5a81b35b-ba03-0410-adc8-b2c5c5119f08>
Date: Tue, 13 Apr 2010 15:31:32 +0000
Subject: [PATCH] dokk (the docking game):  - added new texts to levels  -
 added pause cam

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@1983 5a81b35b-ba03-0410-adc8-b2c5c5119f08
---
 examples/dokk/config.py                       |   3 +-
 examples/dokk/datafiles/dengue/level.ini      |  86 +++++++++------
 examples/dokk/datafiles/glyoxalase/level.ini  |  75 +++++++------
 examples/dokk/datafiles/retinol/level.ini     |  64 ++++++-----
 examples/dokk/datafiles/thrombin/level.ini    | 104 ++++++++----------
 examples/dokk/datafiles/tutorial_1/level.ini  | 100 ++++++++++-------
 .../dokk/datafiles/tutorial_1/top_ten.ini     |   6 +-
 examples/dokk/datafiles/tutorial_2/level.ini  |  85 +++++++-------
 .../dokk/datafiles/tutorial_2/top_ten.ini     |   4 +-
 examples/dokk/glwin.py                        |   8 +-
 examples/dokk/level.py                        |   7 +-
 examples/dokk/level_info.py                   |  24 +++-
 examples/dokk/ligand.py                       |   4 +-
 13 files changed, 320 insertions(+), 250 deletions(-)

diff --git a/examples/dokk/config.py b/examples/dokk/config.py
index 7fc526da3..7fb7a3efa 100644
--- a/examples/dokk/config.py
+++ b/examples/dokk/config.py
@@ -54,7 +54,8 @@ class TopTen():
   def IsTopTen(self,score):
     self._config.UpdateValues()
     try:
-      if score < float(self._config.str(10)["SCORE"]):
+      print score, float(self._config.Get(str(10))["SCORE"])
+      if score < float(self._config.Get(str(10))["SCORE"]):
         return True
     except AttributeError:
       return True
diff --git a/examples/dokk/datafiles/dengue/level.ini b/examples/dokk/datafiles/dengue/level.ini
index e4e0f4dd8..2d05f85af 100644
--- a/examples/dokk/datafiles/dengue/level.ini
+++ b/examples/dokk/datafiles/dengue/level.ini
@@ -11,35 +11,51 @@ TEXTCOLORRED: 255
 TEXTCOLORGREEN: 255
 TEXTCOLORBLUE: 255
 TEXTSIZE: 16
-TEXT_COUNT: 4
+TEXT_COUNT: 8
+TEXT1: So die �bungsphase ist vorbei..
+  Bei den kommenden Levels m�ssen sie den Liganden 
+  m�glichst gut am Protein andocken.
+TEXTTIME1: 300
 
-TEXT1: 3
-TEXTTIME1: 150
-TEXTCOLORRED1: 255
-TEXTCOLORGREEN1: 0
-TEXTCOLORBLUE1: 0
-TEXTSIZE1: 40
+TEXT2: Sie k�nnen die aktuelle Score links oben ablesen. Wenn
+  Sie mit der Score zufrieden sind, k�nnen Sie "FIT" dr�cken 
+  um das Level zu beenden. 
+TEXTTIME2: 800
 
-TEXT2: 2
-TEXTTIME2: 150
-TEXTCOLORRED2: 255
-TEXTCOLORGREEN2: 165
-TEXTCOLORBLUE2: 0
-TEXTSIZE2: 70
-
-TEXT3: 1
-TEXTTIME3: 150
-TEXTCOLORRED3: 255
-TEXTCOLORGREEN3: 255
-TEXTCOLORBLUE3: 0
-TEXTSIZE3: 100
-
-TEXT4: LOS!
-TEXTTIME4: 200
-TEXTCOLORRED4: 0
-TEXTCOLORGREEN4: 255
-TEXTCOLORBLUE4: 0
-TEXTSIZE4: 130
+TEXT3: Je schneller Sie ein Level absolvieren, umso kleiner wird der Zeitmalus
+  der zu Ihrer score addiert wird.
+TEXTTIME3: 800
+
+TEXT4: Sind Sie bereit? Jetzt wird es ernst.
+TEXTTIME4: 600
+
+TEXT5: 3
+TEXTTIME5: 150
+TEXTCOLORRED5: 255
+TEXTCOLORGREEN5: 0
+TEXTCOLORBLUE5: 0
+TEXTSIZE5: 40
+
+TEXT6: 2
+TEXTTIME6: 150
+TEXTCOLORRED6: 255
+TEXTCOLORGREEN6: 165
+TEXTCOLORBLUE6: 0
+TEXTSIZE6: 70
+
+TEXT7: 1
+TEXTTIME7: 150
+TEXTCOLORRED7: 255
+TEXTCOLORGREEN7: 255
+TEXTCOLORBLUE7: 0
+TEXTSIZE7: 100
+
+TEXT8: LOS!
+TEXTTIME8: 150
+TEXTCOLORRED8: 0
+TEXTCOLORGREEN8: 255
+TEXTCOLORBLUE8: 0
+TEXTSIZE8: 130
 
 [NTT]
 TEXTTIME: 200
@@ -55,16 +71,16 @@ TEXTTIME1: 4000
 TEXTCOLORRED1: 255
 TEXTCOLORGREEN1: 64
 TEXTCOLORBLUE1: 0
-TEXTSIZE1: 50
+TEXTSIZE1: 40
 
 TEXT2: RMSD:           $RMSD
        Zeitmalus:     $TIMEMALUS
        Endergebnis: $SCORE
-TEXTTIME2: 8000
-TEXTCOLORRED2: 0
-TEXTCOLORGREEN2: 255
+TEXTTIME2: -1
+TEXTCOLORRED2: 255
+TEXTCOLORGREEN2: 64
 TEXTCOLORBLUE2: 0
-TEXTSIZE2: 100
+TEXTSIZE2: 40
 
 [TT]
 TEXTTIME: 200
@@ -78,11 +94,11 @@ TEXT1: Bravo, Sie wurden $RANKer!
        RMSD:           $RMSD
        Zeitmalus:     $TIMEMALUS
        Endergebnis: $SCORE
-TEXTTIME1: 2000
+TEXTTIME1: 4000
 TEXTCOLORRED1: 0
 TEXTCOLORGREEN1: 255
 TEXTCOLORBLUE1: 64
-TEXTSIZE1: 80
+TEXTSIZE1: 40
 
 [Box]
 XMIN:-1000
@@ -105,4 +121,4 @@ ROTZ:0.3
 FRAMESKIP: 10
 
 [Name]
-TEXT: Bitte geben Sie ihr K�rzel ein:
+TEXT: Bitte geben Sie ihr K�rzel ein:
diff --git a/examples/dokk/datafiles/glyoxalase/level.ini b/examples/dokk/datafiles/glyoxalase/level.ini
index b4e0f5e07..59e69589d 100644
--- a/examples/dokk/datafiles/glyoxalase/level.ini
+++ b/examples/dokk/datafiles/glyoxalase/level.ini
@@ -11,35 +11,47 @@ TEXTCOLORRED: 255
 TEXTCOLORGREEN: 255
 TEXTCOLORBLUE: 255
 TEXTSIZE: 16
-TEXT_COUNT: 4
+TEXT_COUNT: 7
+TEXT1: Gesunder Optimismus ist gut..
+TEXTTIME1: 300
 
-TEXT1: 3
-TEXTTIME1: 150
-TEXTCOLORRED1: 255
-TEXTCOLORGREEN1: 0
-TEXTCOLORBLUE1: 0
-TEXTSIZE1: 40
+TEXT2: F�r dieses Level brauchen Sie jedoch mehr
+TEXTTIME4: 600
 
-TEXT2: 2
-TEXTTIME2: 150
-TEXTCOLORRED2: 255
-TEXTCOLORGREEN2: 165
-TEXTCOLORBLUE2: 0
-TEXTSIZE2: 70
-
-TEXT3: 1
+TEXT3: 3
 TEXTTIME3: 150
 TEXTCOLORRED3: 255
-TEXTCOLORGREEN3: 255
+TEXTCOLORGREEN3: 0
 TEXTCOLORBLUE3: 0
-TEXTSIZE3: 100
+TEXTSIZE3: 40
 
-TEXT4: LOS!
-TEXTTIME4: 200
-TEXTCOLORRED4: 0
-TEXTCOLORGREEN4: 255
+TEXT4: 2
+TEXTTIME4: 150
+TEXTCOLORRED4: 255
+TEXTCOLORGREEN4: 0
 TEXTCOLORBLUE4: 0
-TEXTSIZE4: 130
+TEXTSIZE4: 70
+
+TEXT5: 1
+TEXTTIME5: 150
+TEXTCOLORRED5: 255
+TEXTCOLORGREEN5: 0
+TEXTCOLORBLUE5: 0
+TEXTSIZE5: 100
+
+TEXT6: Viel Gl�ck!
+TEXTTIME6: 150
+TEXTCOLORRED6: 255
+TEXTCOLORGREEN6: 0
+TEXTCOLORBLUE6: 0
+TEXTSIZE6: 100
+
+TEXT7: (Sie werden es brauchen)
+TEXTTIME7: 150
+TEXTCOLORRED7: 255
+TEXTCOLORGREEN7: 0
+TEXTCOLORBLUE7: 0
+TEXTSIZE7: 80
 
 [NTT]
 TEXTTIME: 200
@@ -55,16 +67,16 @@ TEXTTIME1: 4000
 TEXTCOLORRED1: 255
 TEXTCOLORGREEN1: 64
 TEXTCOLORBLUE1: 0
-TEXTSIZE1: 50
+TEXTSIZE1: 40
 
 TEXT2: RMSD:           $RMSD
        Zeitmalus:     $TIMEMALUS
        Endergebnis: $SCORE
-TEXTTIME2: 8000
-TEXTCOLORRED2: 0
-TEXTCOLORGREEN2: 255
+TEXTTIME2: -1
+TEXTCOLORRED2: 255
+TEXTCOLORGREEN2: 64
 TEXTCOLORBLUE2: 0
-TEXTSIZE2: 100
+TEXTSIZE2: 40
 
 [TT]
 TEXTTIME: 200
@@ -74,15 +86,16 @@ TEXTCOLORBLUE: 0
 TEXTSIZE: 16
 TEXT_COUNT: 1
 
-TEXT1: Bravo, Sie wurden $RANKer! 
+TEXT1: Wow, Chuck Norris ist stolz auf Sie.
+       Sie wurden $RANKer! 
        RMSD:           $RMSD
        Zeitmalus:     $TIMEMALUS
        Endergebnis: $SCORE
-TEXTTIME1: 2000
+TEXTTIME1: 4000
 TEXTCOLORRED1: 0
 TEXTCOLORGREEN1: 255
 TEXTCOLORBLUE1: 64
-TEXTSIZE1: 80
+TEXTSIZE1: 40
 
 [Box]
 XMIN:-1000
@@ -105,4 +118,4 @@ ROTZ:0.3
 FRAMESKIP: 10
 
 [Name]
-TEXT: Bitte geben Sie ihr K�rzel ein:
+TEXT: Bitte geben Sie ihr K�rzel ein:
diff --git a/examples/dokk/datafiles/retinol/level.ini b/examples/dokk/datafiles/retinol/level.ini
index a506f6bf9..4d0091d4d 100644
--- a/examples/dokk/datafiles/retinol/level.ini
+++ b/examples/dokk/datafiles/retinol/level.ini
@@ -11,35 +11,41 @@ TEXTCOLORRED: 255
 TEXTCOLORGREEN: 255
 TEXTCOLORBLUE: 255
 TEXTSIZE: 16
-TEXT_COUNT: 4
+TEXT_COUNT: 6
+TEXT1: Super sie haben es bis hier hin geschafft.
+  Jetzt wird es richtig schwer.
+TEXTTIME1: 300
 
-TEXT1: 3
-TEXTTIME1: 150
-TEXTCOLORRED1: 255
-TEXTCOLORGREEN1: 0
-TEXTCOLORBLUE1: 0
-TEXTSIZE1: 40
-
-TEXT2: 2
-TEXTTIME2: 150
-TEXTCOLORRED2: 255
-TEXTCOLORGREEN2: 165
-TEXTCOLORBLUE2: 0
-TEXTSIZE2: 70
+TEXT2: Ich sehe Sie sind bereit...
+TEXTTIME4: 600
 
-TEXT3: 1
+TEXT3: 3
 TEXTTIME3: 150
 TEXTCOLORRED3: 255
-TEXTCOLORGREEN3: 255
+TEXTCOLORGREEN3: 0
 TEXTCOLORBLUE3: 0
-TEXTSIZE3: 100
+TEXTSIZE3: 40
 
-TEXT4: LOS!
-TEXTTIME4: 200
-TEXTCOLORRED4: 0
-TEXTCOLORGREEN4: 255
+TEXT4: 2
+TEXTTIME4: 150
+TEXTCOLORRED4: 255
+TEXTCOLORGREEN4: 165
 TEXTCOLORBLUE4: 0
-TEXTSIZE4: 130
+TEXTSIZE4: 70
+
+TEXT5: 1
+TEXTTIME5: 150
+TEXTCOLORRED5: 255
+TEXTCOLORGREEN5: 255
+TEXTCOLORBLUE5: 0
+TEXTSIZE5: 100
+
+TEXT6: LOS!
+TEXTTIME6: 150
+TEXTCOLORRED6: 0
+TEXTCOLORGREEN6: 255
+TEXTCOLORBLUE6: 0
+TEXTSIZE6: 130
 
 [NTT]
 TEXTTIME: 200
@@ -55,16 +61,16 @@ TEXTTIME1: 4000
 TEXTCOLORRED1: 255
 TEXTCOLORGREEN1: 64
 TEXTCOLORBLUE1: 0
-TEXTSIZE1: 50
+TEXTSIZE1: 40
 
 TEXT2: RMSD:           $RMSD
        Zeitmalus:     $TIMEMALUS
        Endergebnis: $SCORE
-TEXTTIME2: 8000
-TEXTCOLORRED2: 0
-TEXTCOLORGREEN2: 255
+TEXTTIME2: -1
+TEXTCOLORRED2: 255
+TEXTCOLORGREEN2: 64
 TEXTCOLORBLUE2: 0
-TEXTSIZE2: 100
+TEXTSIZE2: 40
 
 [TT]
 TEXTTIME: 200
@@ -78,11 +84,11 @@ TEXT1: Bravo, Sie wurden $RANKer!
        RMSD:           $RMSD
        Zeitmalus:     $TIMEMALUS
        Endergebnis: $SCORE
-TEXTTIME1: 2000
+TEXTTIME1: 4000
 TEXTCOLORRED1: 0
 TEXTCOLORGREEN1: 255
 TEXTCOLORBLUE1: 64
-TEXTSIZE1: 80
+TEXTSIZE1: 40
 
 [Box]
 XMIN:-1000
diff --git a/examples/dokk/datafiles/thrombin/level.ini b/examples/dokk/datafiles/thrombin/level.ini
index 79c419f16..60f3527c5 100644
--- a/examples/dokk/datafiles/thrombin/level.ini
+++ b/examples/dokk/datafiles/thrombin/level.ini
@@ -11,50 +11,40 @@ 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 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.
-TEXTTIME4: 3000
-
-TEXT5: So nun kann es los gehen.
-TEXTTIME5: 1000
-
-TEXT6: 3
-TEXTTIME6: 1500
-TEXTCOLORRED6: 255
-TEXTCOLORGREEN6: 0
+TEXT_COUNT: 6
+TEXT1: Ich denke Sie haben das Spielprinzip verstanden.
+TEXTTIME1: 300
+
+TEXT2: Gut, sind Sie bereit? Und schon gehts los.
+TEXTTIME4: 600
+
+TEXT3: 3
+TEXTTIME3: 150
+TEXTCOLORRED3: 255
+TEXTCOLORGREEN3: 0
+TEXTCOLORBLUE3: 0
+TEXTSIZE3: 40
+
+TEXT4: 2
+TEXTTIME4: 150
+TEXTCOLORRED4: 255
+TEXTCOLORGREEN4: 165
+TEXTCOLORBLUE4: 0
+TEXTSIZE4: 70
+
+TEXT5: 1
+TEXTTIME5: 150
+TEXTCOLORRED5: 255
+TEXTCOLORGREEN5: 255
+TEXTCOLORBLUE5: 0
+TEXTSIZE5: 100
+
+TEXT6: LOS!
+TEXTTIME6: 150
+TEXTCOLORRED6: 0
+TEXTCOLORGREEN6: 255
 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
+TEXTSIZE6: 130
 
 [NTT]
 TEXTTIME: 200
@@ -70,16 +60,16 @@ TEXTTIME1: 4000
 TEXTCOLORRED1: 255
 TEXTCOLORGREEN1: 64
 TEXTCOLORBLUE1: 0
-TEXTSIZE1: 50
+TEXTSIZE1: 40
 
 TEXT2: RMSD:           $RMSD
        Zeitmalus:     $TIMEMALUS
        Endergebnis: $SCORE
-TEXTTIME2: 8000
-TEXTCOLORRED2: 0
-TEXTCOLORGREEN2: 255
+TEXTTIME2: -1
+TEXTCOLORRED2: 255
+TEXTCOLORGREEN2: 64
 TEXTCOLORBLUE2: 0
-TEXTSIZE2: 100
+TEXTSIZE2: 40
 
 [TT]
 TEXTTIME: 200
@@ -87,23 +77,17 @@ TEXTCOLORRED: 255
 TEXTCOLORGREEN: 0
 TEXTCOLORBLUE: 0
 TEXTSIZE: 16
-TEXT_COUNT: 2
+TEXT_COUNT: 1
 
 TEXT1: Bravo, Sie wurden $RANKer! 
+       RMSD:           $RMSD
+       Zeitmalus:     $TIMEMALUS
+       Endergebnis: $SCORE
 TEXTTIME1: 4000
 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: 40
 
 [Box]
 XMIN:-25
@@ -129,4 +113,4 @@ FRAMESKIP: 10
 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/tutorial_1/level.ini b/examples/dokk/datafiles/tutorial_1/level.ini
index 49c99aa85..8d11da552 100644
--- a/examples/dokk/datafiles/tutorial_1/level.ini
+++ b/examples/dokk/datafiles/tutorial_1/level.ini
@@ -11,35 +11,56 @@ TEXTCOLORRED: 255
 TEXTCOLORGREEN: 255
 TEXTCOLORBLUE: 255
 TEXTSIZE: 16
-TEXT_COUNT: 4
+TEXT_COUNT: 10
+TEXT1: Hallo und herzlich wilkommen zu dokk
+  dem Docking-Spiel
+TEXTTIME1: 300
 
-TEXT1: 3
-TEXTTIME1: 150
-TEXTCOLORRED1: 255
-TEXTCOLORGREEN1: 0
-TEXTCOLORBLUE1: 0
-TEXTSIZE1: 40
-
-TEXT2: 2
-TEXTTIME2: 150
-TEXTCOLORRED2: 255
-TEXTCOLORGREEN2: 165
-TEXTCOLORBLUE2: 0
-TEXTSIZE2: 70
-
-TEXT3: 1
-TEXTTIME3: 150
-TEXTCOLORRED3: 255
-TEXTCOLORGREEN3: 255
-TEXTCOLORBLUE3: 0
-TEXTSIZE3: 100
-
-TEXT4: LOS!
-TEXTTIME4: 200
-TEXTCOLORRED4: 0
-TEXTCOLORGREEN4: 255
-TEXTCOLORBLUE4: 0
-TEXTSIZE4: 130
+TEXT2: Ihre Aufgabe ist es, den Liganden (gr�n),
+  in die richtige Position auf dem Protein (weiss) zu bringen
+TEXTTIME2: 800
+
+TEXT3: Dieses erste Level ist ein �bungslevel. Sie lernen hier, wie man die 
+  Position des Liganden ver�ndern kann.
+TEXTTIME3: 800
+
+TEXT4: Sie k�nnen mit dem 3D-Input Device den Liganden verschieben,
+  indem Sie den Joystick in die entsprechende Richtung bewegen.
+TEXTTIME4: 800
+ 
+TEXT5: Falls Fragen bestehen, k�nnen Sie sich gerne an eine unserer Fachkr�fte wenden.
+TEXTTIME5: 500
+
+TEXT6: Sind Sie bereit? Es geht los.
+TEXTTIME6: 600
+
+TEXT7: 3
+TEXTTIME7: 150
+TEXTCOLORRED7: 255
+TEXTCOLORGREEN7: 0
+TEXTCOLORBLUE7: 0
+TEXTSIZE7: 40
+
+TEXT8: 2
+TEXTTIME8: 150
+TEXTCOLORRED8: 255
+TEXTCOLORGREEN8: 165
+TEXTCOLORBLUE8: 0
+TEXTSIZE8: 70
+
+TEXT9: 1
+TEXTTIME9: 150
+TEXTCOLORRED9: 255
+TEXTCOLORGREEN9: 255
+TEXTCOLORBLUE9: 0
+TEXTSIZE9: 100
+
+TEXT10: LOS!
+TEXTTIME10: 150
+TEXTCOLORRED10: 0
+TEXTCOLORGREEN10: 255
+TEXTCOLORBLUE10: 0
+TEXTSIZE10: 130
 
 [NTT]
 TEXTTIME: 200
@@ -50,11 +71,12 @@ TEXTSIZE: 16
 TEXT_COUNT: 1
 
 TEXT1: Leider haben Sie es nicht geschafft! 
-TEXTTIME1: 4000
+  Sie k�nnen erneut veruschen, dieses Level zu absolvieren 
+TEXTTIME1: -1
 TEXTCOLORRED1: 255
 TEXTCOLORGREEN1: 64
 TEXTCOLORBLUE1: 0
-TEXTSIZE1: 50
+TEXTSIZE1: 30
 
 [TT]
 TEXTTIME: 200
@@ -65,20 +87,20 @@ TEXTSIZE: 16
 TEXT_COUNT: 1
 
 TEXT1: Bravo, Sie sie haben es geschafft! 
-        Sie d�rfen das n�chste Level bestreiten
-TEXTTIME1: 2000
+  Sie d�rfen das n�chste Level bestreiten
+TEXTTIME1: -1
 TEXTCOLORRED1: 0
 TEXTCOLORGREEN1: 255
 TEXTCOLORBLUE1: 64
-TEXTSIZE1: 65
+TEXTSIZE1: 30
 
 [Box]
-XMIN:-1000
-XMAX:1000
-YMIN:-1000
-YMAX:1000
-ZMIN:-1000
-ZMAX:1000
+XMIN:-50
+XMAX:50
+YMIN:-100
+YMAX:100
+ZMIN:-100
+ZMAX:100
 
 [Start]
 POSX:10.0
diff --git a/examples/dokk/datafiles/tutorial_1/top_ten.ini b/examples/dokk/datafiles/tutorial_1/top_ten.ini
index 7a8928728..7e4e61eff 100644
--- a/examples/dokk/datafiles/tutorial_1/top_ten.ini
+++ b/examples/dokk/datafiles/tutorial_1/top_ten.ini
@@ -1,3 +1,3 @@
-[1]
-score = 99.0
-name = N/A
+[10]
+score = 1.0
+name = N/A
\ No newline at end of file
diff --git a/examples/dokk/datafiles/tutorial_2/level.ini b/examples/dokk/datafiles/tutorial_2/level.ini
index 49c99aa85..193557e00 100644
--- a/examples/dokk/datafiles/tutorial_2/level.ini
+++ b/examples/dokk/datafiles/tutorial_2/level.ini
@@ -1,7 +1,7 @@
 [Level]
-NAME: Tutorial 1
-DIFFICULTY: Basic Training
-TIME: 60000
+NAME: Tutorial 2
+DIFFICULTY: Advanced Training
+TIME: 6000
 SAVE: 0
 GOAL: 1.0
 
@@ -11,35 +11,45 @@ TEXTCOLORRED: 255
 TEXTCOLORGREEN: 255
 TEXTCOLORBLUE: 255
 TEXTSIZE: 16
-TEXT_COUNT: 4
+TEXT_COUNT: 7
+TEXT1: Sehr gut Sie haben das Spielprinzip verstanden
+  und k�nnen den Liganden bereits verschieben
+TEXTTIME1: 300
 
-TEXT1: 3
-TEXTTIME1: 150
-TEXTCOLORRED1: 255
-TEXTCOLORGREEN1: 0
-TEXTCOLORBLUE1: 0
-TEXTSIZE1: 40
-
-TEXT2: 2
-TEXTTIME2: 150
-TEXTCOLORRED2: 255
-TEXTCOLORGREEN2: 165
-TEXTCOLORBLUE2: 0
-TEXTSIZE2: 70
-
-TEXT3: 1
-TEXTTIME3: 150
-TEXTCOLORRED3: 255
-TEXTCOLORGREEN3: 255
-TEXTCOLORBLUE3: 0
-TEXTSIZE3: 100
-
-TEXT4: LOS!
-TEXTTIME4: 200
-TEXTCOLORRED4: 0
-TEXTCOLORGREEN4: 255
+TEXT2: In diesem �bungslevel lernen Sie, wie der Ligand rotiert werden kann.
+  Dazu k�nnen Sie den Joystick drehen oder ziehen und bewegen.
+TEXTTIME2: 800
+
+TEXT3: Sind Sie bereit? Es wird ein wenig schwerer.
+TEXTTIME3: 600
+
+TEXT4: 3
+TEXTTIME4: 150
+TEXTCOLORRED4: 255
+TEXTCOLORGREEN4: 0
 TEXTCOLORBLUE4: 0
-TEXTSIZE4: 130
+TEXTSIZE4: 40
+
+TEXT5: 2
+TEXTTIME5: 150
+TEXTCOLORRED5: 255
+TEXTCOLORGREEN5: 165
+TEXTCOLORBLUE5: 0
+TEXTSIZE5: 70
+
+TEXT6: 1
+TEXTTIME6: 150
+TEXTCOLORRED6: 255
+TEXTCOLORGREEN6: 255
+TEXTCOLORBLUE6: 0
+TEXTSIZE6: 100
+
+TEXT7: LOS!
+TEXTTIME7: 150
+TEXTCOLORRED7: 0
+TEXTCOLORGREEN7: 255
+TEXTCOLORBLUE7: 0
+TEXTSIZE7: 130
 
 [NTT]
 TEXTTIME: 200
@@ -49,12 +59,13 @@ TEXTCOLORBLUE: 0
 TEXTSIZE: 16
 TEXT_COUNT: 1
 
-TEXT1: Leider haben Sie es nicht geschafft! 
-TEXTTIME1: 4000
+TEXT1: Es scheint mir, dass Sie dieses Level 
+  gerne wiederholen m�chten.. 
+TEXTTIME1: -1
 TEXTCOLORRED1: 255
 TEXTCOLORGREEN1: 64
 TEXTCOLORBLUE1: 0
-TEXTSIZE1: 50
+TEXTSIZE1: 20
 
 [TT]
 TEXTTIME: 200
@@ -64,13 +75,13 @@ TEXTCOLORBLUE: 0
 TEXTSIZE: 16
 TEXT_COUNT: 1
 
-TEXT1: Bravo, Sie sie haben es geschafft! 
-        Sie d�rfen das n�chste Level bestreiten
-TEXTTIME1: 2000
+TEXT1: Bravo, Sie sie haben die �bungslevels erfolgreich durch gespielt! 
+        Sie d�rfen nun die "echten" Levels bestreiten..
+TEXTTIME1: -1
 TEXTCOLORRED1: 0
 TEXTCOLORGREEN1: 255
 TEXTCOLORBLUE1: 64
-TEXTSIZE1: 65
+TEXTSIZE1: 20
 
 [Box]
 XMIN:-1000
diff --git a/examples/dokk/datafiles/tutorial_2/top_ten.ini b/examples/dokk/datafiles/tutorial_2/top_ten.ini
index 7a8928728..87465536d 100644
--- a/examples/dokk/datafiles/tutorial_2/top_ten.ini
+++ b/examples/dokk/datafiles/tutorial_2/top_ten.ini
@@ -1,3 +1,3 @@
-[1]
-score = 99.0
+[10]
+score = 1.0
 name = N/A
diff --git a/examples/dokk/glwin.py b/examples/dokk/glwin.py
index b703874ff..43dace440 100644
--- a/examples/dokk/glwin.py
+++ b/examples/dokk/glwin.py
@@ -3,11 +3,9 @@ from ost import gfx
 from PyQt4.QtGui import *
 from PyQt4.QtCore import *
 from PyQt4.QtOpenGL import *
-import OpenGL.GL as ogl
 
 from spnav_input import SpnavInputDevice
-from hud import HUD
-from hud import HUDObject
+from hud import HUD, HUDObject
 
 
 UPDATE_INTERVAL = 20
@@ -35,11 +33,7 @@ class DokkGLCanvas(QGLWidget):
     gfx.Scene().InitGL()
 
   def paintGL(self):
-    ogl.glMatrixMode(ogl.GL_MODELVIEW);
-    ogl.glPushMatrix();
     gfx.Scene().RenderGL()
-    ogl.glMatrixMode(ogl.GL_MODELVIEW);
-    ogl.glPopMatrix();
 
   def SetLevel(self, level):
     self.spnav_input.SetLevel(level)
diff --git a/examples/dokk/level.py b/examples/dokk/level.py
index edbede190..ef1998a79 100644
--- a/examples/dokk/level.py
+++ b/examples/dokk/level.py
@@ -84,7 +84,10 @@ class Level(QtCore.QObject):
     return rmsd + self.GetTimeMalus()
   
   def GetRank(self):
-    return self.topten.GetRank(self.GetScore())
+    score = self.GetScore()
+    if self.topten.IsTopTen(self.GetScore()):
+      return self.topten.GetRank(self.GetScore())
+    return -1
   
   def GetTTDiff(self):
     return self.topten.GetDiff(self.GetScore())
@@ -143,7 +146,7 @@ class Level(QtCore.QObject):
     self.stop_time = time.time()
     Dokk().gl_win.SetLockInput(True)
     if self._started:
-      if self.GetRank() > 0:
+      if self.GetRank() > 0 or self.GetRMSD()<= float(self.config.Level["GOAL"]):
         self.hud_level_end_tt.Start()
       else:
         self.hud_level_end_ntt.Start()
diff --git a/examples/dokk/level_info.py b/examples/dokk/level_info.py
index 759147ef1..97cb2776f 100644
--- a/examples/dokk/level_info.py
+++ b/examples/dokk/level_info.py
@@ -1,7 +1,7 @@
 import dokk
 from PyQt4 import QtCore, QtGui
 from hud import *
-from ost import gui
+from ost import mol, geom
 
 class LevelInfo(QtCore.QObject):
   def __init__(self, level, parent=None):
@@ -16,6 +16,7 @@ class LevelInfo(QtCore.QObject):
     else:
       self.highscore = None
     self.level_info = LevelDetails(level.config.Level["NAME"],level.config.Level["DIFFICULTY"])
+    self.demo_cam = DemoCam(self)
     self.connect(level,QtCore.SIGNAL("Started()"),self.Finish)
     self.connect(level,QtCore.SIGNAL("Stopped()"),self.Start)
     self.connect(level,QtCore.SIGNAL("Closed()"),self.Finish)
@@ -30,6 +31,7 @@ class LevelInfo(QtCore.QObject):
     self.start = False
     if self.highscore:
       self.highscore.Finish()
+    self.demo_cam.Finish()
     self.level_info.Finish()
     
   def Timeout(self):
@@ -37,6 +39,7 @@ class LevelInfo(QtCore.QObject):
       if self.highscore:
         self.highscore.Start()
       self.level_info.Start()
+      self.demo_cam.Start()
    
       
 class HighScore(QtCore.QObject):
@@ -93,4 +96,21 @@ class LevelDetails(QtCore.QObject):
   def Finish(self):
     dokk.Dokk().gl_win.RemoveHUDObject(self.hud_diffi_text)
     dokk.Dokk().gl_win.RemoveHUDObject(self.hud_name_text)
-    dokk.Dokk().gl_win.RemoveHUDObject(self.hud_bg)
\ No newline at end of file
+    dokk.Dokk().gl_win.RemoveHUDObject(self.hud_bg)
+    
+
+class DemoCam(QtCore.QTimer):
+  def __init__(self, parent=None):
+    QtCore.QTimer.__init__(self)
+    QtCore.QObject.connect(self, QtCore.SIGNAL("timeout()"), self.OnTimer)
+        
+  def Start(self):
+    dokk.Dokk().GetLevel().Solve()
+    self.start(10)
+     
+  def Finish(self):
+    self.stop()
+  
+  def OnTimer(self):
+    gfx.Scene().Apply(gfx.InputEvent(gfx.INPUT_DEVICE_MOUSE, gfx.INPUT_COMMAND_ROTY, 0.25), False)      
+      
\ No newline at end of file
diff --git a/examples/dokk/ligand.py b/examples/dokk/ligand.py
index e970f560d..f6b5feb26 100644
--- a/examples/dokk/ligand.py
+++ b/examples/dokk/ligand.py
@@ -4,7 +4,7 @@ from ost import mol
 class Ligand:
   def __init__(self, ligand, config=None):
     self.handle=ligand
-    self.the_solution_=ligand.Copy().CreateFullView()
+    self.solution=ligand.Copy().CreateFullView()
     self.go=gfx.Entity("Ligand", gfx.CPK, self.handle)
     self.go.SetColor(gfx.GREEN, 'ele=C')
     self.go.cpk_options.SetSphereDetail(7)
@@ -71,7 +71,7 @@ class Ligand:
 
   def RMSDToSolution(self):
     return alg.CalculateRMSD(self.handle.CreateFullView(), 
-                             self.the_solution_)
+                             self.solution)
 
   def Solve(self):
     edi=self.handle.RequestXCSEditor()
-- 
GitLab