diff --git a/pocket_friends/elements/surface.py b/pocket_friends/elements/surface.py index 8749834..cc3a3e0 100644 --- a/pocket_friends/elements/surface.py +++ b/pocket_friends/elements/surface.py @@ -30,6 +30,7 @@ class GameSurface(pygame.Surface): self.game_fps = game_fps self._input_handler = InputHandler(self._clock) self.additional_args = {} + self.dev_override = False self.bg = pygame.image.load(self.resource_dir + '/images/bg.png').convert_alpha() self.sprites = pygame.sprite.Group() @@ -45,3 +46,7 @@ class GameSurface(pygame.Surface): self.sprites.draw(self) self._input_handler.update() + if self._input_handler.dev_found: + self.next_surface = 'dev_menu' + self.dev_override = True + self.running = False diff --git a/pocket_friends/game.py b/pocket_friends/game.py index 5ba9ba1..5b1cd15 100644 --- a/pocket_friends/game.py +++ b/pocket_friends/game.py @@ -4,6 +4,7 @@ import pocket_friends import importlib valid_surfaces = [ + 'dev_menu', 'title', 'egg_select', 'selection_info', @@ -13,7 +14,8 @@ valid_surfaces = [ # Add all the surface modules to a dictionary for easy switching surface_modules = {'dev_menu': importlib.import_module('pocket_friends.development.{0}'.format('dev_menu'))} for module in valid_surfaces: - surface_modules[module] = importlib.import_module('pocket_friends.surfaces.{0}'.format(module)) + if module != 'dev_menu': + surface_modules[module] = importlib.import_module('pocket_friends.surfaces.{0}'.format(module)) starting_surface = 'title' # FPS for the game to run at. @@ -62,9 +64,13 @@ def start_game(resolution=240): window.blit(frame, frame.get_rect()) if not surface.running: - next_surface = surface.next_surface + if surface.dev_override: + next_surface = 'dev_menu' + else: + next_surface = surface.next_surface additional_args = surface.additional_args if next_surface not in valid_surfaces: + print(next) next_surface = 'error_screen' surface = surface_modules.get(next_surface).Surface((game_res, game_res), resources_dir, game_fps, **additional_args) diff --git a/pocket_friends/io/input_handler.py b/pocket_friends/io/input_handler.py index e04f7f0..6d13e8c 100644 --- a/pocket_friends/io/input_handler.py +++ b/pocket_friends/io/input_handler.py @@ -1,5 +1,5 @@ import pygame - +from collections import deque class InputHandler: """ @@ -24,6 +24,12 @@ class InputHandler: self.clock = pygame_clock self.tick_check = tick_check self.last_input_tick = 0 + self.dev_check = deque() + self.dev_code = deque() + for button in [pygame.K_DOWN, pygame.K_DOWN, pygame.K_UP, pygame.K_UP, pygame.K_DOWN, pygame.K_LEFT, + pygame.K_RIGHT, pygame.K_LEFT, pygame.K_a]: + self.dev_code.append(button) + self.dev_found = False def create_event(self, pressed_button): """ @@ -37,6 +43,9 @@ class InputHandler: if pygame.time.get_ticks() - self.last_input_tick > self.clock.get_time() * 2: pygame.event.post(pygame.event.Event(pygame.KEYDOWN, {'key': pressed_button})) pygame.event.post(pygame.event.Event(pygame.KEYUP, {'key': pressed_button})) + self.dev_check.append(pressed_button) + if len(self.dev_check) > len(self.dev_code): + self.dev_check.popleft() else: pygame.event.post(pygame.event.Event(pygame.KEYDOWN, {'key': pressed_button})) pygame.event.post(pygame.event.Event(pygame.KEYUP, {'key': pressed_button})) @@ -70,3 +79,5 @@ class InputHandler: def update(self): """Run either the GPIO handler or the keyboard handler to check for input and create events.""" self.handle_keyboard() + if self.dev_code == self.dev_check: + self.dev_found = True