From 47ef98ca1b2d622dd9b8b2dc8b27c4b8616b256b Mon Sep 17 00:00:00 2001 From: cc9cii Date: Wed, 30 Jun 2021 10:09:56 +1000 Subject: [PATCH] Clean up RefIdData code for better legibility. --- apps/opencs/model/world/refiddata.cpp | 140 ++++---------------------- apps/opencs/model/world/refiddata.hpp | 10 ++ 2 files changed, 30 insertions(+), 120 deletions(-) diff --git a/apps/opencs/model/world/refiddata.cpp b/apps/opencs/model/world/refiddata.cpp index 4f72bae92e..79a2efdcc8 100644 --- a/apps/opencs/model/world/refiddata.cpp +++ b/apps/opencs/model/world/refiddata.cpp @@ -93,126 +93,26 @@ unsigned int CSMWorld::RefIdData::getRecordFlags (const std::string& id) const switch (localIndex.second) { - case UniversalId::Type_Activator: - { - const RefIdDataContainer& records = getActivators(); - const ESM::Activator& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } - case UniversalId::Type_Potion: - { - const RefIdDataContainer& records = getPotions(); - const ESM::Potion& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } - case UniversalId::Type_Apparatus: - { - const RefIdDataContainer& records = getApparati(); - const ESM::Apparatus& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } - case UniversalId::Type_Armor: - { - const RefIdDataContainer& records = getArmors(); - const ESM::Armor& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } - case UniversalId::Type_Book: - { - const RefIdDataContainer& records = getBooks(); - const ESM::Book& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } - case UniversalId::Type_Clothing: - { - const RefIdDataContainer& records = getClothing(); - const ESM::Clothing& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } - case UniversalId::Type_Container: - { - const RefIdDataContainer& records = getContainers(); - const ESM::Container& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } - case UniversalId::Type_Creature: - { - const RefIdDataContainer& records = getCreatures(); - const ESM::Creature& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } - case UniversalId::Type_Door: - { - const RefIdDataContainer& records = getDoors(); - const ESM::Door& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } - case UniversalId::Type_Ingredient: - { - const RefIdDataContainer& records = getIngredients(); - const ESM::Ingredient& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } - case UniversalId::Type_CreatureLevelledList: - { - const RefIdDataContainer& records = getCreatureLevelledLists(); - const ESM::CreatureLevList& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } - case UniversalId::Type_ItemLevelledList: - { - const RefIdDataContainer& records = getItemLevelledList(); - const ESM::ItemLevList& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } - case UniversalId::Type_Light: - { - const RefIdDataContainer& records = getLights(); - const ESM::Light& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } - case UniversalId::Type_Lockpick: - { - const RefIdDataContainer& records = getLocpicks(); - const ESM::Lockpick& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } - case UniversalId::Type_Miscellaneous: - { - const RefIdDataContainer& records = getMiscellaneous(); - const ESM::Miscellaneous& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } - case UniversalId::Type_Npc: - { - const RefIdDataContainer& records = getNPCs(); - const ESM::NPC& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } - case UniversalId::Type_Probe: - { - const RefIdDataContainer& records = getProbes(); - const ESM::Probe& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } - case UniversalId::Type_Repair: - { - const RefIdDataContainer& records = getRepairs(); - const ESM::Repair& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } - case UniversalId::Type_Static: - { - const RefIdDataContainer& records = getStatics(); - const ESM::Static& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } - case UniversalId::Type_Weapon: - { - const RefIdDataContainer& records = getWeapons(); - const ESM::Weapon& record = dynamic_cast(records.getRecord(localIndex.first)); - return record.mRecordFlags; - } + case UniversalId::Type_Activator: return mActivators.getRecordFlags(localIndex.first); + case UniversalId::Type_Potion: return mPotions.getRecordFlags(localIndex.first); + case UniversalId::Type_Apparatus: return mApparati.getRecordFlags(localIndex.first); + case UniversalId::Type_Armor: return mArmors.getRecordFlags(localIndex.first); + case UniversalId::Type_Book: return mBooks.getRecordFlags(localIndex.first); + case UniversalId::Type_Clothing: return mClothing.getRecordFlags(localIndex.first); + case UniversalId::Type_Container: return mContainers.getRecordFlags(localIndex.first); + case UniversalId::Type_Creature: return mCreatures.getRecordFlags(localIndex.first); + case UniversalId::Type_Door: return mDoors.getRecordFlags(localIndex.first); + case UniversalId::Type_Ingredient: return mIngredients.getRecordFlags(localIndex.first); + case UniversalId::Type_CreatureLevelledList: return mCreatureLevelledLists.getRecordFlags(localIndex.first); + case UniversalId::Type_ItemLevelledList: return mItemLevelledLists.getRecordFlags(localIndex.first); + case UniversalId::Type_Light: return mLights.getRecordFlags(localIndex.first); + case UniversalId::Type_Lockpick: return mLockpicks.getRecordFlags(localIndex.first); + case UniversalId::Type_Miscellaneous: return mMiscellaneous.getRecordFlags(localIndex.first); + case UniversalId::Type_Npc: return mNpcs.getRecordFlags(localIndex.first); + case UniversalId::Type_Probe: return mProbes.getRecordFlags(localIndex.first); + case UniversalId::Type_Repair: return mRepairs.getRecordFlags(localIndex.first); + case UniversalId::Type_Static: return mStatics.getRecordFlags(localIndex.first); + case UniversalId::Type_Weapon: return mWeapons.getRecordFlags(localIndex.first); default: break; } diff --git a/apps/opencs/model/world/refiddata.hpp b/apps/opencs/model/world/refiddata.hpp index da6ac7b154..ab5269b390 100644 --- a/apps/opencs/model/world/refiddata.hpp +++ b/apps/opencs/model/world/refiddata.hpp @@ -47,6 +47,8 @@ namespace CSMWorld virtual RecordBase& getRecord (int index)= 0; + virtual unsigned int getRecordFlags (int index) const = 0; + virtual void appendRecord (const std::string& id, bool base) = 0; virtual void insertRecord (RecordBase& record) = 0; @@ -72,6 +74,8 @@ namespace CSMWorld RecordBase& getRecord (int index) override; + unsigned int getRecordFlags (int index) const override; + void appendRecord (const std::string& id, bool base) override; void insertRecord (RecordBase& record) override; @@ -111,6 +115,12 @@ namespace CSMWorld return mContainer.at (index); } + template + unsigned int RefIdDataContainer::getRecordFlags (int index) const + { + return mContainer.at (index).get().mRecordFlags; + } + template void RefIdDataContainer::appendRecord (const std::string& id, bool base) {