UPDATE controller positioning method
This commit is contained in:
@@ -13,32 +13,31 @@ class PlayerController:
|
|||||||
## Private Methods
|
## Private Methods
|
||||||
def _is_player_at_mouse(self, player, mouse_x, mouse_y):
|
def _is_player_at_mouse(self, player, mouse_x, mouse_y):
|
||||||
player_x, player_y = self.player_renderer.map_coord_converter.map_to_screen(player.x, player.y)
|
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
|
distance = ((mouse_x - player_x) ** 2 + (mouse_y - player_y) ** 2) ** 0.5
|
||||||
|
|
||||||
return distance < self.player_renderer.get_radius()
|
return distance < self.player_renderer.get_radius()
|
||||||
|
|
||||||
def _update_hover_state(self, event, player):
|
def _update_hover_state(self, mouse_x, mouse_y, player):
|
||||||
if event.type == pygame.MOUSEMOTION:
|
if self._is_player_at_mouse(player, mouse_x, mouse_y):
|
||||||
mouse_x, mouse_y = event.pos
|
player.is_hovered = True
|
||||||
if self._is_player_at_mouse(player, mouse_x, mouse_y):
|
else:
|
||||||
player.is_hovered = True
|
player.is_hovered = False
|
||||||
else:
|
|
||||||
player.is_hovered = False
|
def _select_player(self, mouse_x, mouse_y, player):
|
||||||
elif event.type == pygame.MOUSEBUTTONDOWN:
|
if self._is_player_at_mouse(player, mouse_x, mouse_y):
|
||||||
mouse_x, mouse_y = event.pos
|
player.is_selected = not player.is_selected
|
||||||
if self._is_player_at_mouse(player, mouse_x, mouse_y):
|
self.selected_player = player if player.is_selected else None
|
||||||
player.is_selected = not player.is_selected
|
print(f"Selected player: {player.name}" if player.is_selected else "Player deselected")
|
||||||
self.selected_player = player if player.is_selected else None
|
|
||||||
print(f"Selected player: {player.name}" if player.is_selected else "Player deselected")
|
|
||||||
|
|
||||||
## Public Methods
|
## Public Methods
|
||||||
def update(self, event):
|
def update(self, event):
|
||||||
|
if hasattr(event, 'pos'):
|
||||||
|
new_x, new_y = event.pos[0] - self.game_box_top[0], event.pos[1] - self.game_box_top[1]
|
||||||
|
|
||||||
for team in self.match.get_teams():
|
for team in self.match.get_teams():
|
||||||
for player in team.players:
|
for player in team.players:
|
||||||
self._update_hover_state(event, player)
|
if event.type == pygame.MOUSEMOTION:
|
||||||
|
self._update_hover_state(new_x, new_y, player)
|
||||||
|
elif event.type == pygame.MOUSEBUTTONDOWN:
|
||||||
|
self._select_player(new_x, new_y, player)
|
||||||
|
|
||||||
Reference in New Issue
Block a user