fixed an issue where leaving while the other was deciding to load the old save would softlock the user
This commit is contained in:
parent
708e32e245
commit
8ef6d0d239
3 changed files with 22 additions and 4 deletions
2
NOTE.md
2
NOTE.md
|
@ -10,10 +10,8 @@ A faire :
|
||||||
- Voir les TODOs
|
- Voir les TODOs
|
||||||
|
|
||||||
3. Bug :
|
3. Bug :
|
||||||
- Quitter pendant que l'on décide de si l'on doit charger ou non une ancienne sauvegarde fait crash l'adversaire
|
|
||||||
- Si le port est déjà utilisé, le jeu n'indique par l'erreur à l'hôte
|
- Si le port est déjà utilisé, le jeu n'indique par l'erreur à l'hôte
|
||||||
- Les champs invalides n'empêchent pas de faire l'action
|
- Les champs invalides n'empêchent pas de faire l'action
|
||||||
- (incertain) Dans de rare cas (souvent en fermant brutalement la fenêtre) le processus ne s'arrête pas
|
|
||||||
- Si la fenêtre est fermée, l'erreur "delete_vao AttributeError: 'NoneType' object has no attribute 'current_context'" apparait parfois
|
- Si la fenêtre est fermée, l'erreur "delete_vao AttributeError: 'NoneType' object has no attribute 'current_context'" apparait parfois
|
||||||
|
|
||||||
4. Vérification :
|
4. Vérification :
|
||||||
|
|
|
@ -87,6 +87,14 @@ class Client(StoppableThread):
|
||||||
break
|
break
|
||||||
except socket.timeout:
|
except socket.timeout:
|
||||||
if self.stopped: return
|
if self.stopped: return
|
||||||
|
except ConnectionResetError:
|
||||||
|
from source.gui.scene import GameError
|
||||||
|
in_pyglet_context(
|
||||||
|
self.window.set_scene,
|
||||||
|
GameError,
|
||||||
|
text="Perte de connexion avec l'adversaire"
|
||||||
|
)
|
||||||
|
return
|
||||||
|
|
||||||
if load_old_save:
|
if load_old_save:
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ class Host(StoppableThread):
|
||||||
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server:
|
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server:
|
||||||
server.bind(("", self.port)) # connecte le socket au port indiqué
|
server.bind(("", self.port)) # connecte le socket au port indiqué
|
||||||
|
|
||||||
server.settimeout(1) # défini le timeout à 1 secondes
|
server.settimeout(1) # défini le timeout à 1 seconde
|
||||||
server.listen() # écoute de nouvelle connexion
|
server.listen() # écoute de nouvelle connexion
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
@ -75,7 +75,16 @@ class Host(StoppableThread):
|
||||||
|
|
||||||
with self.condition_load: self.condition_load.wait() # attend que l'utilisateur choisisse l'option
|
with self.condition_load: self.condition_load.wait() # attend que l'utilisateur choisisse l'option
|
||||||
|
|
||||||
|
try:
|
||||||
PacketLoadOldSave(value=self.accept_load).send_data_connection(connection)
|
PacketLoadOldSave(value=self.accept_load).send_data_connection(connection)
|
||||||
|
except ConnectionResetError:
|
||||||
|
from source.gui.scene import GameError
|
||||||
|
in_pyglet_context(
|
||||||
|
self.window.set_scene,
|
||||||
|
GameError,
|
||||||
|
text="Perte de connexion avec l'adversaire"
|
||||||
|
)
|
||||||
|
return
|
||||||
|
|
||||||
if self.accept_load:
|
if self.accept_load:
|
||||||
|
|
||||||
|
@ -121,3 +130,6 @@ class Host(StoppableThread):
|
||||||
connection=connection,
|
connection=connection,
|
||||||
game_scene=game_scene
|
game_scene=game_scene
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# TODO: englober les threads de try sur ConnectionResetError pour ramener au menu d'erreur directement
|
||||||
|
# au lieu de le faire manuellement à chaque fois
|
||||||
|
|
Loading…
Reference in a new issue