From 977a3051db871c3c31555bfde682bcf65c9ce69b Mon Sep 17 00:00:00 2001 From: fallenoak Date: Wed, 4 Feb 2026 15:08:45 -0600 Subject: [PATCH] feat(ui): implement CSimpleStatusBar_SetMinMaxValues --- src/ui/simple/CSimpleStatusBarScript.cpp | 25 +++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/ui/simple/CSimpleStatusBarScript.cpp b/src/ui/simple/CSimpleStatusBarScript.cpp index 7e7dbf7..562f01f 100644 --- a/src/ui/simple/CSimpleStatusBarScript.cpp +++ b/src/ui/simple/CSimpleStatusBarScript.cpp @@ -19,7 +19,30 @@ int32_t CSimpleStatusBar_GetMinMaxValues(lua_State* L) { } int32_t CSimpleStatusBar_SetMinMaxValues(lua_State* L) { - WHOA_UNIMPLEMENTED(0); + auto type = CSimpleStatusBar::GetObjectType(); + auto statusBar = static_cast(FrameScript_GetObjectThis(L, type)); + + if (!lua_isnumber(L, 2) || !lua_isnumber(L, 3)) { + luaL_error(L, "Usage: %s:SetMinMaxValues(min, max)", statusBar->GetDisplayName()); + return 0; + } + + auto min = lua_tonumber(L, 2); + auto max = lua_tonumber(L, 3); + + if (min < -1.0e12 || min > 1.0e12 || max < -1.0e12 || max > 1.0e12) { + luaL_error(L, "Min or Max out of range"); + return 0; + } + + if (max - min > 1.0e12) { + luaL_error(L, "Min and Max too far apart"); + return 0; + } + + statusBar->SetMinMaxValues(static_cast(min), static_cast(max)); + + return 0; } int32_t CSimpleStatusBar_GetValue(lua_State* L) {