def on_chime(self): """ Called chime action. Displaying call for help on artists and game design, introduces information for SoC applicants (if valid). """ AmbientSoundComponent.play_special("message") self.show_dialog(self.widgets['call_for_support'], {'okButton' : True}, onPressEscape = True)
def move_entry(self, entry, direction): """ moves an entry up or down """ position = self.widgets.index(entry) if position == len(self.widgets) and direction is "down" or position == 0 and direction is "up": AmbientSoundComponent.play_special("error") return if direction is "up": new_pos = position - 1 elif direction is "down": new_pos = position + 1 else: return vbox = self._gui.findChild(name="left_vbox") vbox.removeChildren(self.widgets) self.widgets.insert(new_pos, self.widgets.pop(position)) self._route_cmd("move_waypoint", position, direction) vbox.addChildren(self.widgets) self._gui.adaptLayout() self._resource_selection_area_layout_hack_fix()
def move_entry(self, entry, direction): """ moves an entry up or down """ position = self.widgets.index(entry) if position == len(self.widgets) and direction is 'down' or \ position == 0 and direction is 'up': AmbientSoundComponent.play_special('error') return if direction is 'up': new_pos = position - 1 elif direction is 'down': new_pos = position + 1 else: return vbox = self._gui.findChild(name="left_vbox") enabled = self.instance.route.enabled self.instance.route.disable() vbox.removeChildren(self.widgets) self.widgets.insert(new_pos,self.widgets.pop(position)) self.instance.route.move_waypoint(position, direction) vbox.addChildren(self.widgets) if enabled: self.instance.route.enable() self._gui.adaptLayout() self._resource_selection_area_layout_hack_fix()
def __join_game(self, game=None): """Joins a multiplayer game. Displays lobby for that specific game""" if game == None: game = self.__get_selected_game() if ( game.load is not None and SavegameAccessor.get_hash(SavegameManager.get_multiplayersave_map(game.mapname)) != game.load ): self.show_popup(_("Error"), self.current.findChild(name="save_missing_help_button").btn_text, size=1) return if game.get_uuid() == -1: # -1 signals no game AmbientSoundComponent.play_special("error") return if game.get_version() != NetworkInterface().get_clientversion(): self.show_popup( _("Wrong version"), # xgettext:python-format _( "The game's version differs from your version. Every player in a multiplayer game must use the same version. This can be fixed by every player updating to the latest version. Game version: {game_version} Your version: {own_version}" ).format(game_version=game.get_version(), own_version=NetworkInterface().get_clientversion()), ) return # actual join join_worked = NetworkInterface().joingame(game.get_uuid()) if not join_worked: return self.__apply_new_nickname() self.__show_gamelobby()
def __call__(self, issuer): """Execute the command @param issuer: the issuer of the command """ if self.position is None: AmbientSoundComponent.play_special(self.sound) else: AmbientSoundComponent.play_special(self.sound, Point(self.position[0], self.position[1]))
def speed_down(self): if self.speed_is_paused(): AmbientSoundComponent.play_special('error') return if self.timer.ticks_per_second in GAME_SPEED.TICK_RATES: i = GAME_SPEED.TICK_RATES.index(self.timer.ticks_per_second) if i > 0: self.speed_set(GAME_SPEED.TICK_RATES[i - 1]) else: self.speed_set(GAME_SPEED.TICK_RATES[0])
def _scroll(self, direction): """Scroll back or forth one message. @param direction: -1 or 1""" if len(self._widgets) == 0: return new_cur = self._cur_entry + direction if new_cur < 0 or new_cur >= len(self._widgets): return # invalid scroll self._cur_entry = new_cur AmbientSoundComponent.play_special('flippage') self._redraw_captainslog()
def _make_configuration_default(self, reset=False): """Saves current resources as default via game settings""" if reset: config = [] # meaning invalid else: config = json.dumps(self._get_current_resources()) horizons.main.fife.set_uh_setting("ResourceOverviewBarConfiguration", config) horizons.main.fife.save_settings() self._update_default_configuration() AmbientSoundComponent.play_special("success") if reset: # in the other case, it's already set self.redraw()
def mousePressed(self, evt): if evt.getButton() == fife.MouseEvent.LEFT: obj = self._get_object(evt) if obj and self._is_buildable(obj.id): self.session.set_cursor('building', Entities.buildings[obj.id]) elif obj: # object that is not buildable AmbientSoundComponent.play_special('error') self.on_escape() else: self.on_escape() evt.consume() elif evt.getButton() == fife.MouseEvent.RIGHT: self.on_escape() evt.consume() else: super(PipetteTool, self).mouseClicked(evt)
def append_warehouse(self, warehouse): """Add a warehouse to the list on the left side. @param warehouse: Set to add a specific one, else the selected one gets added. """ if len(self.widgets) >= self.MAX_ENTRIES: # reached max entries the gui can hold AmbientSoundComponent.play_special("error") return self._route_cmd("append", warehouse.worldid) self.add_gui_entry(warehouse) if self.resource_menu_shown: self.hide_resource_menu() self._check_no_entries_label() self._gui.adaptLayout()
def _add_message(self, message, sound=None): """Internal function for adding messages. Do not call directly. @param message: Message instance @param sound: path to soundfile""" self.active_messages.insert(0, message) if len(self.active_messages) > self.MAX_MESSAGES: self.active_messages.remove(self.active_messages[self.MAX_MESSAGES]) if sound: horizons.main.fife.play_sound('speech', sound) else: # play default msg sound AmbientSoundComponent.play_special('message') if message.x is not None and message.y is not None: self.session.ingame_gui.minimap.highlight( (message.x, message.y) ) self.draw_widget() self.show_text(0) ExtScheduler().add_new_object(self.hide_text, self, self.SHOW_NEW_MESSAGE_TEXT)
def set_active(self, production=None, active=True): super(MineProducer, self).set_active(production, active) # check if the user set it to waiting_for_res (which doesn't do anything) if active and self._get_current_state() == PRODUCTION.STATES.waiting_for_res: super(MineProducer, self).set_active(production, active=False) AmbientSoundComponent.play_special('error')