def __calcAge(self): """ Zur Berechnung des Alters werden Geburtstag und Datum im Spiel herangezogen. """ age = Calc.years(self.dateBirth, self.dateGame) if self.__age != age: ageCtagoryChanged = False if Config.getAge(self.__age) != Config.getAge(age): ageCtagoryChanged = True self.__age = age self.ageChanged.emit(age) if ageCtagoryChanged: self.ageChanged[str].emit(Config.getAge(age))
def __calcAge(self): """ Zur Berechnung des Alters werden Geburtstag und Datum im Spiel herangezogen. """ age = Calc.years(self.dateBirth, self.dateGame) if self.__age != age: ageCtagoryChanged = False if Config.getAge(self.__age) != Config.getAge(age): ageCtagoryChanged = True self.__age = age self.ageChanged.emit(age) if ageCtagoryChanged: self.ageChanged[str].emit(Config.getAge(age))
def warnHeightChange(self, newHeight): """ Ändert sich die Körpergröße zu sehr, sollautomatisch der Merit Giant bzw. der Flaw Dwarf vorgeschlagen werden. """ ## Wird der Charkater gerade geladen, werden keine Warnungen gezeigt und automatisch davon ausgegangen, daß der Anwender sie auch akzeptieren würde. if self.__character.isLoading: return True else: smallTrait = "Dwarf Flaw" if self.__character.age < Config.AGE_ADULT: smallTrait = "Tiny Merit" title = self.tr("Too big") text = self.tr( "To be this big, the character needs to purchase the Giant Merit." ) if newHeight <= Config.HEIGHT_DWARF_MAX[Config.getAge( self.__character.age)]: title = self.tr("Too small") text = self.tr( "To be this small, the character needs to get the {}.". format(smallTrait)) ret = QMessageBox.warning( self, title, self.tr("{} Do you want that to happen?".format(text)), QMessageBox.Yes | QMessageBox.No) if ret == QMessageBox.StandardButton.No: return False else: return True
def updateHeight(self): """ Werden der Giant-Merit oder der Dwarf-Flaw verändert, muß die Körpergröße angepaßt werden. """ giantTrait = self.__character.traits["Merit"]["Physical"]["Giant"] smallTrait = self.__character.traits["Flaw"]["Physical"]["Dwarf"] if self.__character.age < Config.AGE_ADULT: giantTrait = self.__character.traits["Merit"]["Physical"]["GiantKid"] smallTrait = self.__character.traits["Merit"]["Physical"]["Tiny"] ageText = Config.getAge(self.__character.age) if giantTrait.value > 0 and self.ui.doubleSpinBox_height.value() < Config.HEIGHT_GIANT_MIN[ageText]: self.ui.doubleSpinBox_height.setValue(Config.HEIGHT_GIANT_MIN[ageText]) self.notificationSent.emit(self.tr("Height changed to {} meters".format(Config.HEIGHT_GIANT_MIN[ageText]))) elif giantTrait.value < 1 and self.ui.doubleSpinBox_height.value() >= Config.HEIGHT_GIANT_MIN[ageText]: newHeight = Config.HEIGHT_GIANT_MIN[ageText] - 0.01 self.ui.doubleSpinBox_height.setValue(newHeight) self.notificationSent.emit(self.tr("Height changed to {} meters".format(newHeight))) elif smallTrait.value > 0 and self.ui.doubleSpinBox_height.value() > Config.HEIGHT_DWARF_MAX[ageText]: self.ui.doubleSpinBox_height.setValue(Config.HEIGHT_DWARF_MAX[ageText]) self.notificationSent.emit(self.tr("Height changed to {} meters".format(Config.HEIGHT_DWARF_MAX[ageText]))) elif smallTrait.value < 1 and self.ui.doubleSpinBox_height.value() <= Config.HEIGHT_DWARF_MAX[ageText]: newHeight = Config.HEIGHT_DWARF_MAX[ageText] + 0.01 self.ui.doubleSpinBox_height.setValue(newHeight) self.notificationSent.emit(self.tr("Height changed to {} meters".format(newHeight)))
def warnHeightChange(self, newHeight): """ Ändert sich die Körpergröße zu sehr, sollautomatisch der Merit Giant bzw. der Flaw Dwarf vorgeschlagen werden. """ ## Wird der Charkater gerade geladen, werden keine Warnungen gezeigt und automatisch davon ausgegangen, daß der Anwender sie auch akzeptieren würde. if self.__character.isLoading: return True else: smallTrait = "Dwarf Flaw" if self.__character.age < Config.AGE_ADULT: smallTrait = "Tiny Merit" title = self.tr("Too big") text = self.tr("To be this big, the character needs to purchase the Giant Merit.") if newHeight <= Config.HEIGHT_DWARF_MAX[Config.getAge(self.__character.age)]: title = self.tr("Too small") text = self.tr("To be this small, the character needs to get the {}.".format(smallTrait)) ret = QMessageBox.warning( self, title, self.tr( "{} Do you want that to happen?".format(text) ), QMessageBox.Yes | QMessageBox.No ) if ret == QMessageBox.StandardButton.No: return False else: return True
def emitHideReasonChanged(self): #Debug.debug(Config.getAge(self._character.age), self._character.era) #ageStr = Config.AGES[0] #if self._character.age < Config.AGE_ADULT: #ageStr = Config.AGES[1] ageStr = Config.getAge(self._character.age) eraStr = self._character.era self.hideReasonChanged.emit(self._character.species, ageStr, eraStr)
def emitHideReasonChanged(self): #Debug.debug(Config.getAge(self._character.age), self._character.era) #ageStr = Config.AGES[0] #if self._character.age < Config.AGE_ADULT: #ageStr = Config.AGES[1] ageStr = Config.getAge(self._character.age) eraStr = self._character.era self.hideReasonChanged.emit(self._character.species, ageStr, eraStr)
def deselctTraitsWithWrongAge(self, age): """ \todo Man sollte nicht bei jedem Alterswechsel über alle Eigenschaften laufen, sondern zu Beginn des Programms alle Eigenschaften mit "Kid" bzw. "Adult" mit ageChanged verknüpfen. """ for typ in self.__traits: for category in self.__traits[typ]: for trait in self.__traits[typ][category].values(): if type(trait) == StandardTrait and trait.age and trait.age != Config.getAge(self.age) and trait.value > 0: trait.value = 0
def deselctTraitsWithWrongAge(self, age): """ \todo Man sollte nicht bei jedem Alterswechsel über alle Eigenschaften laufen, sondern zu Beginn des Programms alle Eigenschaften mit "Kid" bzw. "Adult" mit ageChanged verknüpfen. """ for typ in self.__traits: for category in self.__traits[typ]: for trait in self.__traits[typ][category].values(): if type( trait ) == StandardTrait and trait.age and trait.age != Config.getAge( self.age) and trait.value > 0: trait.value = 0
def setCharacterHeight(self, height): """ Ändert sich die Körpergröße zu sehr, sollautomatisch der Merit Giant bzw. der Flaw Dwarf vorgeschlagen werden. \todo Bei Kindern heißt der Dwarf-Flaw "Tiny" """ ageText = Config.getAge(self.__character.age) giantTrait = self.__character.traits["Merit"]["Physical"]["Giant"] smallTrait = self.__character.traits["Flaw"]["Physical"]["Dwarf"] smallAddNotification = self.tr("Added the Dwarf Flaw.") smallRemoveNotification = self.tr("Removed the Dwarf Flaw.") if self.__character.age < Config.AGE_ADULT: giantTrait = self.__character.traits["Merit"]["Physical"][ "GiantKid"] smallTrait = self.__character.traits["Merit"]["Physical"]["Tiny"] smallAddNotification = self.tr("Added the Tiny Merit.") smallRemoveNotification = self.tr("Removed the Tiny Merit.") if height >= Config.HEIGHT_GIANT_MIN[ageText]: if giantTrait.value > 0: pass elif self.warnHeightChange(height): giantTrait.value = 5 self.notificationSent.emit(self.tr("Added the Giant Merit.")) else: self.ui.doubleSpinBox_height.setValue(self.__character.height) elif height <= Config.HEIGHT_DWARF_MAX[ageText]: if smallTrait.value > 0: pass elif self.warnHeightChange(height): smallTrait.value = 2 self.notificationSent.emit(smallAddNotification) else: self.ui.doubleSpinBox_height.setValue(self.__character.height) elif giantTrait.value: giantTrait.value = 0 self.notificationSent.emit(self.tr("Removed the Giant Merit.")) elif smallTrait.value: smallTrait.value = 0 self.notificationSent.emit(smallRemoveNotification) self.__character.height = height
def setCharacterHeight(self, height): """ Ändert sich die Körpergröße zu sehr, sollautomatisch der Merit Giant bzw. der Flaw Dwarf vorgeschlagen werden. \todo Bei Kindern heißt der Dwarf-Flaw "Tiny" """ ageText = Config.getAge(self.__character.age) giantTrait = self.__character.traits["Merit"]["Physical"]["Giant"] smallTrait = self.__character.traits["Flaw"]["Physical"]["Dwarf"] smallAddNotification = self.tr("Added the Dwarf Flaw.") smallRemoveNotification = self.tr("Removed the Dwarf Flaw.") if self.__character.age < Config.AGE_ADULT: giantTrait = self.__character.traits["Merit"]["Physical"]["GiantKid"] smallTrait = self.__character.traits["Merit"]["Physical"]["Tiny"] smallAddNotification = self.tr("Added the Tiny Merit.") smallRemoveNotification = self.tr("Removed the Tiny Merit.") if height >= Config.HEIGHT_GIANT_MIN[ageText]: if giantTrait.value > 0: pass elif self.warnHeightChange(height): giantTrait.value = 5 self.notificationSent.emit(self.tr("Added the Giant Merit.")) else: self.ui.doubleSpinBox_height.setValue(self.__character.height) elif height <= Config.HEIGHT_DWARF_MAX[ageText]: if smallTrait.value > 0: pass elif self.warnHeightChange(height): smallTrait.value = 2 self.notificationSent.emit(smallAddNotification) else: self.ui.doubleSpinBox_height.setValue(self.__character.height) elif giantTrait.value: giantTrait.value = 0 self.notificationSent.emit(self.tr("Removed the Giant Merit.")) elif smallTrait.value: smallTrait.value = 0 self.notificationSent.emit(smallRemoveNotification) self.__character.height = height
def updateHeight(self): """ Werden der Giant-Merit oder der Dwarf-Flaw verändert, muß die Körpergröße angepaßt werden. """ giantTrait = self.__character.traits["Merit"]["Physical"]["Giant"] smallTrait = self.__character.traits["Flaw"]["Physical"]["Dwarf"] if self.__character.age < Config.AGE_ADULT: giantTrait = self.__character.traits["Merit"]["Physical"][ "GiantKid"] smallTrait = self.__character.traits["Merit"]["Physical"]["Tiny"] ageText = Config.getAge(self.__character.age) if giantTrait.value > 0 and self.ui.doubleSpinBox_height.value( ) < Config.HEIGHT_GIANT_MIN[ageText]: self.ui.doubleSpinBox_height.setValue( Config.HEIGHT_GIANT_MIN[ageText]) self.notificationSent.emit( self.tr("Height changed to {} meters".format( Config.HEIGHT_GIANT_MIN[ageText]))) elif giantTrait.value < 1 and self.ui.doubleSpinBox_height.value( ) >= Config.HEIGHT_GIANT_MIN[ageText]: newHeight = Config.HEIGHT_GIANT_MIN[ageText] - 0.01 self.ui.doubleSpinBox_height.setValue(newHeight) self.notificationSent.emit( self.tr("Height changed to {} meters".format(newHeight))) elif smallTrait.value > 0 and self.ui.doubleSpinBox_height.value( ) > Config.HEIGHT_DWARF_MAX[ageText]: self.ui.doubleSpinBox_height.setValue( Config.HEIGHT_DWARF_MAX[ageText]) self.notificationSent.emit( self.tr("Height changed to {} meters".format( Config.HEIGHT_DWARF_MAX[ageText]))) elif smallTrait.value < 1 and self.ui.doubleSpinBox_height.value( ) <= Config.HEIGHT_DWARF_MAX[ageText]: newHeight = Config.HEIGHT_DWARF_MAX[ageText] + 0.01 self.ui.doubleSpinBox_height.setValue(newHeight) self.notificationSent.emit( self.tr("Height changed to {} meters".format(newHeight)))
def __emitTraitVisibleReasonChanged(self): ageText = Config.getAge(self.age) self.traitVisibleReasonChanged.emit(self.species, ageText, self.era, self.breed, self.faction)
def setHeightMinMax(self, age): self.ui.doubleSpinBox_height.setMinimum( Config.HEIGHT_MIN[Config.getAge(age)]) self.ui.doubleSpinBox_height.setMaximum( Config.HEIGHT_MAX[Config.getAge(age)])
def setHeightMinMax(self, age): self.ui.doubleSpinBox_height.setMinimum(Config.HEIGHT_MIN[Config.getAge(age)]) self.ui.doubleSpinBox_height.setMaximum(Config.HEIGHT_MAX[Config.getAge(age)])
def __emitTraitVisibleReasonChanged(self): ageText = Config.getAge(self.age) self.traitVisibleReasonChanged.emit(self.species, ageText, self.era, self.breed, self.faction)