diff --git a/src/clientobject/Unit_C.cpp b/src/clientobject/Unit_C.cpp index fe9436a..495b817 100644 --- a/src/clientobject/Unit_C.cpp +++ b/src/clientobject/Unit_C.cpp @@ -1,8 +1,49 @@ #include "clientobject/Unit_C.hpp" -const char* CGUnit_C::GetDisplayRaceNameFromRecord(ChrRacesRec* record, uint8_t sexIn, uint8_t* sexOut) { - const char* result; +#include "db/Db.hpp" + +const char* CGUnit_C::GetDisplayRaceNameFromRecord(ChrRacesRec* record, uint8_t sexIn, uint8_t* sexOut) { + if (sexOut) { + *sexOut = sexIn; + } + if (!record) { + return nullptr; + } + if (!sexIn) { + if (record->m_nameMale[0]) { + return record->m_nameMale; + } + + if (record->m_nameFemale[0]) { + if (sexOut) { + *sexOut = 1; + } + return record->m_nameFemale; + } + + return record->m_name; + } + + if (sexIn != 1) { + return record->m_name; + } + + if (record->m_nameFemale[0]) { + return record->m_nameFemale; + } + + if (!record->m_nameMale[0]) { + return record->m_name; + } + + if (sexOut) { + *sexOut = 0; + } + return record->m_nameMale; +} + +const char* CGUnit_C::GetDisplayClassNameFromRecord(ChrClassesRec* record, uint8_t sexIn, uint8_t* sexOut) { if (sexOut) { *sexOut = sexIn; } diff --git a/src/clientobject/Unit_C.hpp b/src/clientobject/Unit_C.hpp index 01299ba..c5a2c69 100644 --- a/src/clientobject/Unit_C.hpp +++ b/src/clientobject/Unit_C.hpp @@ -1,11 +1,15 @@ #ifndef CLIENTOBJECT_UNIT_C_HPP #define CLIENTOBJECT_UNIT_C_HPP -#include "db/rec/ChrRacesRec.hpp" +#include + +class ChrRacesRec; +class ChrClassesRec; class CGUnit_C { public: static const char* GetDisplayRaceNameFromRecord(ChrRacesRec* record, uint8_t sexIn, uint8_t* sexOut = nullptr); + static const char* GetDisplayClassNameFromRecord(ChrClassesRec* record, uint8_t sexIn, uint8_t* sexOut = nullptr); }; #endif // CLIENTOBJECT_UNIT_C_HPP diff --git a/src/ui/ScriptFunctionsCharSelect.cpp b/src/ui/ScriptFunctionsCharSelect.cpp index bebef3c..c862f3a 100644 --- a/src/ui/ScriptFunctionsCharSelect.cpp +++ b/src/ui/ScriptFunctionsCharSelect.cpp @@ -75,16 +75,14 @@ int32_t Script_GetCharacterInfo(lua_State* L) { auto raceName = CGUnit_C::GetDisplayRaceNameFromRecord(g_chrRacesDB.GetRecord(character.raceID), character.sexID); lua_pushstring(L, raceName ? raceName : ""); - // TODO: auto className = CGUnit_C::GetDisplayClassNameFromRecord(g_chrClassesDB.GetRecord(character.classID), character.sexID); - auto className = "Warrior"; + auto className = CGUnit_C::GetDisplayClassNameFromRecord(g_chrClassesDB.GetRecord(character.classID), character.sexID); lua_pushstring(L, className ? className : ""); lua_pushnumber(L, character.experienceLevel); - // TODO: auto areaRecord = g_areaTableDB.GetRecord(character.zoneID); - void* areaRecord = nullptr; + auto areaRecord = g_areaTableDB.GetRecord(character.zoneID); if (areaRecord) { - // TODO: lua_pushstring(L, areaRecord->name) + lua_pushstring(L, areaRecord->m_areaName); } else { lua_pushnil(L); }