Add extra checks to the char creation pane to prevent crashes when the player is not using an extension mod with extra species
This commit is contained in:
parent
dc134e168b
commit
7fc9260829
@ -269,15 +269,19 @@ void CharCreationPane::changed() {
|
|||||||
fetchChild<LabelWidget>("labelPortrait")->setText(labels[8]);
|
fetchChild<LabelWidget>("labelPortrait")->setText(labels[8]);
|
||||||
fetchChild<LabelWidget>("labelPersonality")->setText(labels[9]);
|
fetchChild<LabelWidget>("labelPersonality")->setText(labels[9]);
|
||||||
|
|
||||||
fetchChild<ButtonWidget>(strf("species.{}", m_speciesChoice))->check();
|
if (auto speciesButton = fetchChild<ButtonWidget>(strf("species.{}", m_speciesChoice)))
|
||||||
fetchChild<ButtonWidget>(strf("gender.{}", genderIdx))->check();
|
speciesButton->check();
|
||||||
|
if (auto genderButton = fetchChild<ButtonWidget>(strf("gender.{}", genderIdx)))
|
||||||
|
genderButton->check();
|
||||||
|
|
||||||
auto modeButton = fetchChild<ButtonWidget>(strf("mode.{}", m_modeChoice));
|
auto modeButton = fetchChild<ButtonWidget>(strf("mode.{}", m_modeChoice));
|
||||||
modeButton->check();
|
modeButton->check();
|
||||||
setLabel("labelMode", modeButton->data().getString("description", "fail"));
|
setLabel("labelMode", modeButton->data().getString("description", "fail"));
|
||||||
|
|
||||||
// Update the gender images for the new species
|
// Update the gender images for the new species
|
||||||
for (size_t i = 0; i < species.genderOptions.size(); i++)
|
for (size_t i = 0; i < species.genderOptions.size(); i++)
|
||||||
fetchChild<ButtonWidget>(strf("gender.{}", i))->setOverlayImage(species.genderOptions[i].image);
|
if (auto button = fetchChild<ButtonWidget>(strf("gender.{}", i)))
|
||||||
|
button->setOverlayImage(species.genderOptions[i].image);
|
||||||
|
|
||||||
for (auto const& nameDefPair : root.speciesDatabase()->allSpecies()) {
|
for (auto const& nameDefPair : root.speciesDatabase()->allSpecies()) {
|
||||||
String name;
|
String name;
|
||||||
@ -286,8 +290,7 @@ void CharCreationPane::changed() {
|
|||||||
// NOTE: Probably not hot enough to matter, but this contains and indexOf makes this loop
|
// NOTE: Probably not hot enough to matter, but this contains and indexOf makes this loop
|
||||||
// O(n^2). This is less than ideal.
|
// O(n^2). This is less than ideal.
|
||||||
if (m_speciesList.contains(name)) {
|
if (m_speciesList.contains(name)) {
|
||||||
auto bw = fetchChild<ButtonWidget>(strf("species.{}", m_speciesList.indexOf(name)));
|
if (auto bw = fetchChild<ButtonWidget>(strf("species.{}", m_speciesList.indexOf(name))))
|
||||||
if (bw)
|
|
||||||
bw->setOverlayImage(def->options().genderOptions[genderIdx].characterImage);
|
bw->setOverlayImage(def->options().genderOptions[genderIdx].characterImage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user