feat(ui): use class and area IDs for Character Selection

This commit is contained in:
VDm 2025-04-05 13:27:53 +04:00
parent 3689ef9b41
commit 152cb7dea4
3 changed files with 51 additions and 8 deletions

View File

@ -1,8 +1,49 @@
#include "clientobject/Unit_C.hpp" #include "clientobject/Unit_C.hpp"
const char* CGUnit_C::GetDisplayRaceNameFromRecord(ChrRacesRec* record, uint8_t sexIn, uint8_t* sexOut) { #include "db/Db.hpp"
const char* result;
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) { if (sexOut) {
*sexOut = sexIn; *sexOut = sexIn;
} }

View File

@ -1,11 +1,15 @@
#ifndef CLIENTOBJECT_UNIT_C_HPP #ifndef CLIENTOBJECT_UNIT_C_HPP
#define CLIENTOBJECT_UNIT_C_HPP #define CLIENTOBJECT_UNIT_C_HPP
#include "db/rec/ChrRacesRec.hpp" #include <cstdint>
class ChrRacesRec;
class ChrClassesRec;
class CGUnit_C { class CGUnit_C {
public: public:
static const char* GetDisplayRaceNameFromRecord(ChrRacesRec* record, uint8_t sexIn, uint8_t* sexOut = nullptr); 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 #endif // CLIENTOBJECT_UNIT_C_HPP

View File

@ -75,16 +75,14 @@ int32_t Script_GetCharacterInfo(lua_State* L) {
auto raceName = CGUnit_C::GetDisplayRaceNameFromRecord(g_chrRacesDB.GetRecord(character.raceID), character.sexID); auto raceName = CGUnit_C::GetDisplayRaceNameFromRecord(g_chrRacesDB.GetRecord(character.raceID), character.sexID);
lua_pushstring(L, raceName ? raceName : ""); lua_pushstring(L, raceName ? raceName : "");
// TODO: auto className = CGUnit_C::GetDisplayClassNameFromRecord(g_chrClassesDB.GetRecord(character.classID), character.sexID); auto className = CGUnit_C::GetDisplayClassNameFromRecord(g_chrClassesDB.GetRecord(character.classID), character.sexID);
auto className = "Warrior";
lua_pushstring(L, className ? className : ""); lua_pushstring(L, className ? className : "");
lua_pushnumber(L, character.experienceLevel); lua_pushnumber(L, character.experienceLevel);
// TODO: auto areaRecord = g_areaTableDB.GetRecord(character.zoneID); auto areaRecord = g_areaTableDB.GetRecord(character.zoneID);
void* areaRecord = nullptr;
if (areaRecord) { if (areaRecord) {
// TODO: lua_pushstring(L, areaRecord->name) lua_pushstring(L, areaRecord->m_areaName);
} else { } else {
lua_pushnil(L); lua_pushnil(L);
} }