diff --git a/src/ui/CSimpleButton.cpp b/src/ui/CSimpleButton.cpp index 563fb8f..a1090fb 100644 --- a/src/ui/CSimpleButton.cpp +++ b/src/ui/CSimpleButton.cpp @@ -83,6 +83,10 @@ void CSimpleButton::Enable(int32_t enabled) { } } +CSimpleButtonState CSimpleButton::GetButtonState() { + return this->m_state; +} + FrameScript_Object::ScriptIx* CSimpleButton::GetScriptByName(const char* name, ScriptData& data) { auto parentScript = CSimpleFrame::GetScriptByName(name, data); diff --git a/src/ui/CSimpleButton.hpp b/src/ui/CSimpleButton.hpp index aace692..a1a729d 100644 --- a/src/ui/CSimpleButton.hpp +++ b/src/ui/CSimpleButton.hpp @@ -62,6 +62,7 @@ class CSimpleButton : public CSimpleFrame { // Member functions CSimpleButton(CSimpleFrame* parent); + CSimpleButtonState GetButtonState(); void RunOnClickScript(const char* btn, int32_t down); void SetClickAction(uint64_t action); void SetFontString(CSimpleFontString* text); diff --git a/src/ui/CSimpleButtonScript.cpp b/src/ui/CSimpleButtonScript.cpp index 099f4ff..230268c 100644 --- a/src/ui/CSimpleButtonScript.cpp +++ b/src/ui/CSimpleButtonScript.cpp @@ -75,7 +75,24 @@ int32_t CSimpleButton_IsEnabled(lua_State* L) { } int32_t CSimpleButton_GetButtonState(lua_State* L) { - WHOA_UNIMPLEMENTED(); + auto type = CSimpleButton::GetObjectType(); + auto button = static_cast(FrameScript_GetObjectThis(L, type)); + + auto buttonState = button->GetButtonState(); + + if (buttonState == BUTTONSTATE_DISABLED) { + lua_pushstring(L, "DISABLED"); + return 1; + } else if (buttonState == BUTTONSTATE_PUSHED) { + lua_pushstring(L, "PUSHED"); + return 1; + } else if (buttonState == BUTTONSTATE_NORMAL) { + lua_pushstring(L, "NORMAL"); + return 1; + } + + lua_pushstring(L, "UNKNOWN"); + return 1; } int32_t CSimpleButton_SetButtonState(lua_State* L) {