From 53ab1dae11f4ac61cb59ee4a66c7b1824e3a5a7d Mon Sep 17 00:00:00 2001 From: EKNr1 Date: Thu, 9 Nov 2023 17:20:51 +0100 Subject: [PATCH] Finished main menu. --- cowyeet.py | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 91 insertions(+), 7 deletions(-) diff --git a/cowyeet.py b/cowyeet.py index 05bf64f..03ef351 100644 --- a/cowyeet.py +++ b/cowyeet.py @@ -15,6 +15,7 @@ SAVE_SETTINGS_ON_EXIT = True # some initializing pygame.init() screen = pygame.display.set_mode(DEFAULT_WINDOW_SIZE) +pygame.display.set_caption("Cowyeet 2.0") if os.path.isfile("settings.txt"): settings = Settings("settings.txt") @@ -34,20 +35,44 @@ screen.blit(loading_text, (400 - loading_text.get_width() / 2, 300 - loading_tex pygame.display.update() -# colors (color names by https://www.color-blindness.com/color-name-hue/) -nero = (40, 40, 40) +# variables +nero = (40, 40, 40) # colors (color names by https://www.color-blindness.com/color-name-hue/) dim_gray = (100, 100, 100) white_smoke = (240, 240, 240) +buttons = [] # misc +text_buttons = [] +active_buttons = [] +last_frame_mouse_pressed = False +page = "main_menu" + # pygame objects -clock = pygame.time.Clock() +clock = pygame.time.Clock() # misc +mouse = pygame.mouse -bigger_default_font = pygame.font.SysFont("ubuntu", 32) +bigger_default_font = pygame.font.SysFont("ubuntu", 32) # fonts + + +# coordinate calculations +def center_x(width: int): + return screen.get_width() / 2 - width / 2 + + +def center_y(height: int): + return screen.get_height() / 2 - height / 2 + + +def center(size): + width, height = size + + return center_x(width), center_y(height) # buttons -start_button = pg.TextButton("Start", (400, 300), lambda: print("bla"), text_color=white_smoke, bg_color=dim_gray, font=bigger_default_font) +start_button = pg.TextButton("Start", center, screen, lambda: page_switch("game"), text_color=white_smoke, bg_color=dim_gray, font=bigger_default_font) +buttons.append(start_button) +text_buttons.append(start_button) def close(): @@ -55,14 +80,66 @@ def close(): running = False +def window_size_reload(new_size): + for button in text_buttons: + button.update() + + +def main_menu_page(): + start_button.blit(screen) + + +def page_selector(): + if page == "main_menu": + main_menu_page() + + +def page_switch(new_page: str=None): + global active_buttons + global page + + if not new_page is None: + page = new_page + + if page == "main_menu": + active_buttons = [start_button] + + else: + print("Error: Page not found.") + + # for button in buttons: + # button.active = False + # + # for button in active_buttons: + # button.active = True + + def get_events(): + global last_frame_mouse_pressed + for event in pygame.event.get(): if event.type == pygame.QUIT: close() return + if event.type == pygame.MOUSEBUTTONDOWN: + pressed = mouse.get_pressed() + pos = mouse.get_pos() + + if not last_frame_mouse_pressed: + for button in active_buttons: + button.check(pos, pressed) + + last_frame_mouse_pressed = True + + if event.type == pygame.VIDEORESIZE: + + window_size_reload(event.size) + def loop(): + global last_frame_mouse_pressed + screen.fill(nero) get_events() @@ -70,8 +147,11 @@ def loop(): if not running: return - start_button.blit(screen) - start_button.check(pygame.mouse.get_pos(), [True]) + pressed = mouse.get_pressed() + if not pressed[0] and not pressed[1] and not pressed[2]: + last_frame_mouse_pressed = False + + page_selector() pygame.display.update() @@ -81,6 +161,10 @@ def loop(): # loading completed screen = pygame.display.set_mode(settings["win_size"], flags=pygame.RESIZABLE) +screen.fill(nero) +pygame.display.update() + +page_switch() running = True