diff --git a/src/component/Util.cpp b/src/component/Util.cpp index e73dcc3..d1cfe48 100644 --- a/src/component/Util.cpp +++ b/src/component/Util.cpp @@ -128,6 +128,24 @@ int32_t BuildComponentArray(uint32_t varArrayLength, st_race** varArrayPtr) { return 1; } +CharSectionsRec* ComponentGetSectionsRecord(st_race* varArray, int32_t raceId, int32_t sexId, COMPONENT_VARIATIONS sectionIndex, int32_t variationIndex, int32_t colorIndex, bool* found) { + if (!ComponentValidateBase(varArray, raceId, sexId, sectionIndex, variationIndex, colorIndex)) { + if (found) { + *found = false; + } + + return nullptr; + } + + auto& section = varArray[(raceId * UNITSEX_NUM_SEXES + sexId)].sections[sectionIndex]; + + if (found) { + *found = true; + } + + return section.variationArray[variationIndex].colorArray[colorIndex].rec; +} + int32_t ComponentValidateBase(st_race* varArray, int32_t raceId, int32_t sexId, COMPONENT_VARIATIONS sectionIndex, int32_t variationIndex, int32_t colorIndex) { if (sectionIndex >= NUM_COMPONENT_VARIATIONS || variationIndex < 0) { return 0; diff --git a/src/component/Util.hpp b/src/component/Util.hpp index bff6a00..66803aa 100644 --- a/src/component/Util.hpp +++ b/src/component/Util.hpp @@ -28,6 +28,8 @@ struct st_variation { int32_t BuildComponentArray(uint32_t varArrayLength, st_race** varArrayPtr); +CharSectionsRec* ComponentGetSectionsRecord(st_race* varArray, int32_t raceId, int32_t sexId, COMPONENT_VARIATIONS sectionIndex, int32_t variationIndex, int32_t colorIndex, bool* found); + int32_t ComponentValidateBase(st_race* varArray, int32_t raceId, int32_t sexId, COMPONENT_VARIATIONS sectionIndex, int32_t variationIndex, int32_t colorIndex); #endif