From 8a34ed7c01567577db8946783b787c03725ac97b Mon Sep 17 00:00:00 2001 From: Nicholas Dyer Date: Sun, 14 May 2023 19:06:50 -0400 Subject: [PATCH] created dev menu selector and test functions --- pocket_friends/development/dev.py | 9 +++++ pocket_friends/development/dev_menu.py | 27 +++++++++++++- pocket_friends/development/sprites.py | 34 ++++++++++++++++++ pocket_friends/game.py | 3 +- .../images/{ => dev_menu}/dev_bg.png | Bin .../resources/images/dev_menu/selector.png | Bin 0 -> 839 bytes 6 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 pocket_friends/development/dev.py create mode 100644 pocket_friends/development/sprites.py rename pocket_friends/resources/images/{ => dev_menu}/dev_bg.png (100%) create mode 100644 pocket_friends/resources/images/dev_menu/selector.png diff --git a/pocket_friends/development/dev.py b/pocket_friends/development/dev.py new file mode 100644 index 0000000..5f25714 --- /dev/null +++ b/pocket_friends/development/dev.py @@ -0,0 +1,9 @@ +import os + + +def reboot_system(): + os.system('echo TEST REBOOT') + + +def shutdown_system(): + os.system('echo TEST SHUTDOWN') diff --git a/pocket_friends/development/dev_menu.py b/pocket_friends/development/dev_menu.py index 2c10f0c..9b5424e 100644 --- a/pocket_friends/development/dev_menu.py +++ b/pocket_friends/development/dev_menu.py @@ -1,5 +1,12 @@ import pygame from pocket_friends.elements import surface +from pocket_friends.development.sprites import FunctionSelector +import pocket_friends.development.dev as dev + +dev_functions = { + 'Restart': 'reboot_system', + 'Shutdown': 'shutdown_system' +} class Surface(surface.GameSurface): @@ -9,18 +16,36 @@ class Surface(surface.GameSurface): self.game_fps = game_fps self.delay = 1 self.font = pygame.font.Font(resources_dir + '/fonts/5Pts5.ttf', 10) - self.bg = pygame.image.load(self.resource_dir + '/images/dev_bg.png').convert_alpha() + self.bg = pygame.image.load(self.resource_dir + '/images/dev_menu/dev_bg.png').convert_alpha() + + functions = [] + for key in dev_functions.keys(): + functions.append(key) + + self.function_selector = FunctionSelector(resources_dir, game_res, functions) + + def execute(self): + + executing_function = getattr(dev, dev_functions.get(self.function_selector.get_function())) + executing_function() def update(self): self.preprocess() text = self.font.render('f: {0}'.format(self.frames), False, (128, 128, 128)) self.blit(text, (3, 68)) + self.function_selector.draw(self) self.frames += 1 self.frames %= self.game_fps for event in pygame.event.get(): if event.type == pygame.KEYDOWN: + if event.key == pygame.K_UP: + self.function_selector.scroll_up() + if event.key == pygame.K_DOWN: + self.function_selector.scroll_down() + if event.key == pygame.K_a: + self.execute() if event.key == pygame.K_b: self.running = False diff --git a/pocket_friends/development/sprites.py b/pocket_friends/development/sprites.py new file mode 100644 index 0000000..f172a57 --- /dev/null +++ b/pocket_friends/development/sprites.py @@ -0,0 +1,34 @@ +import pygame + + +class FunctionSelector: + + def __init__(self, resources_dir, game_res, functions): + self.font = pygame.font.Font(resources_dir + '/fonts/5Pts5.ttf', 10) + self.functions = functions + self.max_lines = 6 # Max number of lines to be shown on screen at a time. + self.offset = 0 + self.game_res = game_res + + self.selected = 0 + self.max_index = len(self.functions) - 1 + self.selector = pygame.image.load(resources_dir + '/images/dev_menu/selector.png').convert_alpha() + + def draw(self, surface): + for i in range(self.max_index + 1): + text = self.font.render(self.functions[i], False, (0, 0, 0)) + surface.blit(text, (8, (-3 + (i * 6)))) + surface.blit(self.selector, (0, (self.selected * 6))) + + def scroll_down(self): + self.selected += 1 + if self.selected > self.max_index: + self.selected = self.max_index + + def scroll_up(self): + self.selected -= 1 + if self.selected < 0: + self.selected = 0 + + def get_function(self): + return self.functions[self.selected] diff --git a/pocket_friends/game.py b/pocket_friends/game.py index d0a6041..5ba9ba1 100644 --- a/pocket_friends/game.py +++ b/pocket_friends/game.py @@ -3,7 +3,6 @@ import os import pocket_friends import importlib - valid_surfaces = [ 'title', 'egg_select', @@ -66,7 +65,7 @@ def start_game(resolution=240): next_surface = surface.next_surface additional_args = surface.additional_args if next_surface not in valid_surfaces: - next_surface = 'dev_menu' + next_surface = 'error_screen' surface = surface_modules.get(next_surface).Surface((game_res, game_res), resources_dir, game_fps, **additional_args) pygame.display.flip() diff --git a/pocket_friends/resources/images/dev_bg.png b/pocket_friends/resources/images/dev_menu/dev_bg.png similarity index 100% rename from pocket_friends/resources/images/dev_bg.png rename to pocket_friends/resources/images/dev_menu/dev_bg.png diff --git a/pocket_friends/resources/images/dev_menu/selector.png b/pocket_friends/resources/images/dev_menu/selector.png new file mode 100644 index 0000000000000000000000000000000000000000..f3f7a629684e977bc7b6d45246c854f7537f29e2 GIT binary patch literal 839 zcmV-N1GxN&P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=KHvfCgGhTmC5mw;|aEC+*`=?=R5{y4Fdo|A{3 zwlAFt8V5$v1@sALlJ+0pXZnUgrD#&~D7BP~p;aq4EFwR~exGa3bFCE*-F0+XQF{Jj zY?lH3;&84QvtX8+^2#SGkUTk*Yo=FvvJZN>((o@kiZc*Hp7c|)<>wKPXU-85XHLsn zn-CYuCdreO1~r{4Y&2utT(1X{lKLPy?ur0Wz&JP4Ld2uAQYB%O=Dm6w6$ z?5jkC)6=~zurKC?fmRh|eZmSrXr6s!M}bfIH~@6RkF7>amH8i1vPnZoF#2DSSc zg4XNA7BdiIB@p*T01eHHSq@U=MJ_F7xiW5rF?MMS&Y(pM1a&92Nf)~Zxlh~@?){%~ z<7aYdq5Bu)(n9xw+-GhtsEzf0@9Q3Byx7(?Tt&@->j#598V4-+YjgUl!#mJB&^ypO z&^ypO(0>tV;+GTufYMLqDI26l&shlo000JJOGiWi{{a60|De66lK=n!32;bRa{vG? zBLDy{BLR4&KXw2B00(qQO+^Ri1r8Q48r3Cfk^lez8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b031m~K~xCWV_+Z>{D(1^a7i+vtHfv2f4p|!1OVSX1^z9A RbM62D002ovPDHLkV1l-uZ*c$s literal 0 HcmV?d00001