class ComicStrip(View): def __init__(self, level, image_id): super(ComicStrip, self).__init__() self.add_layer( Layer(position=(0, 0), size=Widget.get_resolution()).fill('ffffff'), 0 ) (res_width,res_height) = Widget.get_resolution() self._res_width = res_width self._res_height = res_height self._level = level self._interface = Interface('interfaces.comicstrip') self._height = self.loader().get_raw_resource(image_id).get_height() self._increment = 100 self._interface.get('comicstrip').style('background-image', image_id) self.add_layer(self._interface, 100) self.listen_key('return') self.listen_key('down') self.listen_key('up') def on_down_pressed(self): top = int(self._interface.get('comicstrip').style('top')) if self._res_height - int(self._interface.get('comicstrip').style('top')) <= self._height: self._interface.get('comicstrip').style('top', str(top-self._increment)) def on_down_released(self): pass def on_up_pressed(self): top = int(self._interface.get('comicstrip').style('top')) if int(self._interface.get('comicstrip').style('top')) < 0: self._interface.get('comicstrip').style('top', str(top+self._increment)) def on_up_released(self): pass def on_return_pressed(self): from endgame import EndGame if self._level: self._navigator.set_current_view(self._level) else: self._navigator.set_current_view(EndGame()) def on_return_released(self): pass
class LoadingScreen(View): def __init__(self): super(LoadingScreen, self).__init__() self.loader().load_package('loading') self.loader().load_package('interfaces') resolution = Widget.get_resolution() res_width, res_height = resolution self.add_layer( Layer(position=(0, 0), size=resolution).fill('191919'), 0 ) self._animation = AnimatedLayer( position=(res_width / 2 - 120, res_height / 2.3), size=(275, 50) ) self._animation.set_animation('loading.tinyrat.walk') self.add_layer(self._animation, 1) self.listen('quit') self._interface = Interface('interfaces.loadingscreen') self.add_layer(self._interface, 100) self._queue = Queue.Queue() self._loading_task = LoadingTask(self.loader(), self._queue) self._loading_task.start() def on_frame(self, delta): super(LoadingScreen, self).on_frame(delta) message = None try: message = self._queue.get_nowait() except Queue.Empty: pass if message: if message == True: self._navigator.set_current_view(MainMenu()) else: self._interface.get('message').attr('text', message) def on_quit(self, event): sys.exit()
class MainMenu(View): CHOICES = ['play', 'quit'] def __init__(self): super(MainMenu, self).__init__() self.add_layer( Layer(position=(0, 0), size=Widget.get_resolution()).fill('191919'), 0 ) self._interface = Interface('interfaces.mainmenu') JukeBox().play('music.intro') self.add_layer(self._interface, 100) self._choice = 0 self._up_tap = False self._down_tap = False self.listen('quit') self.listen_key('up') self.listen_key('down') self.listen_key('return') def deselect_all(self): for choice in self.CHOICES: item = self._interface.get(choice) item.style('color', '#469638') def update_menu(self): self.deselect_all() item = self._interface.get(self.CHOICES[self._choice]) item.style('color', '#becbcd') cursor = self._interface.get('cursor') top = 35 + self._choice * 20 cursor.style('top', '%d%%' % top) def tap_down(self): self._choice += 1 if self._choice >= len(self.CHOICES): self._choice = 0 self.update_menu() def tap_up(self): self._choice -= 1 if self._choice < 0: self._choice = len(self.CHOICES) - 1 self.update_menu() def on_up_pressed(self): if not self._up_tap: self.tap_up() self._up_tap = True def on_up_released(self): self._up_tap = False def on_down_pressed(self): if not self._down_tap: self.tap_down() self._down_tap = True def on_down_released(self): self._down_tap = False def on_quit(self, event): sys.exit() def play(self): self._navigator.set_current_view( ComicStrip(Lab1(Widget.get_resolution(), self._navigator), 'static.comic_strip_1') ) def on_return_pressed(self): { 'play': self.play, 'quit': sys.exit }[self.CHOICES[self._choice]]() def on_return_released(self): pass