game: add: backend input verification

This commit is contained in:
Namonay
2024-04-10 19:41:49 +02:00
parent 8b9c4d7c1c
commit a7af70f1f6
5 changed files with 112 additions and 21 deletions

View File

@ -8,6 +8,10 @@ import json
from .objects.GameManager import GameManager
from .objects.tictactoe.TicTacToePlayer import TicTacToePlayer
import time
from typing import TYPE_CHECKING
if TYPE_CHECKING:
@ -16,7 +20,6 @@ if TYPE_CHECKING:
from .objects.pong.PongGame import PongGame
from .objects.tictactoe.TicTacToeGame import TicTacToeGame
from .objects.tictactoe.TicTacToePlayer import TicTacToePlayer
from .objects.tictactoe.TicTacToeSpectator import TicTacToeSpectator
game_manager: GameManager = GameManager()
@ -24,7 +27,7 @@ game_manager: GameManager = GameManager()
class TicTacToeWebSocket(WebsocketConsumer):
def connect(self):
self.user: User = self.scope["user"]
if (self.user.pk is None):
self.user.pk = 0
@ -36,19 +39,27 @@ class TicTacToeWebSocket(WebsocketConsumer):
self.game: TicTacToeGame = game_manager.get(self.game_id, "tictactoe")
self.member = self.game.join(self.user.pk, self)
self.member.send("x" if self.game._everbody_is_here() else "o")
if (self.game._everbody_is_here()):
if (isinstance(self.member, TicTacToePlayer)):
self.member.send(self.member.sign)
if (self.game._everbody_is_here() and self.game.model.started == False):
self.game.broadcast("game_start")
self.game.model.start()
def receive(self, text_data=None, bytes_data=None):
print(text_data)
self.game.broadcast("", json.loads(text_data), [self.member])
data = json.loads(text_data)
if (data.get("targetMorpion") is not None and data.get("targetCase") is not None):
if (self.game.add(data, self.member) == False):
return
self.game.broadcast("", data, [self.member])
pass
def disconnect(self, event):
self.member.socket = None
self.game.time = time.time()
self.game.broadcast("opponent_leave_timer")
class PongWebSocket(WebsocketConsumer):