chore(glue): add skeleton of CCharacterComponent class

This commit is contained in:
VDm 2025-04-13 01:36:00 +04:00
parent f0200c7c08
commit d76e6142b7
14 changed files with 87 additions and 6 deletions

2
lib/bc

@ -1 +1 @@
Subproject commit 4e116bd69a5d0d0c979ef43cf86cbb8181cc19c1
Subproject commit 367b8149f36a1e4c2aad066e0cf9cd1e07ae7d88

@ -1 +1 @@
Subproject commit 0401d901376995c7a209125b8cb12f1ceaa46fb7
Subproject commit 9a3b3aeafd7e48194d0a5a3fbe459b965f5d12fa

@ -1 +1 @@
Subproject commit ce9c709029f92dc5b0bed2d3739c5013e4b6b903
Subproject commit af834cafa755de27a87b3400adb89b205e567166

@ -1 +1 @@
Subproject commit 0c3ceb876666f7b84dc8d4918eadbbc8e380cd5b
Subproject commit 328613d0e8ebc0ed46af63a1248d213be4fbf601

View File

@ -471,7 +471,7 @@ int32_t InitializeGlobal() {
// );
// sub_86D430(v8->m_intValue);
OsTimeStartup(SystemMethod2);
OsTimeStartup(Timing_QueryPerformanceCounter);
// ConsoleCommandRegister("timingInfo", (int)sub_4032A0, 0, 0);

View File

@ -0,0 +1 @@
#include "glue/CCharacterComponent.cpp"

View File

@ -0,0 +1,17 @@
#ifndef GLUE_C_CHARACTER_COMPONENT_HPP
#define GLUE_C_CHARACTER_COMPONENT_HPP
#include "net/Types.hpp"
#include <storm/Array.hpp>
class CSimpleModelFFX;
class CM2Model;
class CCharacterComponent {
public:
// Static variables
// Static functions
};
#endif // GLUE_C_CHARACTER_COMPONENT_HPP

View File

@ -0,0 +1,8 @@
#include "glue/CCharacterCreation.hpp"
float CCharacterCreation::m_charFacing = 0.0;
CharacterCreationDisplay CCharacterCreation::m_character = {};
void CCharacterCreation::Initialize() {
CCharacterCreation::m_charFacing = 0.0;
}

View File

@ -0,0 +1,25 @@
#ifndef GLUE_C_CHARACTER_CREATION_HPP
#define GLUE_C_CHARACTER_CREATION_HPP
#include "net/Types.hpp"
#include <storm/Array.hpp>
class CSimpleModelFFX;
class CM2Model;
struct CharacterCreationDisplay {
CHARACTER_CREATE_INFO m_characterInfo;
CM2Model* m_characterModel;
};
class CCharacterCreation {
public:
// Static variables
static float m_charFacing;
static CharacterCreationDisplay m_character;
// Static functions
static void Initialize();
};
#endif // GLUE_C_CHARACTER_CREATION_HPP

View File

@ -31,6 +31,10 @@ CharacterSelectionDisplay::CharacterSelectionDisplay()
}
void CCharacterSelection::Initialize() {
// Empty method
}
void CCharacterSelection::RenderPrep() {
// TODO
}

View File

@ -34,6 +34,7 @@ class CCharacterSelection {
static int32_t m_selectionIndex;
// Static functions
static void Initialize();
static void RenderPrep();
static void SetBackgroundModel(const char* modelPath);
static void EnumerateCharactersCallback(CHARACTER_INFO& info, void* param);

View File

@ -1,6 +1,7 @@
#include "glue/CGlueMgr.hpp"
#include "glue/CRealmList.hpp"
#include "glue/CCharacterSelection.hpp"
#include "glue/CCharacterCreation.hpp"
#include "console/Console.hpp"
#include "client/Client.hpp"
#include "client/ClientServices.hpp"
@ -868,6 +869,9 @@ void CGlueMgr::Resume() {
OsCreateDirectory("Logs", 0);
CCharacterSelection::Initialize();
CCharacterCreation::Initialize();
CWOWClientStatus status;
if (!SLogCreate("Logs\\GlueXML.log", 0, &status.m_logFile)) {

View File

@ -1286,6 +1286,12 @@ struct CHARACTER_INFO {
uint8_t firstLogin;
};
struct CHARACTER_CREATE_INFO {
uint8_t unk[24];
uint32_t raceID;
uint32_t sexID;
};
struct CLIENT_NETSTATS {
uint32_t bytesSent;
uint32_t messagesSent;

View File

@ -2,6 +2,9 @@
#include "ui/Types.hpp"
#include "util/Lua.hpp"
#include "util/Unimplemented.hpp"
#include "db/Db.hpp"
#include "clientobject/Unit_C.hpp"
#include "glue/CCharacterCreation.hpp"
#include <cstdint>
int32_t Script_SetCharCustomizeFrame(lua_State* L) {
@ -17,7 +20,19 @@ int32_t Script_ResetCharCustomize(lua_State* L) {
}
int32_t Script_GetNameForRace(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
auto raceID = CCharacterCreation::m_character.m_characterInfo.raceID;
auto sexID = CCharacterCreation::m_character.m_characterInfo.sexID;
auto record = g_chrRacesDB.GetRecord(raceID);
auto raceName = CGUnit_C::GetDisplayRaceNameFromRecord(record, sexID);
if (record && raceName) {
lua_pushstring(L, raceName);
lua_pushstring(L, record->m_clientFileString);
} else {
lua_pushnil(L);
lua_pushnil(L);
}
return 2;
}
int32_t Script_GetFactionForRace(lua_State* L) {