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

Add subrace combo to FMV

This commit is contained in:
Joshua Goins 2023-07-07 16:29:43 -04:00
parent d67a63710d
commit 8fb0b26c18
4 changed files with 38 additions and 13 deletions

View file

@ -25,6 +25,7 @@ private:
void updateHeightScaling(float scale); void updateHeightScaling(float scale);
void updateBustScaling(float scale); void updateBustScaling(float scale);
void updateCharacterParameters(); void updateCharacterParameters();
void updateSupportedSubraces();
std::optional<GearInfo> topSlot; std::optional<GearInfo> topSlot;
std::optional<GearInfo> bottomSlot; std::optional<GearInfo> bottomSlot;

View file

@ -56,23 +56,33 @@ FullModelViewer::FullModelViewer(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) {
gearView->setRace((Race)index);
});
controlLayout->addWidget(raceCombo); controlLayout->addWidget(raceCombo);
for (auto [race, race_name] : magic_enum::enum_entries<Race>()) { for (auto [race, race_name] : magic_enum::enum_entries<Race>()) {
raceCombo->addItem(race_name.data()); raceCombo->addItem(race_name.data(), (int)race);
} }
subraceCombo = new QComboBox();
connect(subraceCombo, qOverload<int>(&QComboBox::currentIndexChanged), [this](int index) {
gearView->setSubrace((Subrace)subraceCombo->itemData(index).toInt());
});
controlLayout->addWidget(subraceCombo);
connect(raceCombo, qOverload<int>(&QComboBox::currentIndexChanged), [this](int index) {
gearView->setRace((Race)raceCombo->itemData(index).toInt());
updateSupportedSubraces();
});
updateSupportedSubraces();
genderCombo = new QComboBox(); genderCombo = new QComboBox();
connect(genderCombo, qOverload<int>(&QComboBox::currentIndexChanged), [this](int index) { connect(genderCombo, qOverload<int>(&QComboBox::currentIndexChanged), [this](int index) {
gearView->setGender((Gender)index); gearView->setGender((Gender)genderCombo->itemData(index).toInt());
}); });
controlLayout->addWidget(genderCombo); controlLayout->addWidget(genderCombo);
for (auto [gender, gender_name] : magic_enum::enum_entries<Gender>()) { for (auto [gender, gender_name] : magic_enum::enum_entries<Gender>()) {
genderCombo->addItem(gender_name.data()); genderCombo->addItem(gender_name.data(), (int)gender);
} }
connect(this, &FullModelViewer::gearChanged, this, &FullModelViewer::reloadGear); connect(this, &FullModelViewer::gearChanged, this, &FullModelViewer::reloadGear);
@ -182,4 +192,11 @@ void FullModelViewer::updateCharacterParameters() {
updateBustScaling(bustScale); updateBustScaling(bustScale);
} }
void FullModelViewer::updateSupportedSubraces() {
subraceCombo->clear();
for (auto subrace : physis_get_supported_subraces(gearView->currentRace).subraces) {
subraceCombo->addItem(magic_enum::enum_name(subrace).data(), (int)subrace);
}
}
#include "moc_fullmodelviewer.cpp" #include "moc_fullmodelviewer.cpp"

View file

@ -16,11 +16,14 @@ GearView::GearView(GameData* data) : data(data) {
connect(this, &GearView::gearChanged, this, [=] { connect(this, &GearView::gearChanged, this, [=] {
reloadModel(); reloadModel();
}); });
connect(this, &GearView::raceChanged, this, [=] { connect(this, &GearView::raceChanged, this, [=] {
reloadRaceDeforms(); reloadRaceDeforms();
reloadModel(); reloadModel();
}); });
connect(this, &GearView::subraceChanged, this, [=] {
reloadRaceDeforms();
reloadModel();
});
connect(this, &GearView::genderChanged, this, [=] { connect(this, &GearView::genderChanged, this, [=] {
reloadRaceDeforms(); reloadRaceDeforms();
reloadModel(); reloadModel();

View file

@ -21,7 +21,7 @@ SingleGearView::SingleGearView(GameData* data) : data(data) {
if (loadingComboData) if (loadingComboData)
return; return;
setRace((Race)index); setRace((Race)raceCombo->itemData(index).toInt());
}); });
controlLayout->addWidget(raceCombo); controlLayout->addWidget(raceCombo);
@ -30,7 +30,7 @@ SingleGearView::SingleGearView(GameData* data) : data(data) {
if (loadingComboData) if (loadingComboData)
return; return;
setSubrace((Subrace)index); setSubrace((Subrace)raceCombo->itemData(index).toInt());
}); });
controlLayout->addWidget(subraceCombo); controlLayout->addWidget(subraceCombo);
@ -39,7 +39,7 @@ SingleGearView::SingleGearView(GameData* data) : data(data) {
if (loadingComboData) if (loadingComboData)
return; return;
setGender((Gender)index); setGender((Gender)genderCombo->itemData(index).toInt());
}); });
controlLayout->addWidget(genderCombo); controlLayout->addWidget(genderCombo);
@ -72,6 +72,9 @@ SingleGearView::SingleGearView(GameData* data) : data(data) {
connect(this, &SingleGearView::raceChanged, this, [=] { connect(this, &SingleGearView::raceChanged, this, [=] {
gearView->setRace(currentRace); gearView->setRace(currentRace);
}); });
connect(this, &SingleGearView::subraceChanged, this, [=] {
gearView->setSubrace(currentSubrace);
});
connect(this, &SingleGearView::genderChanged, this, [=] { connect(this, &SingleGearView::genderChanged, this, [=] {
gearView->setGender(currentGender); gearView->setGender(currentGender);
}); });
@ -134,6 +137,7 @@ void SingleGearView::reloadGear() {
gearView->clear(); gearView->clear();
raceCombo->setEnabled(currentGear.has_value()); raceCombo->setEnabled(currentGear.has_value());
subraceCombo->setEnabled(currentGear.has_value());
genderCombo->setEnabled(currentGear.has_value()); genderCombo->setEnabled(currentGear.has_value());
lodCombo->setEnabled(currentGear.has_value()); lodCombo->setEnabled(currentGear.has_value());
addToFMVButton->setEnabled(currentGear.has_value()); addToFMVButton->setEnabled(currentGear.has_value());
@ -147,13 +151,13 @@ void SingleGearView::reloadGear() {
raceCombo->clear(); raceCombo->clear();
subraceCombo->clear(); subraceCombo->clear();
for (auto [race, subrace] : gearView->supportedRaces()) { for (auto [race, subrace] : gearView->supportedRaces()) {
raceCombo->addItem(magic_enum::enum_name(race).data()); raceCombo->addItem(magic_enum::enum_name(race).data(), (int)race);
subraceCombo->addItem(magic_enum::enum_name(subrace).data()); subraceCombo->addItem(magic_enum::enum_name(subrace).data(), (int)subrace);
} }
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(), (int)gender);
} }
lodCombo->clear(); lodCombo->clear();