sliders #32

Merged
yannis merged 19 commits from sliders into main 2024-01-12 22:29:33 +00:00
2 changed files with 45 additions and 3 deletions
Showing only changes of commit 8ab8eaba24 - Show all commits

View file

@ -7,7 +7,7 @@ from pygame.locals import RESIZABLE, SRCALPHA, FULLSCREEN
import src.engine.engine as engine
from src.engine.animation import Anim
from src.engine.enums import GameState
from src.engine.menu_manager import Label, Button
from src.engine.menu_manager import Label, Button, Slider
class Renderer:
@ -129,9 +129,10 @@ class Renderer:
self.window.blit(font.SysFont("Arial", 20).render(f"Track: {self.engine.sound_manager.music_current_song}",
True, (255, 0, 0)), (0, 120))
window_size = display.get_window_size()
# On rend maintenant toutes les zones de détection de la fenêtre
for area in self.engine.event_handler.buttons_area:
window_size = display.get_window_size()
if area[2] == 0:
draw.rect(self.window, (255, 255, 0),
(area[0][0] * window_size[0], area[0][1] * window_size[0],
@ -148,6 +149,24 @@ class Renderer:
draw.rect(self.window, (255, 255, 0),
area[0], width=1)
for area in self.engine.event_handler.sliders_area:
print(area)
if area[1] == 0:
draw.rect(self.window, (0, 255, 20),
(area[0][0] * window_size[0], area[0][1] * window_size[0],
area[0][2] * window_size[0], area[0][3] * window_size[0]), width=1)
elif area[1] == 1:
draw.rect(self.window, (0, 255, 20),
(area[0][0] * window_size[1], area[0][1] * window_size[1],
area[0][2] * window_size[1], area[0][3] * window_size[1]), width=1)
elif area[1] == 2:
draw.rect(self.window, (0, 255, 20),
(area[0][0] * window_size[0], area[0][1] * window_size[1],
area[0][2] * window_size[0], area[0][3] * window_size[1]), width=1)
else:
draw.rect(self.window, (0, 255, 20),
area[0], width=1)
# Rendu présent dans tous les types de jeu
self.render_dialogs_box()
@ -236,6 +255,26 @@ class Renderer:
self.window.blit(btn_image, (x, y))
self.window.blit(rendered_text, (x, y))
elif isinstance(widget, Slider):
if widget.hovered:
btn_image = widget.hover_image
else:
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.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
self.window.blit(btn_image, (x+widget.value*widget.width, y))
def render_dialogs_box(self):
"""Rend la boite de dialogue lorsqu'un dialogue est lancé."""

View file

@ -4,7 +4,7 @@ from src.custom_AI import WolfAI
from src.engine.animation import Anim
from src.engine.engine import Engine
from src.engine.enums import GameState
from src.engine.menu_manager import Menu, Label, Button
from src.engine.menu_manager import Menu, Label, Button, Slider
class Game(Engine):
@ -44,8 +44,11 @@ class Game(Engine):
hover_image = pygame.image.load("assets/textures/GUI/button_2.png").convert_alpha()
menu.add_widget(Button(0.5, 0.3, "play", 0.08, (0, 0, 0), self.start_game, base_image, hover_image, True, 0))
menu.add_widget(Slider(40, 200, base_image, hover_image))
self.menu_manager.register_menu(menu, "main")
self.event_handler.register_slider_area([10, 10, 50, 50])
self.menu_manager.show("main")
def create_player_entity(self):