diff options
| author | Quietust | 2012-08-22 16:54:00 -0500 |
|---|---|---|
| committer | Quietust | 2012-08-22 16:54:00 -0500 |
| commit | 1e28ceff6dd10d78d6261bc9b018f4743e692b10 (patch) | |
| tree | 30a1a7cc000acd5f9df399fe2decb61b969091d6 /library/modules | |
| parent | cf4b8a01966cc680b6f7c74db5f6bad30adc3e64 (diff) | |
| download | dfhack-1e28ceff6dd10d78d6261bc9b018f4743e692b10.tar.gz dfhack-1e28ceff6dd10d78d6261bc9b018f4743e692b10.tar.bz2 dfhack-1e28ceff6dd10d78d6261bc9b018f4743e692b10.tar.xz | |
Add getProfessionColor and getCasteProfessionColor to Units module
Diffstat (limited to 'library/modules')
| -rw-r--r-- | library/modules/Units.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/library/modules/Units.cpp b/library/modules/Units.cpp index ee383cc0..874dabc3 100644 --- a/library/modules/Units.cpp +++ b/library/modules/Units.cpp @@ -948,3 +948,40 @@ std::string DFHack::Units::getCasteProfessionName(int race, int casteid, df::pro return Translation::capitalize(prof, true); } + +int8_t DFHack::Units::getProfessionColor(df::unit *unit, bool ignore_noble) +{ + std::vector<NoblePosition> np; + + if (!ignore_noble && getNoblePositions(&np, unit)) + { + if (np[0].position->flags.is_set(entity_position_flags::COLOR)) + return np[0].position->color[0] + np[0].position->color[2] * 8; + } + + return getCasteProfessionColor(unit->race, unit->caste, unit->profession); +} + +int8_t DFHack::Units::getCasteProfessionColor(int race, int casteid, df::profession pid) +{ + // make sure it's an actual profession + if (pid < 0 || !is_valid_enum_item(pid)) + return 3; + + // If it's not a Peasant, it's hardcoded + if (pid != profession::STANDARD) + return ENUM_ATTR(profession, color, pid); + + if (auto creature = df::creature_raw::find(race)) + { + if (auto caste = vector_get(creature->caste, casteid)) + { + if (caste->flags.is_set(caste_raw_flags::CASTE_COLOR)) + return caste->caste_color[0] + caste->caste_color[2] * 8; + } + return creature->color[0] + creature->color[2] * 8; + } + + // default to dwarven peasant color + return 3; +} |
