Compare commits

...

5 Commits

Author SHA1 Message Date
fallenoak
a168c6fd41
feat(glue): unregister system functions in CGlueMgr::Suspend
Some checks are pending
Push / ${{ matrix.build.system_name }} / ${{ matrix.build.build_type }} / ${{ matrix.build.compiler_name }} (map[build_type:Release cc:cl compiler_name:MSVC cxx:cl os:windows-latest system_name:Windows test_path:WhoaTest]) (push) Waiting to run
Push / ${{ matrix.build.system_name }} / ${{ matrix.build.build_type }} / ${{ matrix.build.compiler_name }} (map[build_type:Release cc:clang compiler_name:Clang cxx:clang++ os:macos-latest system_name:macOS test_path:WhoaTest]) (push) Waiting to run
Push / ${{ matrix.build.system_name }} / ${{ matrix.build.build_type }} / ${{ matrix.build.compiler_name }} (map[build_type:Release cc:gcc compiler_name:GCC cxx:g++ os:ubuntu-latest system_name:Linux test_path:WhoaTest]) (push) Waiting to run
2026-01-26 16:41:13 -06:00
fallenoak
95a8f4287f
feat(ui): add SystemUnregisterFunctions 2026-01-26 16:37:50 -06:00
fallenoak
c0ec4aed44
chore(ui): tweak style 2026-01-26 16:36:15 -06:00
fallenoak
6dd15ed2cf
feat(ui): add FrameScript_UnregisterFunction 2026-01-26 16:35:15 -06:00
fallenoak
dc071210ca
chore(ui): clean up RegisterSimpleFrameScriptMethods 2026-01-26 15:54:06 -06:00
10 changed files with 84 additions and 78 deletions

View File

