Ajout du menu principal

This commit is contained in:
Yannis 2024-01-07 18:29:18 +01:00
parent cc77957b31
commit fe2c07b5ac
Signed by: yannis
SSH key fingerprint: SHA256:Bz8K8QiTYUudf8MlthTM9MCLfgiYf/U1md3V9g9Wo14
3 changed files with 34 additions and 17 deletions

View file

@ -68,23 +68,28 @@ class MenuManager:
"""Ajoute le menu donné au manager de menu avec le nom donné.""" """Ajoute le menu donné au manager de menu avec le nom donné."""
self.menus[name] = menu self.menus[name] = menu
# On itère dans tous les bouttons pour leur ajouter une interaction
for btn in menu.widgets:
if isinstance(btn, Button):
width = btn.base_image.get_width()/self.engine.renderer.window_size[0]
height = btn.base_image.get_height()/self.engine.renderer.window_size[1]
area_x = btn.x
area_y = btn.y
if btn.centered:
area_x -= width/2
area_y -= height/2
self.engine.event_handler.register_button_area((area_x, area_y, width, height), btn.callback, btn.area_name,
btn.is_window_relative, btn.set_hover_state)
def show(self, name: str): def show(self, name: str):
"""Affiche le menu au nom donné.""" """Affiche le menu au nom donné."""
self.active_menu = self.menus[name] self.active_menu = self.menus[name]
# On itère dans tous les bouttons pour leur ajouter une interaction
for btn in self.active_menu.widgets:
if isinstance(btn, Button):
width = btn.base_image.get_width() / self.engine.renderer.window_size[0]
height = btn.base_image.get_height() / self.engine.renderer.window_size[1]
area_x = btn.x
area_y = btn.y
if btn.centered:
area_x -= width / 2
area_y -= height / 2
self.engine.event_handler.register_button_area((area_x, area_y, width, height), btn.callback,
btn.area_name,
btn.is_window_relative, btn.set_hover_state)
def hide(self): def hide(self):
"""Affiche le menu actuelement à l'écran.""" """Affiche le menu actuelement à l'écran."""
# On itère dans tous les bouttons pour retirer l'interaction
for btn in self.active_menu.widgets:
if isinstance(btn, Button):
self.engine.event_handler.remove_button_area(btn.area_name)
self.active_menu = None self.active_menu = None

View file

@ -209,8 +209,16 @@ class Renderer:
btn_image = widget.hover_image btn_image = widget.hover_image
else: else:
btn_image = widget.base_image btn_image = widget.base_image
if widget.is_window_relative == 0:
btn_image = transform.scale(btn_image, (btn_image.get_width()*window_size[0]/self.window_size[0], btn_image = transform.scale(btn_image, (btn_image.get_width()*window_size[0]/self.window_size[0],
btn_image.get_height()*window_size[0]/self.window_size[0])) btn_image.get_height()*window_size[0]/self.window_size[0]))
elif widget.is_window_relative == 1:
btn_image = transform.scale(btn_image, (btn_image.get_width()*window_size[1]/self.window_size[1],
btn_image.get_height()*window_size[1]/self.window_size[1]))
elif widget.is_window_relative == 2:
btn_image = transform.scale(btn_image, (btn_image.get_width()*window_size[0]/self.window_size[0],
btn_image.get_height()*window_size[1]/self.window_size[1]))
# On affiche l'image du boutton # On affiche l'image du boutton
if widget.centered: if widget.centered:

View file

@ -21,7 +21,7 @@ class Game(Engine):
self.DEBUG_MODE = True self.DEBUG_MODE = True
self.game_state = GameState.NORMAL self.game_state = GameState.MAIN_MENU
self.event_sheduler.register_area((64, 64, 32, 32), lambda _: self.dialogs_manager.start_dialog("test"), ["player"], False, True) self.event_sheduler.register_area((64, 64, 32, 32), lambda _: self.dialogs_manager.start_dialog("test"), ["player"], False, True)
@ -31,6 +31,10 @@ class Game(Engine):
self.setup_main_menu() self.setup_main_menu()
def start_game(self):
self.game_state = GameState.NORMAL
self.menu_manager.hide()
def setup_main_menu(self): def setup_main_menu(self):
"""Crée les éléments du menu principal.""" """Crée les éléments du menu principal."""
menu = Menu() menu = Menu()
@ -39,7 +43,7 @@ class Game(Engine):
base_image = pygame.image.load("assets/textures/GUI/button_1.png").convert_alpha() base_image = pygame.image.load("assets/textures/GUI/button_1.png").convert_alpha()
hover_image = pygame.image.load("assets/textures/GUI/button_2.png").convert_alpha() hover_image = pygame.image.load("assets/textures/GUI/button_2.png").convert_alpha()
menu.add_widget(Button(0.5, 0.3, "boutton", 0.1, (0, 255, 0), lambda : print("play"), base_image, hover_image, True, 0)) menu.add_widget(Button(0.5, 0.3, "play", 0.08, (0, 255, 0), self.start_game, base_image, hover_image, True, 0))
self.menu_manager.register_menu(menu, "main") self.menu_manager.register_menu(menu, "main")
self.menu_manager.show("main") self.menu_manager.show("main")