From 884e491b25278718b770f593273533057924c420 Mon Sep 17 00:00:00 2001 From: fallenoak Date: Mon, 17 Apr 2023 18:15:40 -0500 Subject: [PATCH] chore(ui): clean up script handlers for CScriptObject --- src/ui/CScriptObject.cpp | 8 ++++++ src/ui/CScriptObject.hpp | 1 + src/ui/CScriptObjectScript.cpp | 45 ++++++++-------------------------- 3 files changed, 19 insertions(+), 35 deletions(-) diff --git a/src/ui/CScriptObject.cpp b/src/ui/CScriptObject.cpp index a30cee0..5962ef5 100644 --- a/src/ui/CScriptObject.cpp +++ b/src/ui/CScriptObject.cpp @@ -13,6 +13,14 @@ void CScriptObject::RegisterScriptMethods(lua_State* L) { FrameScript_Object::FillScriptMethodTable(L, ScriptObjectMethods, NUM_SCRIPT_OBJECT_SCRIPT_METHODS); } +int32_t CScriptObject::GetObjectType() { + if (!CScriptObject::s_objectType) { + CScriptObject::s_objectType = ++FrameScript_Object::s_objectTypes; + } + + return CScriptObject::s_objectType; +} + CScriptObject* CScriptObject::GetScriptObjectByName(const char* name, int32_t type) { lua_State* L = FrameScript_GetContext(); diff --git a/src/ui/CScriptObject.hpp b/src/ui/CScriptObject.hpp index be2a64a..bf984c1 100644 --- a/src/ui/CScriptObject.hpp +++ b/src/ui/CScriptObject.hpp @@ -15,6 +15,7 @@ class CScriptObject : public FrameScript_Object { static const char* s_objectTypeName; // Static functions + static int32_t GetObjectType(); static void RegisterScriptMethods(lua_State* L); static CScriptObject* GetScriptObjectByName(const char* name, int32_t type); diff --git a/src/ui/CScriptObjectScript.cpp b/src/ui/CScriptObjectScript.cpp index 4974bdf..ec30c07 100644 --- a/src/ui/CScriptObjectScript.cpp +++ b/src/ui/CScriptObjectScript.cpp @@ -4,13 +4,8 @@ #include int32_t CScriptObject_GetObjectType(lua_State* L) { - if (!CScriptObject::s_objectType) { - CScriptObject::s_objectType = ++FrameScript_Object::s_objectTypes; - } - - CScriptObject* object = (CScriptObject*)FrameScript_GetObjectThis(L, CScriptObject::s_objectType); - - const char* type = object->GetObjectTypeName(); + auto object = static_cast(FrameScript_GetObjectThis(L, CScriptObject::GetObjectType())); + auto type = object->GetObjectTypeName(); lua_pushstring(L, type); @@ -18,24 +13,14 @@ int32_t CScriptObject_GetObjectType(lua_State* L) { } int32_t CScriptObject_IsObjectType(lua_State* L) { - if (!CScriptObject::s_objectType) { - CScriptObject::s_objectType = ++FrameScript_Object::s_objectTypes; - } - - CScriptObject* object = (CScriptObject*)FrameScript_GetObjectThis(L, CScriptObject::s_objectType); + auto object = static_cast(FrameScript_GetObjectThis(L, CScriptObject::GetObjectType())); if (!lua_isstring(L, 2)) { - const char* name = object->GetName(); - - if (!name) { - name = ""; - } - - luaL_error(L, "Usage: %s:IsObjectType(\"type\")", name); - return 0; + auto name = object->GetDisplayName(); + return luaL_error(L, "Usage: %s:IsObjectType(\"type\")", name); } - const char* type = lua_tolstring(L, 2, 0); + auto type = lua_tolstring(L, 2, nullptr); if (object->IsA(type)) { lua_pushnumber(L, 1.0); @@ -47,13 +32,8 @@ int32_t CScriptObject_IsObjectType(lua_State* L) { } int32_t CScriptObject_GetName(lua_State* L) { - if (!CScriptObject::s_objectType) { - CScriptObject::s_objectType = ++FrameScript_Object::s_objectTypes; - } - - CScriptObject* object = (CScriptObject*)FrameScript_GetObjectThis(L, CScriptObject::s_objectType); - - char* name = object->GetName(); + auto object = static_cast(FrameScript_GetObjectThis(L, CScriptObject::GetObjectType())); + auto name = object->GetName(); if (name && *name) { lua_pushstring(L, name); @@ -65,17 +45,12 @@ int32_t CScriptObject_GetName(lua_State* L) { } int32_t CScriptObject_GetParent(lua_State* L) { - if (!CScriptObject::s_objectType) { - CScriptObject::s_objectType = ++FrameScript_Object::s_objectTypes; - } - - CScriptObject* object = (CScriptObject*)FrameScript_GetObjectThis(L, CScriptObject::s_objectType); - + auto object = static_cast(FrameScript_GetObjectThis(L, CScriptObject::GetObjectType())); CScriptObject* parent = object->GetScriptObjectParent(); if (parent) { if (!parent->lua_registered) { - parent->RegisterScriptObject(0); + parent->RegisterScriptObject(nullptr); } lua_rawgeti(L, LUA_REGISTRYINDEX, parent->lua_objectRef);