class IngameGui(LivingObject): minimap = livingProperty() keylistener = livingProperty() message_widget = livingProperty() def __init__(self, session): self.session = session self.cursor = None self.coordinates_tooltip = None self.keylistener = IngameKeyListener(self.session) # used by NavigationTool LastActivePlayerSettlementManager.create_instance(self.session) # Mocks needed to act like the real IngameGui self.show_menu = lambda x: 0 self.hide_menu = lambda: 0 # a logbook Dummy is necessary for message_widget to work self.logbook = DummyLogbook() self.mainhud = load_uh_widget('minimap.xml') self.mainhud.position_technique = "right+0:top+0" icon = self.mainhud.findChild(name="minimap") self.minimap = Minimap(icon, targetrenderer=horizons.globals.fife.targetrenderer, imagemanager=horizons.globals.fife.imagemanager, session=self.session, view=self.session.view) self.mainhud.mapEvents({ 'zoomIn': self.session.view.zoom_in, 'zoomOut': self.session.view.zoom_out, 'rotateRight': Callback.ChainedCallbacks(self.session.view.rotate_right, self.minimap.rotate_right), 'rotateLeft': Callback.ChainedCallbacks(self.session.view.rotate_left, self.minimap.rotate_left), 'gameMenuButton': self.toggle_pause, }) self.mainhud.show() ZoomChanged.subscribe(self._update_zoom) # Hide unnecessary buttons in hud for widget in ("build", "speedUp", "speedDown", "destroy_tool", "diplomacyButton", "logbook"): self.mainhud.findChild(name=widget).hide() self.windows = WindowManager() self.message_widget = MessageWidget(self.session) self.pausemenu = PauseMenu(self.session, self, self.windows, in_editor_mode=True) self.help_dialog = HelpDialog(self.windows) def end(self): self.mainhud.mapEvents({ 'zoomIn': None, 'zoomOut': None, 'rotateRight': None, 'rotateLeft': None, 'gameMenuButton': None }) self.mainhud.hide() self.mainhud = None self._settings_tab.hide() self._settings_tab = None self.windows.close_all() self.minimap = None self.keylistener = None LastActivePlayerSettlementManager().remove() LastActivePlayerSettlementManager.destroy_instance() ZoomChanged.unsubscribe(self._update_zoom) if self.cursor: self.cursor.remove() self.cursor.end() self.cursor = None super(IngameGui, self).end() def handle_selection_group(self, num, ctrl_pressed): # Someday, maybe cool stuff will be possible here. # That day is not today, I'm afraid. pass def toggle_pause(self): self.windows.toggle(self.pausemenu) def toggle_help(self): self.windows.toggle(self.help_dialog) def load(self, savegame): self.minimap.draw() self.cursor = SelectionTool(self.session) def setup(self): """Called after the world editor was initialized.""" self._settings_tab = TabWidget(self, tabs=[SettingsTab(self.session.world_editor, self)]) self._settings_tab.show() def minimap_to_front(self): """Make sure the full right top gui is visible and not covered by some dialog""" self.mainhud.hide() self.mainhud.show() def show_save_map_dialog(self): """Shows a dialog where the user can set the name of the saved map.""" window = SelectSavegameDialog('editor-save', self.windows) savegamename = self.windows.open(window) if savegamename is None: return False # user aborted dialog success = self.session.save(savegamename) if success: self.message_widget.add('SAVED_GAME') def on_escape(self): pass def on_key_press(self, action, evt): _Actions = KeyConfig._Actions if action == _Actions.QUICKSAVE: self.session.quicksave() if action == _Actions.ESCAPE: if self.windows.visible: self.windows.on_escape() elif hasattr(self.cursor, 'on_escape'): self.cursor.on_escape() else: self.toggle_pause() elif action == _Actions.HELP: self.toggle_help() else: return False return True def set_cursor(self, which='default', *args, **kwargs): """Sets the mousetool (i.e. cursor). This is done here for encapsulation and control over destructors. Further arguments are passed to the mouse tool constructor. """ self.cursor.remove() klass = { 'default': SelectionTool, 'tile_layer': TileLayingTool }[which] self.cursor = klass(self.session, *args, **kwargs) def _update_zoom(self, message): """Enable/disable zoom buttons""" in_icon = self.mainhud.findChild(name='zoomIn') out_icon = self.mainhud.findChild(name='zoomOut') if message.zoom == VIEW.ZOOM_MIN: out_icon.set_inactive() else: out_icon.set_active() if message.zoom == VIEW.ZOOM_MAX: in_icon.set_inactive() else: in_icon.set_active()
class IngameGui(LivingObject): minimap = livingProperty() keylistener = livingProperty() message_widget = livingProperty() def __init__(self, session): self.session = session self.cursor = None self.coordinates_tooltip = None self.keylistener = IngameKeyListener(self.session) # used by NavigationTool LastActivePlayerSettlementManager.create_instance(self.session) # Mocks needed to act like the real IngameGui self.show_menu = Dummy self.hide_menu = Dummy # a logbook Dummy is necessary for message_widget to work self.logbook = Dummy() self.mainhud = load_uh_widget('minimap.xml') self.mainhud.position_technique = "right+0:top+0" icon = self.mainhud.findChild(name="minimap") self.minimap = Minimap( icon, targetrenderer=horizons.globals.fife.targetrenderer, imagemanager=horizons.globals.fife.imagemanager, session=self.session, view=self.session.view) self.mainhud.mapEvents({ 'zoomIn': self.session.view.zoom_in, 'zoomOut': self.session.view.zoom_out, 'rotateRight': Callback.ChainedCallbacks(self.session.view.rotate_right, self.minimap.rotate_right), 'rotateLeft': Callback.ChainedCallbacks(self.session.view.rotate_left, self.minimap.rotate_left), 'gameMenuButton': self.toggle_pause, }) self.mainhud.show() ZoomChanged.subscribe(self._update_zoom) # Hide unnecessary buttons in hud for widget in ("build", "speedUp", "speedDown", "destroy_tool", "diplomacyButton", "logbook"): self.mainhud.findChild(name=widget).hide() self.windows = WindowManager() self.message_widget = MessageWidget(self.session) self.pausemenu = PauseMenu(self.session, self, self.windows, in_editor_mode=True) self.help_dialog = HelpDialog(self.windows) def end(self): self.mainhud.mapEvents({ 'zoomIn': None, 'zoomOut': None, 'rotateRight': None, 'rotateLeft': None, 'gameMenuButton': None }) self.mainhud.hide() self.mainhud = None self._settings_tab.hide() self._settings_tab = None self.windows.close_all() self.minimap = None self.keylistener = None LastActivePlayerSettlementManager().remove() LastActivePlayerSettlementManager.destroy_instance() ZoomChanged.unsubscribe(self._update_zoom) if self.cursor: self.cursor.remove() self.cursor.end() self.cursor = None super(IngameGui, self).end() def handle_selection_group(self, num, ctrl_pressed): # Someday, maybe cool stuff will be possible here. # That day is not today, I'm afraid. pass def toggle_pause(self): self.windows.toggle(self.pausemenu) def toggle_help(self): self.windows.toggle(self.help_dialog) def load(self, savegame): self.minimap.draw() self.cursor = SelectionTool(self.session) def setup(self): """Called after the world editor was initialized.""" self._settings_tab = TabWidget( self, tabs=[SettingsTab(self.session.world_editor, self)]) self._settings_tab.show() def minimap_to_front(self): """Make sure the full right top gui is visible and not covered by some dialog""" self.mainhud.hide() self.mainhud.show() def show_save_map_dialog(self): """Shows a dialog where the user can set the name of the saved map.""" window = SelectSavegameDialog('editor-save', self.windows) savegamename = self.windows.open(window) if savegamename is None: return False # user aborted dialog success = self.session.save(savegamename) if success: self.message_widget.add('SAVED_GAME') def on_escape(self): pass def on_key_press(self, action, evt): _Actions = KeyConfig._Actions if action == _Actions.QUICKSAVE: self.session.quicksave() if action == _Actions.ESCAPE: if self.windows.visible: self.windows.on_escape() elif hasattr(self.cursor, 'on_escape'): self.cursor.on_escape() else: self.toggle_pause() elif action == _Actions.HELP: self.toggle_help() else: return False return True def set_cursor(self, which='default', *args, **kwargs): """Sets the mousetool (i.e. cursor). This is done here for encapsulation and control over destructors. Further arguments are passed to the mouse tool constructor. """ self.cursor.remove() klass = {'default': SelectionTool, 'tile_layer': TileLayingTool}[which] self.cursor = klass(self.session, *args, **kwargs) def _update_zoom(self, message): """Enable/disable zoom buttons""" in_icon = self.mainhud.findChild(name='zoomIn') out_icon = self.mainhud.findChild(name='zoomOut') if message.zoom == VIEW.ZOOM_MIN: out_icon.set_inactive() else: out_icon.set_active() if message.zoom == VIEW.ZOOM_MAX: in_icon.set_inactive() else: in_icon.set_active()
class IngameGui(LivingObject): minimap = livingProperty() keylistener = livingProperty() def __init__(self, session, main_gui): self.session = session self.main_gui = main_gui self.cursor = None self.coordinates_tooltip = None self.keylistener = IngameKeyListener(self.session) # used by NavigationTool LastActivePlayerSettlementManager.create_instance(self.session) # Mocks needed to act like the real IngameGui self.show_menu = Dummy self.hide_menu = Dummy self.mainhud = load_uh_widget('minimap.xml') self.mainhud.position_technique = "right+0:top+0" icon = self.mainhud.findChild(name="minimap") self.minimap = Minimap(icon, targetrenderer=horizons.globals.fife.targetrenderer, imagemanager=horizons.globals.fife.imagemanager, session=self.session, view=self.session.view) self.mainhud.mapEvents({ 'zoomIn': self.session.view.zoom_in, 'zoomOut': self.session.view.zoom_out, 'rotateRight': Callback.ChainedCallbacks(self.session.view.rotate_right, self.minimap.rotate_right), 'rotateLeft': Callback.ChainedCallbacks(self.session.view.rotate_left, self.minimap.rotate_left), 'gameMenuButton': self.toggle_pause, }) self.mainhud.show() self.session.view.add_change_listener(self._update_zoom) # Hide unnecessary buttons in hud for widget in ("build", "speedUp", "speedDown", "destroy_tool", "diplomacyButton", "logbook"): self.mainhud.findChild(name=widget).hide() self.save_map_dialog = SaveMapDialog(self.main_gui, self, self.session) self.pausemenu = PauseMenu(self.session, self.main_gui, self, in_editor_mode=True) def end(self): self.mainhud.mapEvents({ 'zoomIn': None, 'zoomOut': None, 'rotateRight': None, 'rotateLeft': None, 'gameMenuButton': None }) self.minimap = None self.keylistener = None LastActivePlayerSettlementManager().remove() LastActivePlayerSettlementManager.destroy_instance() self.session.view.remove_change_listener(self._update_zoom) if self.cursor: self.cursor.remove() self.cursor.end() self.cursor = None super(IngameGui, self).end() def toggle_pause(self): self.pausemenu.toggle() def load(self, savegame): self.minimap.draw() self.cursor = SelectionTool(self.session) def setup(self): """Called after the world editor was initialized.""" self._settings_tab = TabWidget(self, tabs=[SettingsTab(self.session.world_editor, self)]) self._settings_tab.show() def minimap_to_front(self): """Make sure the full right top gui is visible and not covered by some dialog""" self.mainhud.hide() self.mainhud.show() def show_save_map_dialog(self): """Shows a dialog where the user can set the name of the saved map.""" self.save_map_dialog.show() def on_escape(self): pass def on_key_press(self, action, evt): _Actions = KeyConfig._Actions if action == _Actions.ESCAPE: return self.on_escape() def set_cursor(self, which='default', *args, **kwargs): """Sets the mousetool (i.e. cursor). This is done here for encapsulation and control over destructors. Further arguments are passed to the mouse tool constructor. """ self.cursor.remove() klass = { 'default': SelectionTool, 'tile_layer': TileLayingTool }[which] self.cursor = klass(self.session, *args, **kwargs) def _update_zoom(self): """Enable/disable zoom buttons""" zoom = self.session.view.get_zoom() in_icon = self.mainhud.findChild(name='zoomIn') out_icon = self.mainhud.findChild(name='zoomOut') if zoom == VIEW.ZOOM_MIN: out_icon.set_inactive() else: out_icon.set_active() if zoom == VIEW.ZOOM_MAX: in_icon.set_inactive() else: in_icon.set_active()