the save button now have a cooldown of 40 seconds

This commit is contained in:
Faraphel 2023-03-05 22:59:02 +01:00
parent 4be4cf5a03
commit bc1dceb39b

View file

@ -1,8 +1,8 @@
import json import json
import socket import socket
from datetime import datetime from datetime import datetime, timedelta
from pathlib import Path from pathlib import Path
from typing import TYPE_CHECKING from typing import TYPE_CHECKING, Optional
from source import path_save, path_history from source import path_save, path_history
from source.core.enums import BombState from source.core.enums import BombState
@ -178,7 +178,6 @@ class Game(Scene):
self.chat_new_message("System", "Veuillez poser vos bateaux avant de sauvegarder.") self.chat_new_message("System", "Veuillez poser vos bateaux avant de sauvegarder.")
return return
# TODO: Pas spam le bouton
PacketAskSave().send_connection(self.connection) PacketAskSave().send_connection(self.connection)
self.chat_new_message("System", "demande de sauvegarde envoyé.") self.chat_new_message("System", "demande de sauvegarde envoyé.")
@ -215,6 +214,8 @@ class Game(Scene):
self._boat_ready_ally = True # défini l'état de notre planche comme prête self._boat_ready_ally = True # défini l'état de notre planche comme prête
PacketBoatPlaced().send_connection(connection) # indique à l'adversaire que notre planche est prête PacketBoatPlaced().send_connection(connection) # indique à l'adversaire que notre planche est prête
self.save_cooldown: Optional[datetime] = None
self._refresh_turn_text() self._refresh_turn_text()
self._refresh_score_text() self._refresh_score_text()
@ -406,6 +407,15 @@ class Game(Scene):
self.window.set_scene(GameError, text="L'adversaire a quitté la partie.") self.window.set_scene(GameError, text="L'adversaire a quitté la partie.")
def network_on_ask_save(self, packet: PacketAskSave): def network_on_ask_save(self, packet: PacketAskSave):
now = datetime.now()
if self.save_cooldown is not None: # si un cooldown est défini
if self.save_cooldown + timedelta(seconds=40) >= now:
# si l'action à déjà été faite dans les 40 dernières secondes, ignore la requête de sauvegarde
return
self.save_cooldown = now
from source.gui.scene import GameSave from source.gui.scene import GameSave
self.window.add_scene(GameSave, game_scene=self) self.window.add_scene(GameSave, game_scene=self)