33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
from models.match import Match
|
|
from render.player_renderer import PlayerRenderer
|
|
import pygame
|
|
|
|
class PlayerController:
|
|
def __init__(self, player_renderer: PlayerRenderer, match: Match, game_box_top: tuple[int, int]):
|
|
self.player_renderer = player_renderer
|
|
self.match = match
|
|
self.game_box_top = game_box_top
|
|
|
|
## Private Methods
|
|
def _update_hover_state(self, event, player):
|
|
if event.type == pygame.MOUSEMOTION:
|
|
mouse_x, mouse_y = event.pos
|
|
player_x, player_y = self.player_renderer.map_coord_converter.map_to_screen(player.x, player.y)
|
|
|
|
# Adjust for game box position
|
|
player_x += self.game_box_top[0]
|
|
player_y += self.game_box_top[1]
|
|
|
|
distance = ((mouse_x - player_x) ** 2 + (mouse_y - player_y) ** 2) ** 0.5
|
|
|
|
if distance < self.player_renderer.get_radius():
|
|
player.is_hovered = True
|
|
else:
|
|
player.is_hovered = False
|
|
|
|
## Public Methods
|
|
def update(self, event):
|
|
for team in self.match.get_teams():
|
|
for player in team.players:
|
|
self._update_hover_state(event, player)
|
|
|