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) {