add: tictactoe: timers on catchup

This commit is contained in:
Namonay
2024-05-14 16:46:16 +02:00
parent aa01405988
commit 995a808974
5 changed files with 50 additions and 25 deletions

View File

@ -5,7 +5,9 @@ from channels.generic.websocket import WebsocketConsumer
from django.contrib.auth.models import User
import json
import sys
from .objects.GameManager import GameManager
from .objects.tictactoe.TicTacToePlayer import TicTacToePlayer
@ -47,7 +49,7 @@ class TicTacToeWebSocket(WebsocketConsumer):
self.member.send(self.member.sign)
if (self.game._everbody_is_here() and self.game.model.started == True and self.game.model.finished == False): # if an user disconnected and joined back
self.member.send("catchup", {"morpion" : self.game._map, "turn" : self.game.turn, "currentMorpion": self.member.currentMorpion})
self.member.send("catchup", {"morpion" : self.game._map, "turn" : self.game.turn, "currentMorpion": self.member.currentMorpion, "timer" : 20 - (time.time() - self.game.time), "finished" : self.game.model.finished})
return
if (self.game._everbody_is_here() and self.game.model.started == False): # Launch the game if the two players are connected
@ -64,8 +66,10 @@ class TicTacToeWebSocket(WebsocketConsumer):
self.game.broadcast("game_move", data, [self.member])
if (data.get("timerIsDue") is not None and self.game.time + 20 < time.time()): # Frontend asking if the timer is due
self.winner = 'x' if self.game.turn == 'o' else 'o'
self.game.model.finish(self.user)
self.winner = "x" if self.game.turn == "o" else "o"
self.game.get_members()
self.game.model.finish(self.game.get_players_by_sign(self.winner).user)
self.game.broadcast("game_end", {"winning_sign": self.winner})
if (self.game.checkWin() != False): # Check if after a move, the game is finished
@ -77,6 +81,8 @@ class TicTacToeWebSocket(WebsocketConsumer):
def disconnect(self, event):
try:
self.member.socket = None
if (len(self.game.get_players_connected()) == 0):
self.game.model.finish(None)
except:
pass