def on_node_activated(self, node): if node.is_leaf_node(): result = node.execute_action() # Add save game nodes to menu it consists of allowing the user to overwrite any # existing save or add a new one. if node.id == self.save_game_node_id: game_menu = Menu( self.view, MainMenu.render_menu, self.on_node_activated, Position(Map.MAP_SIZE / 2 - MainMenu.MENU_WIDTH / 2, Map.MAP_SIZE / 2 - MainMenu.MENU_HEIGHT / 2)) self.save_node_ids = utils.add_saved_game_nodes( game_menu, Database().save_game_overwrite, self.game_model.create_memento()) new_node = LeafNode("New Saved Game", Database().save_game, self.game_model.create_memento()) game_menu.nodes.append(new_node) self.save_node_ids.append(new_node.id) node.submenu = game_menu # Add load game nodes to menu it allows a user to load any existing save. if node.id == self.load_game_node_id: game_menu = Menu( self.view, MainMenu.render_menu, self.on_node_activated, Position(Map.MAP_SIZE / 2 - MainMenu.MENU_WIDTH / 2, Map.MAP_SIZE / 2 - MainMenu.MENU_HEIGHT / 2)) self.load_node_ids = utils.add_saved_game_nodes( game_menu, Database().load_saved_game, None) node.submenu = game_menu # If user has selected a save node if node.id in self.save_node_ids: utils.return_to_game(self.game_model) # If user has selected a load node if node.id in self.load_node_ids: self.game_model.set_memento(result) utils.return_to_game(self.game_model)
def __init__(self, model, view): self.model = model self.view = view # Add Background layer to visible models self.view.add_model(None, InventoryView.render_background, Position(0, 0), View.BACKGROUND) # Add Character to visible models self.view.add_model(self.model.character, InventoryView.render_character_data, Position(Map.MAP_SIZE / 4, 0), View.FOREGROUND) # Add item description - using blank item for initialization self.description_item = Item(0, 0, "", 0) self.view.add_model(self.description_item, InventoryView.render_description, Position(0, 0), View.FOREGROUND) # Build item list from model into a menu self.inventory_menu = Menu(self.view, InventoryView.render_inventory_menu, self.on_node_activated, Position(0, 0)) for item in self.model.character.inventory.item_list: self.inventory_menu.nodes.append( LeafNode(item.name, self.select_item, item))
def __init__(self, model, view, enemy_name): self.model = model self.view = view self.state = BattleController.ACTION_SELECT self.current_action = None self.enemy = copy.copy(model.enemies[enemy_name]) # Add Character model self.view.add_model(self.model.character, BattleView.render_character, Position(Map.GRID_SIZE / 2, Map.GRID_SIZE / 2), View.FOREGROUND) # Add Map Model self.view.add_model( self.model.current_map.get_map_tile( self.model.character.position.x_coord, self.model.character.position.y_coord, 0), BattleView.render_map, Position(0, Map.MAP_SIZE - BattleView.MENU_HEIGHT), View.BACKGROUND) # Add Enemy self.view.add_model(self.enemy, BattleView.render_enemy, Position(Map.GRID_SIZE / 2, 2), View.FOREGROUND) # Add target window Model and set current target to player characters = {'Player': self.model.character, 'Enemy': self.enemy} self.target_window = TargetWindow(self.model.character, self.state, characters) self.view.add_model(self.target_window, BattleView.render_target_window, Position(Map.GRID_SIZE / 2, Map.GRID_SIZE / 2), View.FOREGROUND) # Add action select menu to visible models self.action_menu = Menu( self.view, BattleView.render_menu, self.on_node_activated, Position(0, Map.MAP_SIZE - BattleView.MENU_HEIGHT)) self.action_menu.nodes.append( LeafNode("Attack", self.set_attack_action)) self.action_menu.nodes.append(LeafNode("Items", None)) # Add Battle Log self.battle_log = BattleLog("%s Attacked!" % enemy_name) self.view.add_model(self.battle_log, BattleView.render_battle_log, Position(0, 0), View.FOREGROUND)
def __init__(self, model, view): self.game_model = model self.view = view self.save_node_ids = [] self.load_node_ids = [] pygame.mixer.music.load(os.path.join('Music', 'theme.mid')) pygame.mixer.music.play() self.menu_model = Menu(self.view, TitleScreenView.render_menu, self.on_node_activated, Position(0, 0)) new_game_node = LeafNode("New Game", utils.return_to_game, self.game_model) self.menu_model.nodes.append(new_game_node) self.new_game_node_id = new_game_node.id load_game_node = MenuNode("Load Saved Game") self.menu_model.nodes.append(load_game_node) self.load_game_node_id = load_game_node.id self.menu_model.nodes.append(LeafNode("Quit", utils.quit))
def __init__(self, model, view, previous_controller, previous_view): self.game_model = model self.view = view self.previous_controller = previous_controller self.previous_view = previous_view self.save_node_ids = [] self.load_node_ids = [] self.menu_model = Menu( self.view, MainMenu.render_menu, self.on_node_activated, Position(Map.MAP_SIZE / 2 - MainMenu.MENU_WIDTH / 2, Map.MAP_SIZE / 2 - MainMenu.MENU_HEIGHT / 2)) save_game_node = MenuNode("Save Game") self.menu_model.nodes.append(save_game_node) self.save_game_node_id = save_game_node.id load_game_node = MenuNode("Load Saved Game") self.menu_model.nodes.append(load_game_node) self.load_game_node_id = load_game_node.id self.menu_model.nodes.append(LeafNode("Quit", utils.quit))
def on_node_activated(self, node): if node.is_leaf_node(): result = node.execute_action() # Add load game nodes to menu it allows a user to load any existing save. if node.id == self.load_game_node_id: game_menu = Menu(self.view, TitleScreenView.render_menu, self.on_node_activated, Position(0, 0)) self.load_node_ids = utils.add_saved_game_nodes( game_menu, Database().load_saved_game, None) node.submenu = game_menu # If user has selected new game if node.id == self.new_game_node_id: utils.return_to_game(self.game_model) # If user has selected a load node if node.id in self.load_node_ids: self.game_model.set_memento(result) utils.return_to_game(self.game_model)