mirror of
https://github.com/AudebertAdrien/ft_transcendence.git
synced 2026-02-04 11:40:25 +01:00
50 lines
1.9 KiB
Python
50 lines
1.9 KiB
Python
# /pong/game/tournament.py
|
|
import json
|
|
from django.template.loader import render_to_string
|
|
import logging
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
class TournamentMatchMaker:
|
|
def __init__(self):
|
|
self.waiting_players = []
|
|
logger.debug("TournamentMatchMaker initialized with an empty waiting_players list")
|
|
|
|
async def add_player(self, player):
|
|
if player not in self.waiting_players:
|
|
self.waiting_players.append(player)
|
|
logger.info(f"User {player.user.username} added to the TOURNAMENT WAITING ROOM")
|
|
await self.update_waiting_room()
|
|
else:
|
|
logger.warning(f"User {player.user.username} is already in the TOURNAMENT WAITING ROOM")
|
|
|
|
async def remove_player(self, player):
|
|
if player in self.waiting_players:
|
|
self.waiting_players.remove(player)
|
|
logger.info(f"User {player.user.username} removed from the TOURNAMENT WAITING ROOM")
|
|
await self.update_waiting_room()
|
|
else:
|
|
logger.warning(f"Attempt to remove non-existent user {player.user.username} from the TOURNAMENT WAITING ROOM")
|
|
|
|
async def update_waiting_room(self):
|
|
logger.debug("Updating TOURNAMENT WAITING ROOM")
|
|
html = self.generate_waiting_room_html()
|
|
for player in self.waiting_players:
|
|
await player.send(json.dumps({
|
|
'type': 'update_waiting_room',
|
|
'html': html
|
|
}))
|
|
logger.info("TOURNAMENT WAITING ROOM updated and sent to all players")
|
|
|
|
def generate_waiting_room_html(self):
|
|
logger.debug("Generating TOURNAMENT WAITING ROOM HTML")
|
|
context = {
|
|
'players': [player.user.username for player in self.waiting_players]
|
|
}
|
|
html = render_to_string('pong/tournament_waiting_room.html', context)
|
|
logger.info("TOURNAMENT WAITING ROOM HTML generated successfully")
|
|
return html
|
|
|
|
# Instance of the class
|
|
tournament_match_maker = TournamentMatchMaker()
|