From 5ea18cc29849e921b138b4255e68b1baf0c21d2f Mon Sep 17 00:00:00 2001 From: fallenoak Date: Sun, 28 Dec 2025 22:12:48 -0600 Subject: [PATCH] feat(glue): implement Script_ResetCharCustomize --- src/glue/CCharacterCreation.cpp | 57 +++++++++++++++++++++++++++ src/glue/CCharacterCreation.hpp | 16 ++++++++ src/glue/CCharacterCreationScript.cpp | 4 +- 3 files changed, 76 insertions(+), 1 deletion(-) diff --git a/src/glue/CCharacterCreation.cpp b/src/glue/CCharacterCreation.cpp index f7625d4..d0054bb 100644 --- a/src/glue/CCharacterCreation.cpp +++ b/src/glue/CCharacterCreation.cpp @@ -1,3 +1,60 @@ #include "glue/CCharacterCreation.hpp" +#include "component/Types.hpp" +#include "glue/CGlueLoading.hpp" +#include "ui/simple/CSimpleModelFFX.hpp" +CCharacterComponent* CCharacterCreation::s_character; CSimpleModelFFX* CCharacterCreation::s_charCustomizeFrame; +int32_t CCharacterCreation::s_existingCharacterIndex; +int32_t CCharacterCreation::s_raceIndex; +int32_t CCharacterCreation::s_selectedClassID; + +void CCharacterCreation::CalcClasses(int32_t raceID) { + // TODO +} + +void CCharacterCreation::CreateComponent(ComponentData* data, bool randomize) { + // TODO +} + +int32_t CCharacterCreation::GetRandomClassID() { + // TODO + return 1; +} + +void CCharacterCreation::GetRandomRaceAndSex(ComponentData* data) { + // TODO +} + +void CCharacterCreation::ResetCharCustomizeInfo() { + if (!CCharacterCreation::s_charCustomizeFrame) { + return; + } + + CCharacterCreation::s_existingCharacterIndex = -1; + + auto model = CCharacterCreation::s_charCustomizeFrame->m_model; + + if (model) { + model->DetachAllChildrenById(0); + } + + ComponentData data; + CCharacterCreation::GetRandomRaceAndSex(&data); + CCharacterCreation::CalcClasses(data.raceID); + + CCharacterCreation::CreateComponent(&data, true); + + CCharacterCreation::SetSelectedClass(CCharacterCreation::GetRandomClassID()); + data.classID = CCharacterCreation::s_selectedClassID; + + CCharacterCreation::s_raceIndex = -1; + + // TODO race and name gen stuff + + CGlueLoading::StartLoad(CCharacterCreation::s_character, true); +} + +void CCharacterCreation::SetSelectedClass(int32_t classID) { + // TODO +} diff --git a/src/glue/CCharacterCreation.hpp b/src/glue/CCharacterCreation.hpp index f0a058d..41523b5 100644 --- a/src/glue/CCharacterCreation.hpp +++ b/src/glue/CCharacterCreation.hpp @@ -1,12 +1,28 @@ #ifndef GLUE_C_CHARACTER_CREATION_HPP #define GLUE_C_CHARACTER_CREATION_HPP +#include + +class CCharacterComponent; class CSimpleModelFFX; +struct ComponentData; class CCharacterCreation { public: // Static variables + static CCharacterComponent* s_character; static CSimpleModelFFX* s_charCustomizeFrame; + static int32_t s_existingCharacterIndex; + static int32_t s_raceIndex; + static int32_t s_selectedClassID; + + // Static functions + static void CalcClasses(int32_t raceID); + static void CreateComponent(ComponentData* data, bool randomize); + static int32_t GetRandomClassID(); + static void GetRandomRaceAndSex(ComponentData* data); + static void ResetCharCustomizeInfo(); + static void SetSelectedClass(int32_t classID); }; #endif diff --git a/src/glue/CCharacterCreationScript.cpp b/src/glue/CCharacterCreationScript.cpp index b77efdc..6134274 100644 --- a/src/glue/CCharacterCreationScript.cpp +++ b/src/glue/CCharacterCreationScript.cpp @@ -28,7 +28,9 @@ int32_t Script_SetCharCustomizeBackground(lua_State* L) { } int32_t Script_ResetCharCustomize(lua_State* L) { - WHOA_UNIMPLEMENTED(0); + CCharacterCreation::ResetCharCustomizeInfo(); + + return 0; } int32_t Script_GetNameForRace(lua_State* L) {