diff --git a/squirrelbattle/game.py b/squirrelbattle/game.py index 4eb38c1..28d20de 100644 --- a/squirrelbattle/game.py +++ b/squirrelbattle/game.py @@ -1,6 +1,6 @@ # Copyright (C) 2020 by ÿnérant, eichhornchen, nicomarg, charlse # SPDX-License-Identifier: GPL-3.0-or-later - +from json import JSONDecodeError from random import randint from typing import Any, Optional import json @@ -37,7 +37,7 @@ class Game: self.settings.write_settings() self.settings_menu.update_values(self.settings) self.logs = Logs() - self.message = "Vive les écureuils" + self.message = None def new_game(self) -> None: """ @@ -139,8 +139,15 @@ class Game: Loads the game from a dictionary """ self.map.load_state(d) - # noinspection PyTypeChecker - self.player = self.map.find_entities(Player)[0] + players = self.map.find_entities(Player) + if not players: + self.message = "No player was found on this map!\n" \ + "Maybe you died?" + self.player.health = 0 + self.display_actions(DisplayActions.UPDATE) + return + + self.player = players[0] self.display_actions(DisplayActions.UPDATE) def load_game(self) -> None: @@ -150,7 +157,14 @@ class Game: file_path = ResourceManager.get_config_path("save.json") if os.path.isfile(file_path): with open(file_path, "r") as f: - self.load_state(json.loads(f.read())) + try: + state = json.loads(f.read()) + self.load_state(state) + except JSONDecodeError: + self.message = "The JSON file is not correct.\n" \ + "Your save seems corrupted. It got deleted." + os.unlink(file_path) + self.display_actions(DisplayActions.UPDATE) def save_game(self) -> None: """