def __init__(self): self.map_manager = MapManager() self.status_manager = StatusManager(self.map_manager) self.output_manager = OutputManager() self.action_manager = ActionManager(self.status_manager, self.output_manager) self.dialog_manager = DialogManager(self.status_manager, self.output_manager) self.move_manager = MoveManager( self.status_manager, self.output_manager )
class GameManager: def __init__(self): self.map_manager = MapManager() self.status_manager = StatusManager(self.map_manager) self.output_manager = OutputManager() self.action_manager = ActionManager(self.status_manager, self.output_manager) self.dialog_manager = DialogManager(self.status_manager, self.output_manager) self.move_manager = MoveManager( self.status_manager, self.output_manager ) def intro(self): with open(intro_file, "r") as fp: intro = json.load(fp)["intro"] self.output_manager.print(intro) def start(self): self.intro() response = input() while response.lower() != "quit": self.process_response(response) if self.status_manager.is_dead(): break response = input() def process_response(self, response): # find response mapping in dialog or action dictionaries if self.dialog_manager.detect_dialog(response): self.dialog_manager.process_response(response) elif self.move_manager.detect_move(response): self.move_manager.process_response(response) else: self.action_manager.process_response(response)
def test_that_status_are_updated(): status_manager = StatusManager(MapManager()) update = { "place:forest.south_forest": True, "mental_state:happy": True, "mental_state:tired": False, "duration": 0.5 } status_manager.update(update) assert status_manager.status["place"] == "forest.south_forest" assert status_manager.status["mental_state"]["happy"] assert not status_manager.status["mental_state"]["tired"] assert status_manager.status["day"] == 1.5
def test_that_status_manager_gets_presence(): status_manager = StatusManager(MapManager()) assert status_manager.get_presence() == [] status_manager.update({"presence:friend1": True, "presence:friend2": True}) assert status_manager.get_presence() == ["friend1", "friend2"]
def test_that_status_manager_checks_whether_player_is_dead(): status_manager = StatusManager(MapManager()) assert not status_manager.is_dead() status_manager.update({"physical_state:dead": True}) assert status_manager.is_dead()
def test_that_status_manager_checks_whether_player_is_alone(): status_manager = StatusManager(MapManager()) assert status_manager.is_alone() status_manager.update({"presence:friend": True}) assert not status_manager.is_alone()
def test_that_status_managers_detects_nested_places(place, status, expected): status_manager = StatusManager(MapManager()) status_manager.status["place"] = place assert status_manager._is_in_place(status) == expected
def test_that_status_manager_acts_like_status_list(): status_manager = StatusManager(MapManager()) assert len(status_manager) == len(status_manager.status) assert status_manager["place"] == status_manager.status["place"]
def test_that_status_manager_gets_current_place(): status_manager = StatusManager(MapManager()) assert status_manager.get_current_place() == "forest.middle_forest"
def test_that_status_are_checked(status, expected): status_manager = StatusManager(MapManager()) assert status_manager.check_status(status) == expected
def move_manager(): status_manager = StatusManager(MapManager()) output_manager = OutputManager() return MoveManager(status_manager, output_manager)
def action_manager(): status_manager = StatusManager(MapManager()) output_manager = OutputManager() return ActionManager(status_manager, output_manager)
def dialog_manager(): status_manager = StatusManager(MapManager()) output_manager = OutputManager() return DialogManager(status_manager, output_manager)