diff options
-rw-r--r-- | src/being/being.cpp | 24 | ||||
-rw-r--r-- | src/being/being.h | 11 | ||||
-rw-r--r-- | src/gui/windows/charcreatedialog.cpp | 6 | ||||
-rw-r--r-- | src/resources/db/itemdb.cpp | 25 | ||||
-rw-r--r-- | src/resources/db/itemdb.h | 2 |
5 files changed, 30 insertions, 38 deletions
diff --git a/src/being/being.cpp b/src/being/being.cpp index a0add020e..49fb6a480 100644 --- a/src/being/being.cpp +++ b/src/being/being.cpp @@ -103,9 +103,6 @@ const unsigned int CACHE_SIZE = 50; -int Being::mNumberOfHairstyles = 1; -int Being::mNumberOfRaces = 1; - int Being::mUpdateConfigTime = 0; unsigned int Being::mConfLineLim = 0; int Being::mSpeechType = 0; @@ -2625,27 +2622,6 @@ void Being::dumpSprites() const restrict2 } } -void Being::load() -{ - // Hairstyles are encoded as negative numbers. Count how far negative - // we can go. - int hairstyles = 1; - while (ItemDB::get(-hairstyles).getSprite(Gender::MALE, - BeingTypeId_zero) != paths.getStringValue("spriteErrorFile")) - { - hairstyles ++; - } - mNumberOfHairstyles = hairstyles; - - int races = 100; - while (ItemDB::get(-races).getSprite(Gender::MALE, BeingTypeId_zero) != - paths.getStringValue("spriteErrorFile")) - { - races ++; - } - mNumberOfRaces = races - 100; -} - void Being::updateName() restrict2 { if (mShowName) diff --git a/src/being/being.h b/src/being/being.h index afcc61839..1fd7aa0ba 100644 --- a/src/being/being.h +++ b/src/being/being.h @@ -327,12 +327,6 @@ class Being notfinal : public ActorSprite, const std::string &restrict color = "") restrict2; /** - * Get the number of hairstyles implemented - */ - static int getNumOfHairstyles() noexcept A_WARN_UNUSED - { return mNumberOfHairstyles; } - - /** * Get the number of layers used to draw the being */ int getNumberOfLayers() const restrict2 override A_WARN_UNUSED @@ -548,8 +542,6 @@ class Being notfinal : public ActorSprite, const int width, const int height) const restrict2 A_NONNULL(2); - static void load(); - void optionChanged(const std::string &restrict value) restrict2 override; @@ -1029,9 +1021,6 @@ class Being notfinal : public ActorSprite, /** Engine-related infos about weapon. */ const ItemInfo *restrict mEquippedWeapon; - static int mNumberOfHairstyles; /** Number of hair styles in use */ - static int mNumberOfRaces; /** Number of races in use */ - Path mPath; Text *restrict mText; const Color *restrict mTextColor; diff --git a/src/gui/windows/charcreatedialog.cpp b/src/gui/windows/charcreatedialog.cpp index b172f788c..91e1c16cc 100644 --- a/src/gui/windows/charcreatedialog.cpp +++ b/src/gui/windows/charcreatedialog.cpp @@ -160,7 +160,7 @@ CharCreateDialog::CharCreateDialog(CharSelectDialog *const parent, if (!maxHairColor) maxHairColor = ColorDB::getHairSize(); if (!maxHairStyle) - maxHairStyle = mPlayer->getNumOfHairstyles(); + maxHairStyle = ItemDB::getNumOfHairstyles(); if (maxHairStyle) { @@ -723,9 +723,9 @@ void CharCreateDialog::setDefaultGender(const GenderT gender) void CharCreateDialog::updateHair() { if (mHairStyle <= 0) - mHairStyle = Being::getNumOfHairstyles() - 1; + mHairStyle = ItemDB::getNumOfHairstyles() - 1; else - mHairStyle %= Being::getNumOfHairstyles(); + mHairStyle %= ItemDB::getNumOfHairstyles(); if (mHairStyle < CAST_S32(minHairStyle) || mHairStyle > CAST_S32(maxHairStyle)) { diff --git a/src/resources/db/itemdb.cpp b/src/resources/db/itemdb.cpp index 3b942797d..cd860df71 100644 --- a/src/resources/db/itemdb.cpp +++ b/src/resources/db/itemdb.cpp @@ -55,6 +55,8 @@ namespace StringVect mTagNames; StringIntMap mTags; std::map<std::string, ItemSoundEvent::Type> mSoundNames; + int mNumberOfHairstyles = 1; + int mNumberOfRaces = 1; } // namespace // Forward declarations @@ -255,6 +257,24 @@ void ItemDB::load() ".xml"); FOR_EACH (StringVectCIter, it, list) loadXmlFile(*it, tagNum); + + // Hairstyles are encoded as negative numbers. Count how far negative + // we can go. + int hairstyles = 1; + while (ItemDB::get(-hairstyles).getSprite(Gender::MALE, + BeingTypeId_zero) != paths.getStringValue("spriteErrorFile")) + { + hairstyles ++; + } + mNumberOfHairstyles = hairstyles; + + int races = 100; + while (ItemDB::get(-races).getSprite(Gender::MALE, BeingTypeId_zero) != + paths.getStringValue("spriteErrorFile")) + { + races ++; + } + mNumberOfRaces = races - 100; } void ItemDB::loadXmlFile(const std::string &fileName, int &tagNum) @@ -1072,6 +1092,11 @@ std::string ItemDB::getNamesStr(const std::vector<int> &parts) return str; } +int ItemDB::getNumOfHairstyles() +{ + return mNumberOfHairstyles; +} + #ifdef UNITTESTS ItemDB::NamedItemInfos &ItemDB::getNamedItemInfosTest() { diff --git a/src/resources/db/itemdb.h b/src/resources/db/itemdb.h index 7cc47b121..e855c80ca 100644 --- a/src/resources/db/itemdb.h +++ b/src/resources/db/itemdb.h @@ -54,6 +54,8 @@ namespace ItemDB const ItemInfo &get(const int id) A_WARN_UNUSED; const ItemInfo &get(const std::string &name) A_WARN_UNUSED; + int getNumOfHairstyles() A_WARN_UNUSED; + // Items database typedef std::map<int, ItemInfo*> ItemInfos; typedef std::map<std::string, ItemInfo*> NamedItemInfos; |