def load_selection(self, db): # Re-select old selected instance for (instance_id, ) in db("SELECT id FROM selected WHERE `group` IS NULL"): obj = WorldObject.get_object_by_id(instance_id) self.session.selected_instances.add(obj) obj.get_component(SelectableComponent).select() # Re-show old tab (if there was one) or multiselection if len(self.session.selected_instances) == 1: tabname = db("SELECT value FROM metadata WHERE name = ?", 'selected_tab')[0][0] # This can still be None due to old savegames not storing the information tabclass = None if tabname is None else resolve_tab(tabname) obj.get_component(SelectableComponent).show_menu( jump_to_tabclass=tabclass) elif self.session.selected_instances: self.show_multi_select_tab(self.session.selected_instances) # Load user defined unit selection groups (Ctrl+number) for (num, group) in enumerate(self.session.selection_groups): for (instance_id, ) in db( "SELECT id FROM selected WHERE `group` = ?", num): obj = WorldObject.get_object_by_id(instance_id) group.add(obj)
def __init__(self, tabs, enemy_tabs, active_tab=None): super(SelectableComponent, self).__init__() # resolve tab from horizons.gui.tabs import resolve_tab self.tabs = map(resolve_tab, tabs) self.enemy_tabs = map(resolve_tab, enemy_tabs) self.active_tab = resolve_tab(active_tab) if active_tab is not None else None self._selected = False
def load(self, db): self.message_widget.load(db) self.logbook.load(db) self.resource_overview.load(db) if self.session.is_game_loaded(): LastActivePlayerSettlementManager().load(db) cur_settlement = LastActivePlayerSettlementManager().get_current_settlement() self.cityinfo.set_settlement(cur_settlement) self.minimap.draw() # update minimap to new world self.current_cursor = 'default' self.cursor = mousetools.SelectionTool(self.session) # Set cursor correctly, menus might need to be opened. # Open menus later; they may need unit data not yet inited self.cursor.apply_select() # Re-select old selected instance for (instance_id, ) in db("SELECT id FROM selected WHERE `group` IS NULL"): obj = WorldObject.get_object_by_id(instance_id) self.session.selected_instances.add(obj) obj.get_component(SelectableComponent).select() # Re-show old tab (if there was one) or multiselection if len(self.session.selected_instances) == 1: tabname = db("SELECT value FROM metadata WHERE name = ?", 'selected_tab')[0][0] # This can still be None due to old savegames not storing the information tabclass = None if tabname is None else resolve_tab(tabname) obj.get_component(SelectableComponent).show_menu(jump_to_tabclass=tabclass) elif self.session.selected_instances: self.show_multi_select_tab(self.session.selected_instances) # Load user defined unit selection groups (Ctrl+number) for (num, group) in enumerate(self.session.selection_groups): for (instance_id, ) in db("SELECT id FROM selected WHERE `group` = ?", num): obj = WorldObject.get_object_by_id(instance_id) group.add(obj) if not self.session.is_game_loaded(): # Fire a message for new world creation self.message_widget.add('NEW_WORLD') # Show message when the relationship between players changed def notify_change(caller, old_state, new_state, a, b): player1 = u"%s" % a.name player2 = u"%s" % b.name data = {'player1' : player1, 'player2' : player2} string_id = 'DIPLOMACY_STATUS_{old}_{new}'.format(old=old_state.upper(), new=new_state.upper()) self.message_widget.add(string_id=string_id, message_dict=data) self.session.world.diplomacy.add_diplomacy_status_changed_listener(notify_change)
def load_selection(self, db): # Re-select old selected instance for (instance_id, ) in db("SELECT id FROM selected WHERE `group` IS NULL"): obj = WorldObject.get_object_by_id(instance_id) self.session.selected_instances.add(obj) obj.get_component(SelectableComponent).select() # Re-show old tab (if there was one) or multiselection if len(self.session.selected_instances) == 1: tabname = db("SELECT value FROM metadata WHERE name = ?", 'selected_tab')[0][0] # This can still be None due to old savegames not storing the information tabclass = None if tabname is None else resolve_tab(tabname) obj.get_component(SelectableComponent).show_menu(jump_to_tabclass=tabclass) elif self.session.selected_instances: self.show_multi_select_tab(self.session.selected_instances) # Load user defined unit selection groups (Ctrl+number) for (num, group) in enumerate(self.session.selection_groups): for (instance_id, ) in db("SELECT id FROM selected WHERE `group` = ?", num): obj = WorldObject.get_object_by_id(instance_id) group.add(obj)