menu_manager #23
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
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]))
|
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.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:
|
||||||
|
|
|
@ -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")
|
||||||
|
|
Loading…
Reference in a new issue