80 lines
2.4 KiB
Python
80 lines
2.4 KiB
Python
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
|