diff --git a/src/ui/CSimpleStatusBar.cpp b/src/ui/CSimpleStatusBar.cpp new file mode 100644 index 0000000..24aba74 --- /dev/null +++ b/src/ui/CSimpleStatusBar.cpp @@ -0,0 +1,39 @@ +#include "ui/CSimpleStatusBar.hpp" +#include "ui/CSimpleStatusBarScript.hpp" + +int32_t CSimpleStatusBar::s_metatable = 0; +int32_t CSimpleStatusBar::s_objectType = 0; + +void CSimpleStatusBar::CreateScriptMetaTable() { + lua_State* L = FrameScript_GetContext(); + int32_t ref = FrameScript_Object::CreateScriptMetaTable(L, &CSimpleStatusBar::RegisterScriptMethods); + CSimpleStatusBar::s_metatable = ref; +} + +int32_t CSimpleStatusBar::GetObjectType() { + if (!CSimpleStatusBar::s_objectType) { + CSimpleStatusBar::s_objectType = ++FrameScript_Object::s_objectTypes; + } + + return CSimpleStatusBar::s_objectType; +} + +void CSimpleStatusBar::RegisterScriptMethods(lua_State* L) { + CSimpleFrame::RegisterScriptMethods(L); + FrameScript_Object::FillScriptMethodTable(L, SimpleStatusBarMethods, NUM_SIMPLE_STATUS_BAR_SCRIPT_METHODS); +} + +CSimpleStatusBar::CSimpleStatusBar(CSimpleFrame* parent) + : CSimpleFrame(parent) { +} + +bool CSimpleStatusBar::IsA(int32_t type) { + return type == CSimpleStatusBar::s_objectType + || type == CSimpleFrame::s_objectType + || type == CScriptRegion::s_objectType + || type == CScriptObject::s_objectType; +} + +int32_t CSimpleStatusBar::GetScriptMetaTable() { + return CSimpleStatusBar::s_metatable; +} diff --git a/src/ui/CSimpleStatusBar.hpp b/src/ui/CSimpleStatusBar.hpp new file mode 100644 index 0000000..6328186 --- /dev/null +++ b/src/ui/CSimpleStatusBar.hpp @@ -0,0 +1,25 @@ +#ifndef UI_C_SIMPLE_STATUS_BAR_HPP +#define UI_C_SIMPLE_STATUS_BAR_HPP + +#include "ui/CSimpleFrame.hpp" + +class CSimpleStatusBar : public CSimpleFrame { + public: + // Static variables + static int32_t s_metatable; + static int32_t s_objectType; + + // Static functions + static void CreateScriptMetaTable(); + static int32_t GetObjectType(); + static void RegisterScriptMethods(lua_State* L); + + // Member functions + CSimpleStatusBar(CSimpleFrame* parent); + + // Virtual member functions + virtual bool IsA(int32_t type); + virtual int32_t GetScriptMetaTable(); +}; + +#endif diff --git a/src/ui/CSimpleStatusBarScript.cpp b/src/ui/CSimpleStatusBarScript.cpp new file mode 100644 index 0000000..1172af4 --- /dev/null +++ b/src/ui/CSimpleStatusBarScript.cpp @@ -0,0 +1,68 @@ +#include "ui/CSimpleStatusBarScript.hpp" +#include "ui/CSimpleStatusBar.hpp" +#include "util/Lua.hpp" +#include "util/Unimplemented.hpp" + +static int32_t Script_GetOrientation(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetOrientation(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_GetMinMaxValues(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetMinMaxValues(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_GetValue(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetValue(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_GetStatusBarTexture(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetStatusBarTexture(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_GetStatusBarColor(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetStatusBarColor(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_GetRotatesTexture(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetRotatesTexture(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + + +FrameScript_Method SimpleStatusBarMethods[NUM_SIMPLE_STATUS_BAR_SCRIPT_METHODS] = { + { "GetOrientation", &Script_GetOrientation }, + { "SetOrientation", &Script_SetOrientation }, + { "GetMinMaxValues", &Script_GetMinMaxValues }, + { "SetMinMaxValues", &Script_SetMinMaxValues }, + { "GetValue", &Script_GetValue }, + { "SetValue", &Script_SetValue }, + { "GetStatusBarTexture", &Script_GetStatusBarTexture }, + { "SetStatusBarTexture", &Script_SetStatusBarTexture }, + { "GetStatusBarColor", &Script_GetStatusBarColor }, + { "SetStatusBarColor", &Script_SetStatusBarColor }, + { "GetRotatesTexture", &Script_GetRotatesTexture }, + { "SetRotatesTexture", &Script_SetRotatesTexture } +}; diff --git a/src/ui/CSimpleStatusBarScript.hpp b/src/ui/CSimpleStatusBarScript.hpp new file mode 100644 index 0000000..f440cc2 --- /dev/null +++ b/src/ui/CSimpleStatusBarScript.hpp @@ -0,0 +1,10 @@ +#ifndef UI_C_SIMPLE_STATUS_BAR_SCRIPT_HPP +#define UI_C_SIMPLE_STATUS_BAR_SCRIPT_HPP + +#include "ui/FrameScript.hpp" + +#define NUM_SIMPLE_STATUS_BAR_SCRIPT_METHODS 12 + +extern FrameScript_Method SimpleStatusBarMethods[NUM_SIMPLE_STATUS_BAR_SCRIPT_METHODS]; + +#endif diff --git a/src/ui/FrameXML.cpp b/src/ui/FrameXML.cpp index 30b6d54..9a14b08 100644 --- a/src/ui/FrameXML.cpp +++ b/src/ui/FrameXML.cpp @@ -10,6 +10,7 @@ #include "ui/CSimpleScrollFrame.hpp" #include "ui/CSimpleMessageScrollFrame.hpp" #include "ui/CSimpleSlider.hpp" +#include "ui/CSimpleStatusBar.hpp" #include "util/CStatus.hpp" #include "util/SFile.hpp" #include @@ -101,7 +102,8 @@ CSimpleFrame* Create_SimpleHTML(CSimpleFrame* parent) { CSimpleFrame* Create_SimpleStatusBar(CSimpleFrame* parent) { // TODO - return nullptr; + auto m = SMemAlloc(sizeof(CSimpleStatusBar), __FILE__, __LINE__, 0x0); + return new (m) CSimpleStatusBar(parent); } CSimpleFrame* Create_SimpleColorSelect(CSimpleFrame* parent) { diff --git a/src/ui/ScriptFunctions.cpp b/src/ui/ScriptFunctions.cpp index 56fda65..1b9780f 100644 --- a/src/ui/ScriptFunctions.cpp +++ b/src/ui/ScriptFunctions.cpp @@ -13,6 +13,7 @@ #include "ui/CSimpleSlider.hpp" #include "ui/CSimpleTexture.hpp" #include "ui/CSimpleMessageScrollFrame.hpp" +#include "ui/CSimpleStatusBar.hpp" #include "ui/FrameScript.hpp" void CharacterCreateRegisterScriptFunctions() { @@ -88,7 +89,7 @@ void RegisterSimpleFrameScriptMethods() { CSimpleSlider::CreateScriptMetaTable(); // TODO - // CSimpleStatusBar::CreateScriptMetaTable(); + CSimpleStatusBar::CreateScriptMetaTable(); // CSimpleColorSelect::CreateScriptMetaTable(); CSimpleMovieFrame::CreateScriptMetaTable(); }