1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-04-25 13:17:46 +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 updateBustScaling(float scale);
void updateCharacterParameters();
void updateSupportedSubraces();
std::optional<GearInfo> topSlot;
std::optional<GearInfo> bottomSlot;

View file

@ -56,23 +56,33 @@ FullModelViewer::FullModelViewer(GameData* data) : data(data) {
layout->addLayout(controlLayout);
raceCombo = new QComboBox();
connect(raceCombo, qOverload<int>(&QComboBox::currentIndexChanged), [this](int index) {
gearView->setRace((Race)index);
});
controlLayout->addWidget(raceCombo);
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();
connect(genderCombo, qOverload<int>(&QComboBox::currentIndexChanged), [this](int index) {
gearView->setGender((Gender)index);
gearView->setGender((Gender)genderCombo->itemData(index).toInt());
});
controlLayout->addWidget(genderCombo);
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);
@ -182,4 +192,11 @@ void FullModelViewer::updateCharacterParameters() {
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"

View file

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

View file

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