def dequip(self): if not self.is_equipped: return self.is_equipped = False Messages.new( 'Dequipped ' + self.owner.name + ' from ' + self.slot_str + '.', libtcod.light_yellow)
def _date_edited(self): """ Date fields were edited. Check their content for invalid date ranges. :return: """ if self.ui.startDatetimeEdit.date() == self.ui.endDatetimeEdit.date(): self.ui.startDatetimeEdit.setStyleSheet( "background-color: #FC9DB7;") self.ui.endDatetimeEdit.setStyleSheet("background-color: #FC9DB7;") self.statusBar().showMessage(Messages.start_end_date_warning(), 5000) self.ui.downloadButton.setEnabled(False) else: self.ui.startDatetimeEdit.setStyleSheet("background-color: white;") self.ui.endDatetimeEdit.setStyleSheet("background-color: white;") self.ui.downloadButton.setEnabled(True) if self.ui.endDatetimeEdit.date() < self.ui.startDatetimeEdit.date( ): self.ui.endDatetimeEdit.setStyleSheet( "background-color: #FC9DB7;") self.statusBar().showMessage(Messages.end_date_warning(), 5000) self.ui.downloadButton.setEnabled(False) else: self.ui.endDatetimeEdit.setStyleSheet( "background-color: white;") self.statusBar().showMessage("", 50) self.ui.downloadButton.setEnabled(True)
def inspect(self): if self.owner.equipment: item = self.owner.equipment stats_list = [] if item.power_bonus != 0: stats_list.append(str(item.power_bonus) + ' Power') if item.defense_bonus != 0: stats_list.append(str(item.defense_bonus) + ' Defense') if item.armor_bonus != 0: stats_list.append(str(item.armor_bonus) + ' AC') if item.magic_bonus != 0: stats_list.append(str(item.magic_bonus) + ' Magic') if item.max_hp_bonus != 0: stats_list.append(str(item.max_hp_bonus) + ' Max HP') if item.max_mana_bonus != 0: stats_list.append(str(item.max_mana_bonus) + ' Max Mana') if item.fighting_bonus != 0: stats_list.append(str(item.fighting_bonus) + ' Fighting') if item.shielding_bonus != 0: stats_list.append(str(item.shielding_bonus) + ' Shielding') if item.conjuring_bonus != 0: stats_list.append(str(item.conjuring_bonus) + ' Conjuring') if item.archery_bonus != 0: stats_list.append(str(item.archery_bonus) + ' Archery') if item.hexes_bonus != 0: stats_list.append(str(item.hexes_bonus) + ' Hexes') if item.evasion_bonus != 0: stats_list.append(str(item.evasion_bonus) + ' Evasion') if item.accuracy_bonus != 0: stats_list.append(str(item.accuracy_bonus) + ' Accuracy') if item.speed_bonus != 0: stats_list.append(str(item.speed_bonus) + ' Speed') if item.dmg_reduction_bonus != 0: stats_list.append('all physical damage taken reduced by ' + str(item.dmg_reduction_bonus)) if item.heal_kill_bonus != 0: stats_list.append('chance to restore health or mana on kill') if item.magic_resist_bonus != 0: stats_list.append( str(item.magic_resist_bonus * 100) + ' %% magic Resistance') if item.lifesteal_bonus != 0: stats_list.append(str(item.lifesteal_bonus) + ' lifesteal') string = ', '.join(stats_list) else: string = '' youseea = 'You see a' if self.owner.name[0] in 'aeiouAEIOU': youseea += 'n ' else: youseea += ' ' if string != '': text = youseea + self.owner.name + '. ' + self.description + ' It yields ' + string + '.' else: text = youseea + self.owner.name + '. ' + self.description Messages.new(text, libtcod.light_gray)
def equip(self): assert self.owner.inventory is not None, 'cannot equip item without an inventory!' old_equip = self.owner.inventory.get_equipped_in_slot(self.slot) if old_equip is not None: old_equip.dequip() self.is_equipped = True Messages.new( 'Equipped ' + self.owner.name + ' on ' + self.slot_str + '.', libtcod.light_green)
def drop(self, player): self.owner.inventory.items.remove(self.owner) self.owner.x = player.x self.owner.y = player.y youdroppeda = 'You dropped a' if self.owner.name[0] in 'aeiouAEIOU': youdroppeda += 'n ' else: youdroppeda += ' ' if self.owner.equipment: self.owner.equipment.dequip() Messages.new(youdroppeda + self.owner.name + '.', libtcod.yellow)
def use(self, player): if self.owner.equipment: if not self.owner.equipment.prof_restriction: self.owner.equipment.toggle_equip() elif player.prof not in self.owner.equipment.prof_restriction: Messages.new('You cannot make use of this item!', libtcod.red) else: self.owner.equipment.toggle_equip() elif self.use_function is None: Messages.new('The ' + self.owner.name + ' cannot be used.') elif self.use_function() != 'cancelled': self.owner.inventory.items.remove(self.owner) elif self.spellname is not None: raise NotImplementedError( 'append_spell(spellname) not implemented')
def monster_death(monster_entity): Messages.new('You have slain the ' + monster_entity.name + '!', libtcod.orange) monster_entity.char = 'x' monster_entity.color = libtcod.dark_red monster_entity.blocks = False monster_entity.fighter = None monster_entity.ai = None monster_entity.name = 'remains of ' + monster_entity.name monster_entity.send_to_back(DeathFunctions.world.objects) try: monster_entity.timeobj.release() except AttributeError: print('Tried to release ' + monster_entity.name + ' but no time component found!')
def set_apikey(app, settings): key = QInputDialog.getText(app, QCoreApplication.translate("setapikeyheading", "Aseta tunnisteavain"), Messages.set_apikey_dialog(), text=app.api.get_apikey()) if key[1]: # todo: tänne kutsu oikeaan paikkaan apikey = key[0].strip() settings.setValue("apikey", apikey) app.api.set_apikey(apikey)
def _background_fmicatalogue_error(self, err): """ Handle errors which happened in fmi catalogue retrieval background thread. This is a error callback function provided for BackgroundTask class on construction. :param err: :return: """ if err.error_code == 'NODATASETS': self.show_error_alerts(Messages.no_datasets_found()) elif err.error_code == 'METADATA_RETRIEVAL': self.show_error_alerts(Messages.fmicatalogue_error()) else: self.show_error_alerts(Messages.unknown_error() + str(err)) self._current_available_datasets = None self._current_selected_dataset = None self.ui.dataSelectionCombobox.clear() self._set_ui_controls_status()
def _updates_information_retrieved(self, result): self.thread.quit() if result['status'] == 'success': # Update version info to the dialog their_version = result['their_version'] self.ui.newVersion_label.setText(self.ui.newVersion_label.text() + their_version) else: self.ui.newVersion_label.setText(self.ui.newVersion_label.text() + Messages.failed_to_get_version())
def begin_download(self, request_params, request_function): self.progressDialog = QProgressDialog(self.parent, Qt.WindowSystemMenuHint | Qt.WindowTitleHint) self.progressDialog.setWindowTitle(Messages.downloading_weatherdata()) self.progressDialog.setAutoClose(False) self.progressDialog.setCancelButton(None) self.progressDialog.setLabelText(Messages.downloading_weatherdata()) self.progressDialog.open() self.progressDialog.setValue(0) self.request_params = request_params self.worker = DownloadWorker(request_params, request_function) self.worker.threadUpdateSignal.connect(self._update_progress_bar) self.worker.threadExceptionSignal.connect(self._loading_failed) self.worker.threadResultsSignal.connect(self._process_finished) self.worker.threadChangeTaskSignal.connect(self._change_progress_dialog) self.thread = QThread() self.worker.moveToThread(self.thread) self.thread.started.connect(self.worker.download_data) self.thread.start()
def _choose_place_to_save_data(self, dataframe): paths = QStandardPaths.standardLocations(0) if len(paths) > 0: path = paths[0] else: path = "" filename = QFileDialog.getSaveFileName( self, Messages.save_weatherdata_csv(), path + "/weather_data.csv", "Comma separated values CSV (*.csv);;All files (*)") if filename[0] != "": self._save_to_csv(dataframe, filename[0])
def save_data_to_csv(self, dataframe, request_params): start_date = datetime.strftime(request_params['starttime'], '%Y-%m-%d') end_date = datetime.strftime(request_params['endtime'], '%Y-%m-%d') paths = QStandardPaths.standardLocations(0) if len(paths) > 0: path = paths[0] else: path = "" filename = QFileDialog.getSaveFileName( self.app, Messages.save_weatherdata_csv(), "{}/fmisid-{}_{}_to_{}_weather_data.csv".format( path, request_params['fmisid'], start_date, end_date), "Comma separated values CSV (*.csv);;All files (*)") if filename[0] != "": self._save_to_csv(dataframe, filename[0])
def _loading_failed(self, error): self.progressDialog.cancel() try: raise error except RequestException as e: if e.error_code == 400: # command to ask data probably invalid or there is a problem with current station self.parent.show_error_alerts(Messages.weatherstation_error() + str(e)) else: self.parent.show_error_alerts(Messages.unknown_error() + str(e)) except InvalidApikeyException: # apikey is invalid self.parent.show_error_alerts(Messages.request_failed_error()) except NoDataException: self.parent.show_error_alerts(Messages.date_not_found_error()) except QueryLimitException as e: self.parent.show_error_alerts(Messages.query_limit_error().format(e.wait_time)) except Exception as e: self.parent.show_error_alerts(Messages.unknown_error() + str(e))
def _change_to_parsing(self): self.threadChangeTaskSignal.emit(Messages.parsing_weatherdata())
def _load_api_settings(self, app): stored_apikey = self.value("apikey") if stored_apikey is not None: app.api.set_apikey(stored_apikey) else: app.statusBar().showMessage(Messages.set_apikey_message(), 0)
def player_death(player_entity): Messages.new('You have died!', libtcod.red) player_entity.char = 'X' player_entity.color = libtcod.dark_red DeathFunctions.world.game_state = GameState.PLAYER_DEAD