From 877f6747be5dcd8a9204641543f40979bd1d3c4f Mon Sep 17 00:00:00 2001 From: Evil Eye Date: Fri, 26 May 2023 12:16:47 +0200 Subject: [PATCH] Deduplicate specialization code --- apps/openmw/mwgui/class.cpp | 11 ++++------- apps/openmw/mwgui/tooltips.cpp | 10 +++------- components/esm/defs.hpp | 7 ------- components/esm3/loadclas.cpp | 4 +--- components/esm3/loadclas.hpp | 3 +-- 5 files changed, 9 insertions(+), 26 deletions(-) diff --git a/apps/openmw/mwgui/class.cpp b/apps/openmw/mwgui/class.cpp index 110df15cf0..68c1465743 100644 --- a/apps/openmw/mwgui/class.cpp +++ b/apps/openmw/mwgui/class.cpp @@ -254,10 +254,8 @@ namespace MWGui ESM::Class::Specialization specialization = static_cast(klass->mData.mSpecialization); - static const std::string_view specIds[3] - = { "sSpecializationCombat", "sSpecializationMagic", "sSpecializationStealth" }; std::string specName{ MWBase::Environment::get().getWindowManager()->getGameSettingString( - specIds[specialization], specIds[specialization]) }; + ESM::Class::sGmstSpecializationIds[specialization], ESM::Class::sGmstSpecializationIds[specialization]) }; mSpecializationName->setCaption(specName); ToolTips::createSpecializationToolTip(mSpecializationName, specName, specialization); @@ -579,11 +577,10 @@ namespace MWGui void CreateClassDialog::setSpecialization(int id) { - mSpecializationId = (ESM::Class::Specialization)id; - static const std::string_view specIds[3] - = { "sSpecializationCombat", "sSpecializationMagic", "sSpecializationStealth" }; + mSpecializationId = ESM::Class::Specialization(id); std::string specName{ MWBase::Environment::get().getWindowManager()->getGameSettingString( - specIds[mSpecializationId], specIds[mSpecializationId]) }; + ESM::Class::sGmstSpecializationIds[mSpecializationId], + ESM::Class::sGmstSpecializationIds[mSpecializationId]) }; mSpecializationName->setCaption(specName); ToolTips::createSpecializationToolTip(mSpecializationName, specName, mSpecializationId); } diff --git a/apps/openmw/mwgui/tooltips.cpp b/apps/openmw/mwgui/tooltips.cpp index 9c190b1ea4..e55fdef51c 100644 --- a/apps/openmw/mwgui/tooltips.cpp +++ b/apps/openmw/mwgui/tooltips.cpp @@ -936,13 +936,9 @@ namespace MWGui return; int spec = playerClass.mData.mSpecialization; - std::string specStr; - if (spec == 0) - specStr = "#{sSpecializationCombat}"; - else if (spec == 1) - specStr = "#{sSpecializationMagic}"; - else if (spec == 2) - specStr = "#{sSpecializationStealth}"; + std::string specStr = "#{"; + specStr += ESM::Class::sGmstSpecializationIds[spec]; + specStr += '}'; widget->setUserString("Caption_ClassName", playerClass.mName); widget->setUserString("Caption_ClassDescription", playerClass.mDescription); diff --git a/components/esm/defs.hpp b/components/esm/defs.hpp index 122f922837..265e355871 100644 --- a/components/esm/defs.hpp +++ b/components/esm/defs.hpp @@ -32,13 +32,6 @@ namespace ESM // Pixel color value. Standard four-byte rr,gg,bb,aa format. typedef uint32_t Color; - enum Specialization - { - SPC_Combat = 0, - SPC_Magic = 1, - SPC_Stealth = 2 - }; - enum RangeType { RT_Self = 0, diff --git a/components/esm3/loadclas.cpp b/components/esm3/loadclas.cpp index 8da92d95f6..a76855eb7f 100644 --- a/components/esm3/loadclas.cpp +++ b/components/esm3/loadclas.cpp @@ -8,9 +8,7 @@ namespace ESM { - const Class::Specialization Class::sSpecializationIds[3] = { Class::Combat, Class::Magic, Class::Stealth }; - - const char* Class::sGmstSpecializationIds[3] + const std::string_view Class::sGmstSpecializationIds[3] = { "sSpecializationCombat", "sSpecializationMagic", "sSpecializationStealth" }; int& Class::CLDTstruct::getSkill(int index, bool major) diff --git a/components/esm3/loadclas.hpp b/components/esm3/loadclas.hpp index 90dd86a17f..f47f0eb2b9 100644 --- a/components/esm3/loadclas.hpp +++ b/components/esm3/loadclas.hpp @@ -29,8 +29,7 @@ namespace ESM Stealth = 2 }; - static const Specialization sSpecializationIds[3]; - static const char* sGmstSpecializationIds[3]; + static const std::string_view sGmstSpecializationIds[3]; struct CLDTstruct {