chore(ui): clean up script handlers for CScriptObject

This commit is contained in:
fallenoak 2023-04-17 18:15:40 -05:00
parent bc1ce52f7d
commit 884e491b25
No known key found for this signature in database
GPG Key ID: 7628F8E61AEA070D
3 changed files with 19 additions and 35 deletions

View File

@ -13,6 +13,14 @@ void CScriptObject::RegisterScriptMethods(lua_State* L) {
FrameScript_Object::FillScriptMethodTable(L, ScriptObjectMethods, NUM_SCRIPT_OBJECT_SCRIPT_METHODS); 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) { CScriptObject* CScriptObject::GetScriptObjectByName(const char* name, int32_t type) {
lua_State* L = FrameScript_GetContext(); lua_State* L = FrameScript_GetContext();

View File

@ -15,6 +15,7 @@ class CScriptObject : public FrameScript_Object {
static const char* s_objectTypeName; static const char* s_objectTypeName;
// Static functions // Static functions
static int32_t GetObjectType();
static void RegisterScriptMethods(lua_State* L); static void RegisterScriptMethods(lua_State* L);
static CScriptObject* GetScriptObjectByName(const char* name, int32_t type); static CScriptObject* GetScriptObjectByName(const char* name, int32_t type);

View File

@ -4,13 +4,8 @@
#include <cstdint> #include <cstdint>
int32_t CScriptObject_GetObjectType(lua_State* L) { int32_t CScriptObject_GetObjectType(lua_State* L) {
if (!CScriptObject::s_objectType) { auto object = static_cast<CScriptObject*>(FrameScript_GetObjectThis(L, CScriptObject::GetObjectType()));
CScriptObject::s_objectType = ++FrameScript_Object::s_objectTypes; auto type = object->GetObjectTypeName();
}
CScriptObject* object = (CScriptObject*)FrameScript_GetObjectThis(L, CScriptObject::s_objectType);
const char* type = object->GetObjectTypeName();
lua_pushstring(L, type); lua_pushstring(L, type);
@ -18,24 +13,14 @@ int32_t CScriptObject_GetObjectType(lua_State* L) {
} }
int32_t CScriptObject_IsObjectType(lua_State* L) { int32_t CScriptObject_IsObjectType(lua_State* L) {
if (!CScriptObject::s_objectType) { auto object = static_cast<CScriptObject*>(FrameScript_GetObjectThis(L, CScriptObject::GetObjectType()));
CScriptObject::s_objectType = ++FrameScript_Object::s_objectTypes;
}
CScriptObject* object = (CScriptObject*)FrameScript_GetObjectThis(L, CScriptObject::s_objectType);
if (!lua_isstring(L, 2)) { if (!lua_isstring(L, 2)) {
const char* name = object->GetName(); auto name = object->GetDisplayName();
return luaL_error(L, "Usage: %s:IsObjectType(\"type\")", name);
if (!name) {
name = "<unnamed>";
} }
luaL_error(L, "Usage: %s:IsObjectType(\"type\")", name); auto type = lua_tolstring(L, 2, nullptr);
return 0;
}
const char* type = lua_tolstring(L, 2, 0);
if (object->IsA(type)) { if (object->IsA(type)) {
lua_pushnumber(L, 1.0); lua_pushnumber(L, 1.0);
@ -47,13 +32,8 @@ int32_t CScriptObject_IsObjectType(lua_State* L) {
} }
int32_t CScriptObject_GetName(lua_State* L) { int32_t CScriptObject_GetName(lua_State* L) {
if (!CScriptObject::s_objectType) { auto object = static_cast<CScriptObject*>(FrameScript_GetObjectThis(L, CScriptObject::GetObjectType()));
CScriptObject::s_objectType = ++FrameScript_Object::s_objectTypes; auto name = object->GetName();
}
CScriptObject* object = (CScriptObject*)FrameScript_GetObjectThis(L, CScriptObject::s_objectType);
char* name = object->GetName();
if (name && *name) { if (name && *name) {
lua_pushstring(L, name); lua_pushstring(L, name);
@ -65,17 +45,12 @@ int32_t CScriptObject_GetName(lua_State* L) {
} }
int32_t CScriptObject_GetParent(lua_State* L) { int32_t CScriptObject_GetParent(lua_State* L) {
if (!CScriptObject::s_objectType) { auto object = static_cast<CScriptObject*>(FrameScript_GetObjectThis(L, CScriptObject::GetObjectType()));
CScriptObject::s_objectType = ++FrameScript_Object::s_objectTypes;
}
CScriptObject* object = (CScriptObject*)FrameScript_GetObjectThis(L, CScriptObject::s_objectType);
CScriptObject* parent = object->GetScriptObjectParent(); CScriptObject* parent = object->GetScriptObjectParent();
if (parent) { if (parent) {
if (!parent->lua_registered) { if (!parent->lua_registered) {
parent->RegisterScriptObject(0); parent->RegisterScriptObject(nullptr);
} }
lua_rawgeti(L, LUA_REGISTRYINDEX, parent->lua_objectRef); lua_rawgeti(L, LUA_REGISTRYINDEX, parent->lua_objectRef);