ft_transcendence/pong/game/tournament.py
2024-09-12 17:32:46 +02:00

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()