ya2 · news · projects · code · about

functional tests: enforcing results
[pmachines.git] / game / scene.py
index b12ff0405b3f352a8f562b2b00a1d5fdc7c19791..a2e4e45e248a845068f5fb238d6e000f8ae4ff7a 100644 (file)
@@ -1,6 +1,7 @@
 from os.path import exists
 from os import makedirs
 from glob import glob
+from logging import debug
 from importlib import import_module
 from inspect import isclass
 from panda3d.core import AmbientLight, DirectionalLight, Point3, Texture, \
@@ -26,6 +27,8 @@ class Scene(DirectObject):
         self._dbg_items = dbg_items
         self._reload_cb = reload_cb
         self._scenes = scenes
+        self._enforce_res = ''
+        self.accept('enforce_res', self.enforce_res)
         self._set_camera()
         self._cursor = MouseCursor(
             'assets/images/buttons/arrowUpLeft.dds', (.04, 1, .04), (.5, .5, .5, 1),
@@ -104,7 +107,12 @@ class Scene(DirectObject):
             del self._success_txt
         self.__right_btn['state'] = NORMAL
 
+    def enforce_res(self, val):
+        self._enforce_res = val
+        debug('enforce res: ' + val)
+
     def destroy(self):
+        self.ignore('enforce_res')
         self._unset_gui()
         self._unset_lights()
         self._unset_input()
@@ -326,9 +334,9 @@ class Scene(DirectObject):
         if self._dbg_items:
             self._update_info(items_hit[0] if items_hit else None)
         if self._win_condition():
-            self._set_win()
+            self._set_fail() if self._enforce_res == 'fail' else self._set_win()
         elif self._state == 'playing' and self._fail_condition():
-            self._set_fail()
+            self._set_win() if self._enforce_res == 'win' else self._set_fail()
         if any(itm._overlapping for itm in self.items):
             self._cursor.cursor_img.img.set_color(.9, .1, .1, 1)
         else: