From 9044ff23cffb257db24d0cb97c19b4f982afb38c Mon Sep 17 00:00:00 2001 From: ThisBirchWood Date: Tue, 18 Mar 2025 18:50:39 +0100 Subject: [PATCH] ADD: Slider that acts as seek for match --- models/game.py | 1 + models/renderer.py | 27 +++++++++++++-------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/models/game.py b/models/game.py index c709bc0..debd140 100644 --- a/models/game.py +++ b/models/game.py @@ -28,6 +28,7 @@ class Game: for event in pygame.event.get(): if event.type == pygame.QUIT: self.running = False + self.renderer.slider.handle_event(event) def update(self): """Updates game objects.""" diff --git a/models/renderer.py b/models/renderer.py index 8d1a9bb..75b2d0c 100644 --- a/models/renderer.py +++ b/models/renderer.py @@ -1,5 +1,5 @@ import pygame -import pygame_widgets +from widgets.slider import HorizontalSlider from pygame_widgets.slider import Slider from models.match import Match from models.player import Player @@ -35,6 +35,9 @@ class Renderer: self.map_coord_controller = MapCoordController(self.screen.get_width(), self.screen.get_height(), self.top_left_x, self.bottom_right_x, self.top_left_y, self.bottom_right_y) + + self.slider = HorizontalSlider(self.screen, 50, 650, self.screen.get_width()-100, 20, 1, self.match.max_tick) + def render_players(self): """Draws everything on screen.""" self.map_coord_controller.update_screen_size(self.screen.get_width(), self.screen.get_height()) @@ -50,8 +53,6 @@ class Renderer: text = self.small_font.render(player.name, True, (255, 255, 255)) self.screen.blit(text, (mapped_x + 10, mapped_y)) - pygame.display.flip() # Update display - def render_text(self): # Draw current tick text = self.font.render(f"Tick: {self.match.tick}/{self.match.max_tick}", True, (255, 255, 255)) @@ -68,19 +69,17 @@ class Renderer: # Draw map image self.screen.blit(self.map_image, (0, 0)) - ''' - def render_slider(self): - # Create slider - slider = Slider(self.screen, 100, 100, 400, 20, min=1, max=self.match.max_tick, step=1, initial=self.match.tick, - handleRadius=10, handleColour=(255, 255, 255), handleOutline=(255, 255, 255), - sliderColour=(100, 100, 100), sliderMarkColour=(150, 150, 150), - font=pygame.font.Font(None, 36), textColour=(255, 255, 255), - valueColour=(255, 255, 255), valueOutlineColour=(255, 255, 255), - onSlide=self.on_slide, sliderMark=0) - ''' + def render_slider(self): + # Create slider + if self.slider.dragging: + self.match.set_tick(int(self.slider.value)) + else: + self.slider.set_value(self.match.tick) + self.slider.draw() def render(self): self.screen.fill((30, 30, 30)) # Clear screen self.render_map() self.render_text() - self.render_players() \ No newline at end of file + self.render_players() + self.render_slider() \ No newline at end of file