from classes.Character.CharacterCreater import CharacterCreater from classes.SavedState import SavedState from classes.Map import Map from simple_term_menu import TerminalMenu from tabulate import tabulate import logging import os LOGGING = logging.getLogger(__name__) class GameBoard: def __init__(self, config:dict, save_state_file:dict, map_file:dict): self.config = config self.save_state_file = save_state_file self.map_file = map_file def print_story(self, story:str): print(story) # Save State def find_game_state(self, store_state:bool=True): if os.path.exists(self.save_state_file['path']): self.saved_state = SavedState.load_from_file(self.save_state_file) else: self.saved_state = SavedState() self.saved_state.add_player(CharacterCreater.create_character(self.config["player"], self.config["create_character_message"])) if store_state: self.saved_state.save_to_file(self.save_state_file) print() self.map = Map.load_from_file(self.map_file) return self.saved_state def save_game_state(self): self.saved_state.save_to_file(self.save_state_file) def get_game_state(self): return self.saved_state #Player def get_player(self): return self.saved_state.get_player() def get_player_species(self): return self.saved_state.get_player_species(self.config["player"]["species"]) def get_player_combineble_species(self): return self.saved_state.get_player_combineble(self.config["player"]["species"]) # Functions def replace_keyword_into_place_story(self, place:dict): story:str = place['story'] story.replace("SPECIES", self.saved_state.get_player().get_species_name()) story.replace("CHARACTER_NAME", self.saved_state.get_player().get_name()) return story def by_the_place(self): return self.map.by_the_place(self.saved_state.get_place(), self.saved_state.get_chapter(), self.saved_state.get_story_moves()) def user_input(self): while True: try: place = self.by_the_place() LOGGING.debug(place) print(self.replace_keyword_into_place_story(place)) print() choice = input(f"{place['name']} || What do you like to do? ") if choice != None: break LOGGING.debug(choice) self.check_user_input(choice) except KeyboardInterrupt: break def check_user_input(self, choice:str): pass