@ -26,11 +26,11 @@
#include "ui/FrameXML.hpp"
#include "ui/Interface.hpp"
#include "ui/Key.hpp"
#include "ui/ScriptFunctions.hpp"
#include "ui/ScriptFunctionsSystem.hpp"
#include "ui/game/CGVideoOptions.hpp"
#include "ui/simple/CSimpleModelFFX.hpp"
#include "ui/simple/CSimpleTop.hpp"
#include "ui/simple/ScriptMethods.hpp"
#include "util/Filesystem.hpp"
#include "util/Locale.hpp"
#include "util/Log.hpp"
@ -1187,6 +1187,10 @@ void CGlueMgr::Suspend() {
// TODO
SystemUnregisterFunctions();
// TODO
FrameXML_FreeHashNodes();
// TODO

View File

@ -1047,6 +1047,15 @@ const char* FrameScript_Sprintf(lua_State* L, int32_t idx, char buffer[], uint32
return buffer;
}
void FrameScript_UnregisterFunction(const char* name) {
auto L = FrameScript::s_context;
lua_pushnil(L);
lua_pushstring(L, name);
lua_insert(L, -2);
lua_rawset(L, LUA_GLOBALSINDEX);
}
void FrameScript_UnregisterScriptEvent(FrameScript_Object* object, FrameScript_EventObject* event) {
if (event->pendingSignalCount) {
auto node = event->unregisterListeners.Head();

View File

@ -99,6 +99,8 @@ void FrameScript_SignalEvent(uint32_t index, const char* format, ...);
const char* FrameScript_Sprintf(lua_State* L, int32_t idx, char buffer[], uint32_t bufferLen);
void FrameScript_UnregisterFunction(const char* name);
void FrameScript_UnregisterScriptEvent(FrameScript_Object* object, FrameScript_EventObject* event);
void ScriptEventsInitialize();

View File

@ -1,56 +0,0 @@
#include "ui/ScriptFunctions.hpp"
#include "ui/FrameScript.hpp"
#include "ui/simple/CSimpleButton.hpp"
#include "ui/simple/CSimpleCheckbox.hpp"
#include "ui/simple/CSimpleEditBox.hpp"
#include "ui/simple/CSimpleFont.hpp"
#include "ui/simple/CSimpleFontString.hpp"
#include "ui/simple/CSimpleFrame.hpp"
#include "ui/simple/CSimpleHTML.hpp"
#include "ui/simple/CSimpleModel.hpp"
#include "ui/simple/CSimpleModelFFX.hpp"
#include "ui/simple/CSimpleScrollFrame.hpp"
#include "ui/simple/CSimpleSlider.hpp"
#include "ui/simple/CSimpleTexture.hpp"
void RegisterSimpleFrameScriptMethods() {
for (int32_t i = 0; i < NUM_SCRIPT_FUNCTIONS_SIMPLE_FRAME; ++i) {
FrameScript_RegisterFunction(
FrameScript::s_ScriptFunctions_SimpleFrame[i].name,
FrameScript::s_ScriptFunctions_SimpleFrame[i].method
);
}
// TODO
// CSimpleAnim::CreateScriptMetaTable();
// CSimpleTranslationAnim::CreateScriptMetaTable();
// CSimpleRotationAnim::CreateScriptMetaTable();
// CSimpleScaleAnim::CreateScriptMetaTable();
// CSimpleControlPoint::CreateScriptMetaTable();
// CSimplePathAnim::CreateScriptMetaTable();
// CSimpleAlphaAnim::CreateScriptMetaTable();
// CSimpleAnimGroup::CreateScriptMetaTable();
CSimpleFont::CreateScriptMetaTable();
CSimpleTexture::CreateScriptMetaTable();
CSimpleFontString::CreateScriptMetaTable();
CSimpleFrame::CreateScriptMetaTable();
CSimpleButton::CreateScriptMetaTable();
CSimpleCheckbox::CreateScriptMetaTable();
CSimpleEditBox::CreateScriptMetaTable();
CSimpleHTML::CreateScriptMetaTable();
// TODO
// CSimpleMessageFrame::CreateScriptMetaTable();
// CSimpleMessageScrollFrame::CreateScriptMetaTable();
CSimpleModel::CreateScriptMetaTable();
CSimpleModelFFX::CreateScriptMetaTable();
CSimpleScrollFrame::CreateScriptMetaTable();
CSimpleSlider::CreateScriptMetaTable();
// TODO
// CSimpleStatusBar::CreateScriptMetaTable();
// CSimpleColorSelect::CreateScriptMetaTable();
// CSimpleMovieFrame::CreateScriptMetaTable();
}

View File

@ -1,17 +0,0 @@
#ifndef UI_SCRIPT_FUNCTIONS_HPP
#define UI_SCRIPT_FUNCTIONS_HPP
#include "ui/Types.hpp"
#include <cstdint>
struct lua_State;
#define NUM_SCRIPT_FUNCTIONS_SIMPLE_FRAME 7
namespace FrameScript {
extern FrameScript_Method s_ScriptFunctions_SimpleFrame[NUM_SCRIPT_FUNCTIONS_SIMPLE_FRAME];
}
void RegisterSimpleFrameScriptMethods();
#endif

View File

@ -1,4 +1,4 @@
#include "ui/ScriptFunctions.hpp"
#include "ui/ScriptFunctionsShared.hpp"
#include "util/Lua.hpp"
#include "util/Unimplemented.hpp"
#include <cstdint>

View File

@ -42,3 +42,9 @@ void SystemRegisterFunctions() {
FrameScript_RegisterFunction(func.name, func.method);
}
}
void SystemUnregisterFunctions() {
for (auto& func : s_SystemFunctions) {
FrameScript_UnregisterFunction(func.name);
}
}

View File

@ -3,4 +3,6 @@
void SystemRegisterFunctions();
void SystemUnregisterFunctions();
#endif

View File

@ -1,13 +1,24 @@
#include "ui/simple/ScriptMethods.hpp"
#include "ui/FrameXML.hpp"
#include "ui/ScriptFunctions.hpp"
#include "ui/Types.hpp"
#include "ui/simple/CSimpleButton.hpp"
#include "ui/simple/CSimpleCheckbox.hpp"
#include "ui/simple/CSimpleEditBox.hpp"
#include "ui/simple/CSimpleFont.hpp"
#include "ui/simple/CSimpleFontString.hpp"
#include "ui/simple/CSimpleFrame.hpp"
#include "ui/simple/CSimpleHTML.hpp"
#include "ui/simple/CSimpleModel.hpp"
#include "ui/simple/CSimpleModelFFX.hpp"
#include "ui/simple/CSimpleScrollFrame.hpp"
#include "ui/simple/CSimpleSlider.hpp"
#include "ui/simple/CSimpleTexture.hpp"
#include "util/CStatus.hpp"
#include "util/Lua.hpp"
#include "util/Unimplemented.hpp"
#include <common/XML.hpp>
#include <cstdint>
#include <storm/String.hpp>
#include <cstdint>
int32_t Script_GetText(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
@ -137,7 +148,7 @@ int32_t Script_GetCurrentKeyBoardFocus(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
FrameScript_Method FrameScript::s_ScriptFunctions_SimpleFrame[NUM_SCRIPT_FUNCTIONS_SIMPLE_FRAME] = {
static FrameScript_Method s_ScriptFunctions[] = {
{ "GetText", &Script_GetText },
{ "GetNumFrames", &Script_GetNumFrames },
{ "EnumerateFrames", &Script_EnumerateFrames },
@ -146,3 +157,42 @@ FrameScript_Method FrameScript::s_ScriptFunctions_SimpleFrame[NUM_SCRIPT_FUNCTIO
{ "GetFramesRegisteredForEvent", &Script_GetFramesRegisteredForEvent },
{ "GetCurrentKeyBoardFocus", &Script_GetCurrentKeyBoardFocus },
};
void RegisterSimpleFrameScriptMethods() {
for (auto& func : s_ScriptFunctions) {
FrameScript_RegisterFunction(func.name, func.method);
}
// TODO
// CSimpleAnim::CreateScriptMetaTable();
// CSimpleTranslationAnim::CreateScriptMetaTable();
// CSimpleRotationAnim::CreateScriptMetaTable();
// CSimpleScaleAnim::CreateScriptMetaTable();
// CSimpleControlPoint::CreateScriptMetaTable();
// CSimplePathAnim::CreateScriptMetaTable();
// CSimpleAlphaAnim::CreateScriptMetaTable();
// CSimpleAnimGroup::CreateScriptMetaTable();
CSimpleFont::CreateScriptMetaTable();
CSimpleTexture::CreateScriptMetaTable();
CSimpleFontString::CreateScriptMetaTable();
CSimpleFrame::CreateScriptMetaTable();
CSimpleButton::CreateScriptMetaTable();
CSimpleCheckbox::CreateScriptMetaTable();
CSimpleEditBox::CreateScriptMetaTable();
CSimpleHTML::CreateScriptMetaTable();
// TODO
// CSimpleMessageFrame::CreateScriptMetaTable();
// CSimpleMessageScrollFrame::CreateScriptMetaTable();
CSimpleModel::CreateScriptMetaTable();
CSimpleModelFFX::CreateScriptMetaTable();
CSimpleScrollFrame::CreateScriptMetaTable();
CSimpleSlider::CreateScriptMetaTable();
// TODO
// CSimpleStatusBar::CreateScriptMetaTable();
// CSimpleColorSelect::CreateScriptMetaTable();
// CSimpleMovieFrame::CreateScriptMetaTable();
}

View File

@ -0,0 +1,6 @@
#ifndef UI_SIMPLE_SCRIPT_METHODS_HPP
#define UI_SIMPLE_SCRIPT_METHODS_HPP
void RegisterSimpleFrameScriptMethods();
#endif