game: core: recreate classes see other paddle

This commit is contained in:
2024-01-17 19:06:36 +01:00
parent 6983983e58
commit 1af55795d9
13 changed files with 295 additions and 191 deletions

View File

@ -1,15 +1,20 @@
from __future__ import annotations
from channels.generic.websocket import WebsocketConsumer
from django.contrib.auth.models import User
import json
from .objects.GameRoomManager import GameRoomManager
from .objects.GameMember import GameMember
from .objects.Game import Game
from .objects.GameManager import GameManager
game_room_manager: GameRoomManager = GameRoomManager()
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from .objects.Spectator import Spectator
from .objects.Player import Player
from .objects.Game import Game
game_manager: GameManager = GameManager()
class GameWebSocket(WebsocketConsumer):
@ -19,9 +24,6 @@ class GameWebSocket(WebsocketConsumer):
self.channel_name = "games"
self.group_name = "games"
def send_game_data(self):
self.member.send("init_game", self.game.to_dict())
def connect(self):
self.user: User = self.scope["user"]
@ -32,19 +34,13 @@ class GameWebSocket(WebsocketConsumer):
self.game_id = int(self.scope['url_route']['kwargs']['game_id'])
self.game = game_manager.get(self.game_id)
self.game: Game = game_manager.get(self.game_id)
self.room = game_room_manager.get(self.game_id)
if (self.room is None):
if (self.game is None):
self.send("Game not found.")
self.disconnect(1017)
self.member = GameMember(self.user.pk, self, self.room)
self.room.append(self.member)
self.send_game_data()
self.member: Player | Spectator = self.game.join(self.user.pk, self)
def receive(self, text_data: str = None, bytes_data: bytes = None):
@ -56,6 +52,4 @@ class GameWebSocket(WebsocketConsumer):
self.member.receive(data)
def disconnect(self, close_code):
member = self.room.get_member_by_socket(self)
if (member is not None):
self.room.remove(self.member, close_code)
self.game.remove(self.member)