def end(self): self.log.debug("Ending session") self.is_alive = False # Has to be done here, cause the manager uses Scheduler! Scheduler().rem_all_classinst_calls(self) ExtScheduler().rem_all_classinst_calls(self) horizons.globals.fife.sound.end() # these will call end() if the attribute still exists by the LivingObject magic self.ingame_gui = None # keep this before world if hasattr(self, 'world'): # must be called before the world ref is gone, but may not exist yet while loading self.world.end() self.world = None self.view = None self.manager = None self.timer = None self.scenario_eventhandler = None Scheduler().end() Scheduler.destroy_instance() self.selected_instances = None self.selection_groups = None self._clear_caches() # discard() in case loading failed and we did not yet subscribe SettingChanged.discard(self._on_setting_changed) MessageBus().reset()
def end(self): self.disable() self.world = None self.session = None self.renderer = None if self.use_rotation: SettingChanged.unsubscribe(self._on_setting_changed)
def end(self): self.log.debug("Ending session") self.is_alive = False # Has to be done here, cause the manager uses Scheduler! Scheduler().rem_all_classinst_calls(self) ExtScheduler().rem_all_classinst_calls(self) horizons.globals.fife.sound.end() # these will call end() if the attribute still exists by the LivingObject magic self.ingame_gui = None # keep this before world self.world.end() # must be called before the world ref is gone self.world = None self.view = None self.manager = None self.timer = None self.scenario_eventhandler = None Scheduler().end() Scheduler.destroy_instance() self.selected_instances = None self.selection_groups = None horizons.main._modules.session = None self._clear_caches() # subscriptions shouldn't survive listeners (except the main Gui) self.gui.unsubscribe() SettingChanged.unsubscribe(self._on_setting_changed) MessageBus().reset() self.gui.subscribe()
def set(self, module, name, val, extra_attrs=None): if extra_attrs is None: extra_attrs = {} # that's bad to have as default value # catch events for settings that should be displayed in another way than they should be saved if module == UH_MODULE and name == "Language": val = LANGUAGENAMES.get_by_value(val) SettingChanged.broadcast(self, name, self.get(module, name), val) return super(SettingsDialog, self).set(module, name, val, extra_attrs)
def __init__(self, position, session, view, targetrenderer, imagemanager, renderer=None, world=None, cam_border=True, use_rotation=True, on_click=None, preview=False, tooltip=None): """ @param position: a Rect or a Pychan Icon, where we will draw to @param world: World object or fake thereof @param view: View object for cam control. Can be None to disable this @param renderer: renderer to be used if position isn't an icon @param targetrenderer: fife target renderer for drawing on icons @param imagemanager: fife imagemanager for drawing on icons @param cam_border: boolean, whether to draw the cam border @param use_rotation: boolean, whether to use rotation (it must also be enabled in the settings) @param on_click: function taking 1 argument or None for scrolling @param preview: flag, whether to only show the map as preview @param tooltip: always show this tooltip when cursor hovers over minimap NOTE: Preview generation in a different process overwrites this method. """ if isinstance(position, Rect): self.location = position self.renderer = renderer else: # assume icon self.location = Rect.init_from_topleft_and_size(0, 0, position.width, position.height) self.icon = position self.use_overlay_icon(self.icon) # FIXME PY3 width / height of icon is sometimes zero. Why? if self.location.height == 0 or self.location.width == 0: self.location = Rect.init_from_topleft_and_size(0, 0, 128, 128) self.session = session self.world = world if self.world: self._update_world_to_minimap_ratio() self.view = view self.rotation = 0 self.fixed_tooltip = tooltip self.click_handler = on_click if on_click is not None else self.default_on_click self.cam_border = cam_border self.use_rotation = use_rotation self.preview = preview self.location_center = self.location.center self._id = str(next(self.__class__.__minimap_id_counter)) # internal identifier, used for allocating resources self._image_size_cache = {} # internal detail self.imagemanager = imagemanager self.minimap_image = _MinimapImage(self, targetrenderer) self._rotation_setting = horizons.globals.fife.get_uh_setting("MinimapRotation") if self.use_rotation: SettingChanged.subscribe(self._on_setting_changed)
def __init__(self, position, session, view, targetrenderer, imagemanager, renderer=None, world=None, cam_border=True, use_rotation=True, on_click=None, preview=False, tooltip=None): """ @param position: a Rect or a Pychan Icon, where we will draw to @param world: World object or fake thereof @param view: View object for cam control. Can be None to disable this @param renderer: renderer to be used if position isn't an icon @param targetrenderer: fife target rendererfor drawing on icons @param imagemanager: fife imagemanager for drawing on icons @param cam_border: boolean, whether to draw the cam border @param use_rotation: boolean, whether to use rotation (it must also be enabled in the settings) @param on_click: function taking 1 argument or None for scrolling @param preview: flag, whether to only show the map as preview @param tooltip: always show this tooltip when cursor hovers over minimap """ if isinstance(position, Rect): self.location = position self.renderer = renderer else: # assume icon self.location = Rect.init_from_topleft_and_size(0, 0, position.width, position.height) self.icon = position self.use_overlay_icon(self.icon) self.session = session self.world = world if self.world: self._update_world_to_minimap_ratio() self.view = view self.rotation = 0 self.fixed_tooltip = tooltip if on_click is not None: self.on_click = on_click self.cam_border = cam_border self.use_rotation = use_rotation self.preview = preview self.location_center = self.location.center self._id = str(self.__class__.__minimap_id_counter.next()) # internal identifier, used for allocating resources self._image_size_cache = {} # internal detail self.imagemanager = imagemanager self.minimap_image = _MinimapImage(self, targetrenderer) #import random #ExtScheduler().add_new_object(lambda : self.highlight( (50+random.randint(-50,50), random.randint(-50,50) + 50 )), self, 2, loops=-1) self._rotation_setting = horizons.globals.fife.get_uh_setting("MinimapRotation") if self.use_rotation: SettingChanged.subscribe(self._on_setting_changed)
def __init__(self, renderer, layer): """ @param renderer: Renderer used to render the icons @param layer: map layer, needed to place icon """ self.layer = layer self.renderer = renderer self.run = {} self.animation_duration = 20 # The duration how long the image moves up self.animation_steps = 1 # The steps that the image makes every run self.background = "content/gui/images/background/produced_notification.png" if bool(horizons.globals.fife.get_uh_setting("ShowResourceIcons")): self.enable() SettingChanged.subscribe(self._on_setting_changed)
def start(self): """Actually starts the game.""" self.timer.activate() self.scenario_eventhandler.start() self.reset_autosave() SettingChanged.subscribe(self._on_setting_changed)
def end(self): self.disable() self.run = None self.renderer = None SettingChanged.unsubscribe(self._on_setting_changed)