From 6c9d15d6f757b54ef321f780d35f0772b1066562 Mon Sep 17 00:00:00 2001 From: fallenoak Date: Sun, 5 Oct 2025 19:43:42 -0500 Subject: [PATCH] feat(ui): implement Script_SelectCharacter --- src/glue/CCharacterSelection.cpp | 4 ++++ src/glue/CCharacterSelection.hpp | 1 + src/ui/ScriptFunctionsCharSelect.cpp | 17 ++++++++++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/glue/CCharacterSelection.cpp b/src/glue/CCharacterSelection.cpp index d1b6124..9caaa18 100644 --- a/src/glue/CCharacterSelection.cpp +++ b/src/glue/CCharacterSelection.cpp @@ -72,6 +72,10 @@ void CCharacterSelection::SetBackgroundModel(const char* modelPath) { } } +void CCharacterSelection::ShowCharacter() { + // TODO +} + void CCharacterSelection::UpdateCharacterList() { // TODO diff --git a/src/glue/CCharacterSelection.hpp b/src/glue/CCharacterSelection.hpp index fd1896f..0bcbf3c 100644 --- a/src/glue/CCharacterSelection.hpp +++ b/src/glue/CCharacterSelection.hpp @@ -35,6 +35,7 @@ class CCharacterSelection { static void OnGetCharacterList(); static void RenderPrep(); static void SetBackgroundModel(const char* modelPath); + static void ShowCharacter(); static void UpdateCharacterList(); }; diff --git a/src/ui/ScriptFunctionsCharSelect.cpp b/src/ui/ScriptFunctionsCharSelect.cpp index 579229b..e8e9b0f 100644 --- a/src/ui/ScriptFunctionsCharSelect.cpp +++ b/src/ui/ScriptFunctionsCharSelect.cpp @@ -51,7 +51,22 @@ int32_t Script_GetCharacterInfo(lua_State* L) { } int32_t Script_SelectCharacter(lua_State* L) { - WHOA_UNIMPLEMENTED(0); + if (!lua_isnumber(L, 1)) { + return luaL_error(L, "Usage: SelectCharacter(index)"); + } + + int32_t index = static_cast(lua_tonumber(L, 1)) - 1; + + if (index < 0 || index >= CCharacterSelection::s_characterList.Count()) { + index = 0; + } + + CCharacterSelection::s_selectionIndex = index; + CCharacterSelection::ShowCharacter(); + + FrameScript_SignalEvent(8, "%d", CCharacterSelection::s_selectionIndex + 1); + + return 0; } int32_t Script_DeleteCharacter(lua_State* L) {