1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-04-27 06:07:45 +00:00

Add subrace combo to single gear view

This commit is contained in:
Joshua Goins 2023-07-07 16:02:28 -04:00
parent 1e423c7792
commit a9d121d885
2 changed files with 46 additions and 20 deletions

View file

@ -15,6 +15,7 @@ Q_SIGNALS:
void gearChanged(); void gearChanged();
void raceChanged(); void raceChanged();
void subraceChanged();
void genderChanged(); void genderChanged();
void levelOfDetailChanged(); void levelOfDetailChanged();
@ -25,6 +26,7 @@ public Q_SLOTS:
void setGear(GearInfo& info); void setGear(GearInfo& info);
void setRace(Race race); void setRace(Race race);
void setSubrace(Subrace subrace);
void setGender(Gender gender); void setGender(Gender gender);
void setLevelOfDetail(int lod); void setLevelOfDetail(int lod);
@ -35,12 +37,13 @@ private:
std::optional<GearInfo> currentGear; std::optional<GearInfo> currentGear;
Race currentRace = Race::Hyur; Race currentRace = Race::Hyur;
Subrace currentSubrace = Subrace::Midlander;
Gender currentGender = Gender::Female; Gender currentGender = Gender::Female;
int currentLod = 0; int currentLod = 0;
GearView* gearView = nullptr; GearView *gearView = nullptr;
QComboBox* raceCombo, *genderCombo, *lodCombo; QComboBox *raceCombo, *subraceCombo, *genderCombo, *lodCombo;
QPushButton* addToFMVButton, *exportButton; QPushButton *addToFMVButton, *exportButton;
bool loadingComboData = false; bool loadingComboData = false;

View file

@ -17,21 +17,33 @@ SingleGearView::SingleGearView(GameData* data) : data(data) {
layout->addLayout(controlLayout); layout->addLayout(controlLayout);
raceCombo = new QComboBox(); raceCombo = new QComboBox();
connect(raceCombo, qOverload<int>(&QComboBox::currentIndexChanged), [this](int index) { connect(raceCombo, qOverload<int>(&QComboBox::currentIndexChanged),
if(loadingComboData) [this](int index) {
return; if (loadingComboData)
return;
setRace((Race)index); setRace((Race)index);
}); });
controlLayout->addWidget(raceCombo); controlLayout->addWidget(raceCombo);
genderCombo = new QComboBox(); subraceCombo = new QComboBox();
connect(genderCombo, qOverload<int>(&QComboBox::currentIndexChanged), [this](int index) { connect(subraceCombo, qOverload<int>(&QComboBox::currentIndexChanged),
if(loadingComboData) [this](int index) {
return; if (loadingComboData)
return;
setGender((Gender)index); setSubrace((Subrace)index);
}); });
controlLayout->addWidget(subraceCombo);
genderCombo = new QComboBox();
connect(genderCombo, qOverload<int>(&QComboBox::currentIndexChanged),
[this](int index) {
if (loadingComboData)
return;
setGender((Gender)index);
});
controlLayout->addWidget(genderCombo); controlLayout->addWidget(genderCombo);
lodCombo = new QComboBox(); lodCombo = new QComboBox();
@ -89,16 +101,25 @@ void SingleGearView::setGear(GearInfo &info) {
void SingleGearView::setRace(Race race) { void SingleGearView::setRace(Race race) {
if (currentRace == race) { if (currentRace == race) {
return; return;
} }
currentRace = race; currentRace = race;
Q_EMIT raceChanged(); Q_EMIT raceChanged();
} }
void SingleGearView::setSubrace(Subrace subrace) {
if (currentSubrace == subrace) {
return;
}
currentSubrace = subrace;
Q_EMIT subraceChanged();
}
void SingleGearView::setGender(Gender gender) { void SingleGearView::setGender(Gender gender) {
if (currentGender == gender) { if (currentGender == gender) {
return; return;
} }
currentGender = gender; currentGender = gender;
@ -129,13 +150,15 @@ void SingleGearView::reloadGear() {
loadingComboData = true; loadingComboData = true;
raceCombo->clear(); raceCombo->clear();
for(auto race : gearView->supportedRaces()) { subraceCombo->clear();
raceCombo->addItem(magic_enum::enum_name(race).data()); for (auto [race, subrace] : gearView->supportedRaces()) {
raceCombo->addItem(magic_enum::enum_name(race).data());
subraceCombo->addItem(magic_enum::enum_name(subrace).data());
} }
genderCombo->clear(); genderCombo->clear();
for(auto gender : gearView->supportedGenders()) { for (auto gender : gearView->supportedGenders()) {
genderCombo->addItem(magic_enum::enum_name(gender).data()); genderCombo->addItem(magic_enum::enum_name(gender).data());
} }
lodCombo->clear(); lodCombo->clear();