Finished main menu.

This commit is contained in:
The Wobbler 2023-11-09 17:20:51 +01:00
parent 237b619eb7
commit 53ab1dae11

View file

@ -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