From 7fc9260829453b306e27853207e8efbd7d6f8a8d Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Thu, 29 Jun 2023 22:02:35 +1000 Subject: Add extra checks to the char creation pane to prevent crashes when the player is not using an extension mod with extra species --- source/frontend/StarCharCreation.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'source/frontend/StarCharCreation.cpp') diff --git a/source/frontend/StarCharCreation.cpp b/source/frontend/StarCharCreation.cpp index 7d05712..d873a72 100644 --- a/source/frontend/StarCharCreation.cpp +++ b/source/frontend/StarCharCreation.cpp @@ -269,15 +269,19 @@ void CharCreationPane::changed() { fetchChild("labelPortrait")->setText(labels[8]); fetchChild("labelPersonality")->setText(labels[9]); - fetchChild(strf("species.{}", m_speciesChoice))->check(); - fetchChild(strf("gender.{}", genderIdx))->check(); + if (auto speciesButton = fetchChild(strf("species.{}", m_speciesChoice))) + speciesButton->check(); + if (auto genderButton = fetchChild(strf("gender.{}", genderIdx))) + genderButton->check(); + auto modeButton = fetchChild(strf("mode.{}", m_modeChoice)); modeButton->check(); setLabel("labelMode", modeButton->data().getString("description", "fail")); // Update the gender images for the new species for (size_t i = 0; i < species.genderOptions.size(); i++) - fetchChild(strf("gender.{}", i))->setOverlayImage(species.genderOptions[i].image); + if (auto button = fetchChild(strf("gender.{}", i))) + button->setOverlayImage(species.genderOptions[i].image); for (auto const& nameDefPair : root.speciesDatabase()->allSpecies()) { String name; @@ -286,8 +290,7 @@ void CharCreationPane::changed() { // NOTE: Probably not hot enough to matter, but this contains and indexOf makes this loop // O(n^2). This is less than ideal. if (m_speciesList.contains(name)) { - auto bw = fetchChild(strf("species.{}", m_speciesList.indexOf(name))); - if (bw) + if (auto bw = fetchChild(strf("species.{}", m_speciesList.indexOf(name)))) bw->setOverlayImage(def->options().genderOptions[genderIdx].characterImage); } } -- cgit v1.2.3