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);
}
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();

View File

@ -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);

View File

@ -4,13 +4,8 @@
#include <cstdint>
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<CScriptObject*>(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<CScriptObject*>(FrameScript_GetObjectThis(L, CScriptObject::GetObjectType()));
if (!lua_isstring(L, 2)) {
const char* name = object->GetName();
if (!name) {
name = "<unnamed>";
}
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<CScriptObject*>(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<CScriptObject*>(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);