From a9d121d8854f62031e5495a5506388d88d020d03 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Fri, 7 Jul 2023 16:02:28 -0400 Subject: [PATCH] Add subrace combo to single gear view --- mdlviewer/include/singlegearview.h | 9 +++-- mdlviewer/src/singlegearview.cpp | 57 +++++++++++++++++++++--------- 2 files changed, 46 insertions(+), 20 deletions(-) diff --git a/mdlviewer/include/singlegearview.h b/mdlviewer/include/singlegearview.h index 8e1a33f..af2cd05 100644 --- a/mdlviewer/include/singlegearview.h +++ b/mdlviewer/include/singlegearview.h @@ -15,6 +15,7 @@ Q_SIGNALS: void gearChanged(); void raceChanged(); + void subraceChanged(); void genderChanged(); void levelOfDetailChanged(); @@ -25,6 +26,7 @@ public Q_SLOTS: void setGear(GearInfo& info); void setRace(Race race); + void setSubrace(Subrace subrace); void setGender(Gender gender); void setLevelOfDetail(int lod); @@ -35,12 +37,13 @@ private: std::optional currentGear; Race currentRace = Race::Hyur; + Subrace currentSubrace = Subrace::Midlander; Gender currentGender = Gender::Female; int currentLod = 0; - GearView* gearView = nullptr; - QComboBox* raceCombo, *genderCombo, *lodCombo; - QPushButton* addToFMVButton, *exportButton; + GearView *gearView = nullptr; + QComboBox *raceCombo, *subraceCombo, *genderCombo, *lodCombo; + QPushButton *addToFMVButton, *exportButton; bool loadingComboData = false; diff --git a/mdlviewer/src/singlegearview.cpp b/mdlviewer/src/singlegearview.cpp index 424f9d4..50d4de1 100644 --- a/mdlviewer/src/singlegearview.cpp +++ b/mdlviewer/src/singlegearview.cpp @@ -17,21 +17,33 @@ SingleGearView::SingleGearView(GameData* data) : data(data) { layout->addLayout(controlLayout); raceCombo = new QComboBox(); - connect(raceCombo, qOverload(&QComboBox::currentIndexChanged), [this](int index) { - if(loadingComboData) - return; + connect(raceCombo, qOverload(&QComboBox::currentIndexChanged), + [this](int index) { + if (loadingComboData) + return; - setRace((Race)index); - }); + setRace((Race)index); + }); controlLayout->addWidget(raceCombo); - genderCombo = new QComboBox(); - connect(genderCombo, qOverload(&QComboBox::currentIndexChanged), [this](int index) { - if(loadingComboData) - return; + subraceCombo = new QComboBox(); + connect(subraceCombo, qOverload(&QComboBox::currentIndexChanged), + [this](int index) { + if (loadingComboData) + return; - setGender((Gender)index); - }); + setSubrace((Subrace)index); + }); + controlLayout->addWidget(subraceCombo); + + genderCombo = new QComboBox(); + connect(genderCombo, qOverload(&QComboBox::currentIndexChanged), + [this](int index) { + if (loadingComboData) + return; + + setGender((Gender)index); + }); controlLayout->addWidget(genderCombo); lodCombo = new QComboBox(); @@ -89,16 +101,25 @@ void SingleGearView::setGear(GearInfo &info) { void SingleGearView::setRace(Race race) { if (currentRace == race) { - return; + return; } currentRace = race; Q_EMIT raceChanged(); } +void SingleGearView::setSubrace(Subrace subrace) { + if (currentSubrace == subrace) { + return; + } + + currentSubrace = subrace; + Q_EMIT subraceChanged(); +} + void SingleGearView::setGender(Gender gender) { if (currentGender == gender) { - return; + return; } currentGender = gender; @@ -129,13 +150,15 @@ void SingleGearView::reloadGear() { loadingComboData = true; raceCombo->clear(); - for(auto race : gearView->supportedRaces()) { - raceCombo->addItem(magic_enum::enum_name(race).data()); + subraceCombo->clear(); + for (auto [race, subrace] : gearView->supportedRaces()) { + raceCombo->addItem(magic_enum::enum_name(race).data()); + subraceCombo->addItem(magic_enum::enum_name(subrace).data()); } genderCombo->clear(); - for(auto gender : gearView->supportedGenders()) { - genderCombo->addItem(magic_enum::enum_name(gender).data()); + for (auto gender : gearView->supportedGenders()) { + genderCombo->addItem(magic_enum::enum_name(gender).data()); } lodCombo->clear();