from classes.SavedState import SavedState import my_helpers.myPickle as my_pickle import os 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 create_character(self, player_config:dict): name = input("Enter Character Name: ") species = list(player_config["species"].keys()) print(species) types = [ x["name"] for x in player_config["types"] ] print(types) species_selected = player_config["species"]["Gnoll"] species_selected["name"] = "Gnoll" return { "name": name, "species": species_selected, "type": types } def find_save_state(self): if os.path.exists(self.save_state_file['path']): saved_state:SavedState = self.load_from_file(self.save_state_file) else: saved_state = SavedState() player = self.create_character(self.config["player"]) saved_state.add_player(player) self.save_to_file(saved_state, self.save_state_file) self.map = self.load_from_file(self.map_file) self.saved_state = saved_state return saved_state def load_from_file(self, file_options): if os.path.exists(file_options["path"]): with open(file_options["path"], "rb") as f: data = my_pickle.load(f, file_options['compression'], None) return data else: raise FileNotFoundError(f"Could not load map file: {file_options['path']}") def save_to_file(self, obj, file_options): os.makedirs(os.path.dirname(file_options["path"]), exist_ok=True) with open(file_options["path"], "wb") as f: my_pickle.dump(obj, f, file_options['compression'], None) def get_world(self): return self.map[self.saved_state.story_position]["World"][self.saved_state.story_world_index]