from importlib import import_module
from inspect import isclass
from sys import platform, exit
+from platform import node
from logging import info, debug
from os.path import exists
from os import makedirs
self.__fps_lst.pop(0)
self.__fps_lst += [globalClock.average_frame_rate]
if len(self.__fps_lst) == 4:
- fps_threshold = 55 if cpu_count() >= 4 else 25
- assert any(fps > fps_threshold for fps in self.__fps_lst), 'low fps %s' % self.__fps_lst
+ fps_threshold = 55 if cpu_count() >= 4 and node() != 'localhost.localdomain' else 10 # i.e. it is the builder machine
+ assert not all(fps < fps_threshold for fps in self.__fps_lst), 'low fps %s' % self.__fps_lst
return task.again
def run(self):
#print(self.__scenes_done)
#self.__scenes_done = self.__scenes_done[0]
if self.__scenes_done:
- self.__scenes_done = self.__scenes_done.strip("'")
+ if not isinstance(self.__scenes_done, list): # empty list: []
+ self.__scenes_done = self.__scenes_done.strip("'")
if self.__scenes_done:
- self.__scenes_done = json.loads(self.__scenes_done)
+ if not isinstance(self.__scenes_done, list):
+ self.__scenes_done = json.loads(self.__scenes_done)
def save_scene(self, name, version):
- scenes = [scene for scene in self.__scenes_done if scene[0] != name]
+ scenes = []
+ if not isinstance(self.__scenes_done, list): # empty list: []
+ scenes = [scene for scene in self.__scenes_done if scene[0] != name]
self.__scenes_done = scenes + [(name, version)]
self.__opt_file['save']['scenes_done'] = "'%s'" % json.dumps(self.__scenes_done)
self.__opt_file.store()
@classmethod
def is_done(cls, scene_name):
+ if not cls.scenes_done or len(cls.scenes_done) == 1 and not cls.scenes_done[0]:
+ return False
return bool([(name, version) for name, version in cls.scenes_done if scene_name == name and cls.version(scene_name) == version])
def _instr_txt(self):
self._define_test_items()
for itm in self._test_items:
self._pos_mgr.register(itm.name, P3dGfxMgr.pos2d_p2d(itm))
- taskMgr.doMethodLater(.01, frame_after, 'frame after')
+ taskMgr.doMethodLater(1.4, frame_after, 'frame after') # after the intro sequence
def _define_test_items(self):
if not self.__json_name in self.__class__.json_files:
#+CATEGORY: pmachines
#+TAGS: bug(b) calendar(c) waiting(w)
-* DOING editor
+* DOING do build; editor
- [ ] edit level (button)
- [ ] global level editor (title, description)
- [ ] version is the hash of the json file
+- [ ] restore original level
+- [ ] popup if exit with an unsaved scene
- [ ] list of scenes
- [ ] item editor
- [ ] new item
- [ ] new scene
- [ ] editing of test_items in the editor for functional tests
- [ ] define functional tests
+* BACKLOG tooltips for buttons
* BACKLOG teeter-tooter with constraints (real teeter tooter)
* BACKLOG magnet, road cone, bucket
* BACKLOG actions: rewind, prev, next
user_options = bdist_apps.user_options + [
('cores', None, '#cores'),
- ('no_windows=', None, "don't build for windows"),
- ('no_linux=', None, "don't build for linux")]
+ ('nowindows=', None, "don't build for windows"), # letters, numbers and hypens only
+ ('nolinux=', None, "don't build for linux")]
def initialize_options(self):
super().initialize_options()
- self.no_windows, self.no_linux = None, None
+ self.nowindows, self.nolinux = None, None
def run(self):
assets_creation_message = dedent('''NOTE: please be sure that you've already created the assets with:
system(command)
def __eventually_build_appimage(self):
- if not self.no_linux:
+ if not self.nolinux:
appimage_builder = AppImageBuilder(self)
filename_branch = {'master': 'alpha', 'rc': 'rc', 'stable': ''}
branch = filename_branch[_branch()]