diff --git a/src/glue/CRealmListScript.cpp b/src/glue/CRealmListScript.cpp index 10d7349..4017231 100644 --- a/src/glue/CRealmListScript.cpp +++ b/src/glue/CRealmListScript.cpp @@ -3,9 +3,9 @@ #include "db/Db.hpp" #include "glue/CGlueMgr.hpp" #include "glue/CRealmList.hpp" -#include "util/StringTo.hpp" #include "ui/FrameScript.hpp" #include "ui/Types.hpp" +#include "ui/Util.hpp" #include "util/Lua.hpp" #include "util/Unimplemented.hpp" #include diff --git a/src/ui/CBackdropGenerator.cpp b/src/ui/CBackdropGenerator.cpp index dd86aec..b246ba2 100644 --- a/src/ui/CBackdropGenerator.cpp +++ b/src/ui/CBackdropGenerator.cpp @@ -4,7 +4,6 @@ #include "ui/LoadXML.hpp" #include "ui/Util.hpp" #include "util/CStatus.hpp" -#include "util/StringTo.hpp" #include #include diff --git a/src/ui/CScriptRegionScript.cpp b/src/ui/CScriptRegionScript.cpp index aa7c783..b4ebc6c 100644 --- a/src/ui/CScriptRegionScript.cpp +++ b/src/ui/CScriptRegionScript.cpp @@ -2,11 +2,11 @@ #include "gx/Coordinate.hpp" #include "ui/CScriptRegion.hpp" #include "ui/FrameScript_Object.hpp" +#include "ui/Util.hpp" #include "ui/simple/CSimpleFontString.hpp" #include "ui/simple/CSimpleTexture.hpp" #include "ui/simple/CSimpleTop.hpp" #include "util/Lua.hpp" -#include "util/StringTo.hpp" #include "util/Unimplemented.hpp" #include #include diff --git a/src/ui/Util.cpp b/src/ui/Util.cpp index 5cc5204..bfa8843 100644 --- a/src/ui/Util.cpp +++ b/src/ui/Util.cpp @@ -1,4 +1,5 @@ #include "ui/Util.hpp" +#include "util/Lua.hpp" #include #include @@ -31,6 +32,139 @@ int32_t StringToBlendMode(const char* string, EGxBlend& blend) { return 0; } +int32_t StringToBOOL(const char* string) { + return StringToBOOL(string, 0); +} + +bool StringToBOOL(const char* string, int32_t def) { + if (!string) { + return def; + } + + switch (*string) { + case '0': + case 'F': + case 'N': + case 'f': + case 'n': + return false; + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'T': + case 'Y': + case 't': + case 'y': + return true; + + default: + if (!SStrCmpI(string, "off", 0x7FFFFFFFu) || !SStrCmpI(string, "disabled", 0x7FFFFFFFu)) { + return false; + } + + if (!SStrCmpI(string, "on", 0x7FFFFFFFu) || !SStrCmpI(string, "enabled", 0x7FFFFFFFu)) { + return true; + } + + return def; + } +} + +bool StringToBOOL(lua_State* L, int32_t idx, int32_t def) { + bool result; + const char* str; + + switch (lua_type(L, idx)) { + case LUA_TNIL: + result = false; + break; + + case LUA_TBOOLEAN: + result = lua_toboolean(L, idx); + break; + + case LUA_TNUMBER: + result = lua_tonumber(L, idx) != 0; + break; + + case LUA_TSTRING: + str = lua_tostring(L, idx); + result = StringToBOOL(str, def); + break; + + default: + result = def; + break; + } + + return result; +} + +uint64_t StringToClickAction(const char* string) { + if (!string || !*string) { + return 0; + } + + if (!SStrCmpI(string, "LeftButtonDown", STORM_MAX_STR)) { + return 1; + } + + if (!SStrCmpI(string, "LeftButtonUp", STORM_MAX_STR)) { + return 0x80000000; + } + + if (!SStrCmpI(string, "MiddleButtonDown", STORM_MAX_STR)) { + return 2; + } + + if (!SStrCmpI(string, "MiddleButtonUp", STORM_MAX_STR)) { + return 0; + } + + if (!SStrCmpI(string, "RightButtonDown", STORM_MAX_STR)) { + return 4; + } + + if (!SStrCmpI(string, "RightButtonUp", STORM_MAX_STR)) { + return 0; + } + + // TODO remaining buttons + + return 0; +} + +int32_t StringToDrawLayer(const char* string, int32_t& layer) { + struct LayerEntry { + int32_t layer; + const char* string; + }; + + static LayerEntry layerMap[] = { + { 0, "BACKGROUND" }, + { 1, "BORDER" }, + { 2, "ARTWORK" }, + { 3, "OVERLAY" }, + { 4, "HIGHLIGHT" } + }; + + for (const auto& entry : layerMap) { + if (!SStrCmpI(entry.string, string)) { + layer = entry.layer; + return 1; + } + } + + return 0; +} + int32_t StringToFramePoint(const char* string, FRAMEPOINT& point) { struct FramePointEntry { FRAMEPOINT value; @@ -87,6 +221,31 @@ int32_t StringToFrameStrata(const char* string, FRAME_STRATA& strata) { return 0; } +int32_t StringToJustify(const char* string, uint32_t& justify) { + struct JustifyEntry { + uint32_t value; + const char* string; + }; + + static JustifyEntry justifyMap[] = { + { 0x1, "LEFT" }, + { 0x2, "CENTER" }, + { 0x4, "RIGHT" }, + { 0x8, "TOP" }, + { 0x10, "MIDDLE" }, + { 0x20, "BOTTOM" } + }; + + for (const auto& entry : justifyMap) { + if (!SStrCmpI(entry.string, string)) { + justify = entry.value; + return 1; + } + } + + return 0; +} + int32_t StringToOrientation(const char* string, ORIENTATION& orientation) { struct OrientationEntry { ORIENTATION value; diff --git a/src/ui/Util.hpp b/src/ui/Util.hpp index c5e4dbc..26e3521 100644 --- a/src/ui/Util.hpp +++ b/src/ui/Util.hpp @@ -5,14 +5,28 @@ #include "ui/Types.hpp" #include +struct lua_State; + const char* LanguageProcess(const char* string); int32_t StringToBlendMode(const char* string, EGxBlend& blend); +int32_t StringToBOOL(const char* string); + +bool StringToBOOL(const char* string, int32_t def); + +bool StringToBOOL(lua_State* L, int32_t idx, int32_t def); + +uint64_t StringToClickAction(const char* string); + +int32_t StringToDrawLayer(const char* string, int32_t& layer); + int32_t StringToFramePoint(const char* string, FRAMEPOINT& point); int32_t StringToFrameStrata(const char* string, FRAME_STRATA& strata); +int32_t StringToJustify(const char* string, uint32_t& justify); + int32_t StringToOrientation(const char* string, ORIENTATION& orientation); #endif diff --git a/src/ui/game/GameScript.cpp b/src/ui/game/GameScript.cpp index 0268775..a122822 100644 --- a/src/ui/game/GameScript.cpp +++ b/src/ui/game/GameScript.cpp @@ -3,10 +3,10 @@ #include "gx/Coordinate.hpp" #include "ui/FrameScript.hpp" #include "ui/ScriptFunctionsShared.hpp" +#include "ui/Util.hpp" #include "ui/game/CGGameUI.hpp" #include "ui/game/Types.hpp" #include "ui/simple/CSimpleTop.hpp" -#include "util/StringTo.hpp" #include "util/Unimplemented.hpp" namespace { diff --git a/src/ui/game/ScriptEvents.cpp b/src/ui/game/ScriptEvents.cpp index dc30c00..8e74633 100644 --- a/src/ui/game/ScriptEvents.cpp +++ b/src/ui/game/ScriptEvents.cpp @@ -3,12 +3,12 @@ #include "object/Client.hpp" #include "ui/FrameScript.hpp" #include "ui/ScriptFunctionsSystem.hpp" +#include "ui/Util.hpp" #include "ui/game/CGGameUI.hpp" #include "ui/game/ScriptUtil.hpp" #include "ui/game/Types.hpp" #include "util/GUID.hpp" #include "util/Lua.hpp" -#include "util/StringTo.hpp" #include "util/Unimplemented.hpp" #define NUM_SCRIPT_EVENTS 722 diff --git a/src/ui/simple/CSimpleButtonScript.cpp b/src/ui/simple/CSimpleButtonScript.cpp index bb38c57..1b18a95 100644 --- a/src/ui/simple/CSimpleButtonScript.cpp +++ b/src/ui/simple/CSimpleButtonScript.cpp @@ -1,11 +1,11 @@ #include "ui/simple/CSimpleButtonScript.hpp" #include "gx/Coordinate.hpp" +#include "ui/Util.hpp" #include "ui/simple/CSimpleButton.hpp" #include "ui/simple/CSimpleFont.hpp" #include "ui/simple/CSimpleFontString.hpp" #include "ui/simple/CSimpleTexture.hpp" #include "util/Lua.hpp" -#include "util/StringTo.hpp" #include "util/Unimplemented.hpp" #include diff --git a/src/ui/simple/CSimpleCheckbox.cpp b/src/ui/simple/CSimpleCheckbox.cpp index e3d5749..c5bac17 100644 --- a/src/ui/simple/CSimpleCheckbox.cpp +++ b/src/ui/simple/CSimpleCheckbox.cpp @@ -1,8 +1,8 @@ #include "ui/simple/CSimpleCheckbox.hpp" #include "ui/LoadXML.hpp" +#include "ui/Util.hpp" #include "ui/simple/CSimpleCheckboxScript.hpp" #include "ui/simple/CSimpleTexture.hpp" -#include "util/StringTo.hpp" #include int32_t CSimpleCheckbox::s_metatable; diff --git a/src/ui/simple/CSimpleCheckboxScript.cpp b/src/ui/simple/CSimpleCheckboxScript.cpp index 278c330..6c11f8d 100644 --- a/src/ui/simple/CSimpleCheckboxScript.cpp +++ b/src/ui/simple/CSimpleCheckboxScript.cpp @@ -1,7 +1,7 @@ #include "ui/simple/CSimpleCheckboxScript.hpp" +#include "ui/Util.hpp" #include "ui/simple/CSimpleCheckbox.hpp" #include "util/Lua.hpp" -#include "util/StringTo.hpp" #include "util/Unimplemented.hpp" #include diff --git a/src/ui/simple/CSimpleEditBox.cpp b/src/ui/simple/CSimpleEditBox.cpp index 00e73c3..09a7b8b 100644 --- a/src/ui/simple/CSimpleEditBox.cpp +++ b/src/ui/simple/CSimpleEditBox.cpp @@ -2,6 +2,7 @@ #include "gx/Coordinate.hpp" #include "gx/Gx.hpp" #include "ui/LoadXML.hpp" +#include "ui/Util.hpp" #include "ui/simple/CSimpleEditBoxScript.hpp" #include "ui/simple/CSimpleFontString.hpp" #include "ui/simple/CSimpleFontedFrameFont.hpp" @@ -10,7 +11,6 @@ #include "util/Byte.hpp" #include "util/CStatus.hpp" #include "util/Lua.hpp" -#include "util/StringTo.hpp" #include #include #include diff --git a/src/ui/simple/CSimpleFont.cpp b/src/ui/simple/CSimpleFont.cpp index 956559d..fadb283 100644 --- a/src/ui/simple/CSimpleFont.cpp +++ b/src/ui/simple/CSimpleFont.cpp @@ -4,9 +4,9 @@ #include "ui/FrameXML.hpp" #include "ui/LoadXML.hpp" #include "ui/Types.hpp" +#include "ui/Util.hpp" #include "ui/simple/CSimpleFontScript.hpp" #include "util/CStatus.hpp" -#include "util/StringTo.hpp" #include #include diff --git a/src/ui/simple/CSimpleFontString.cpp b/src/ui/simple/CSimpleFontString.cpp index 3575c7d..53c1150 100644 --- a/src/ui/simple/CSimpleFontString.cpp +++ b/src/ui/simple/CSimpleFontString.cpp @@ -12,7 +12,6 @@ #include "ui/simple/CSimpleFrame.hpp" #include "ui/simple/CSimpleTop.hpp" #include "util/CStatus.hpp" -#include "util/StringTo.hpp" #include #include diff --git a/src/ui/simple/CSimpleFontStringScript.cpp b/src/ui/simple/CSimpleFontStringScript.cpp index bffae37..75f789f 100644 --- a/src/ui/simple/CSimpleFontStringScript.cpp +++ b/src/ui/simple/CSimpleFontStringScript.cpp @@ -1,8 +1,8 @@ #include "ui/simple/CSimpleFontStringScript.hpp" +#include "ui/Util.hpp" #include "ui/simple/CSimpleFont.hpp" #include "ui/simple/CSimpleFontString.hpp" #include "util/Lua.hpp" -#include "util/StringTo.hpp" #include "util/Unimplemented.hpp" #include diff --git a/src/ui/simple/CSimpleFrame.cpp b/src/ui/simple/CSimpleFrame.cpp index 0e03001..1e69a0c 100644 --- a/src/ui/simple/CSimpleFrame.cpp +++ b/src/ui/simple/CSimpleFrame.cpp @@ -8,6 +8,7 @@ #include "ui/FrameScript_Object.hpp" #include "ui/FrameXML.hpp" #include "ui/LoadXML.hpp" +#include "ui/Util.hpp" #include "ui/simple/CSimpleFontString.hpp" #include "ui/simple/CSimpleFrameScript.hpp" #include "ui/simple/CSimpleRender.hpp" @@ -16,7 +17,6 @@ #include "ui/simple/CSimpleTitleRegion.hpp" #include "ui/simple/CSimpleTop.hpp" #include "util/Lua.hpp" -#include "util/StringTo.hpp" #include #include #include diff --git a/src/ui/simple/CSimpleFrameScript.cpp b/src/ui/simple/CSimpleFrameScript.cpp index ba842ca..8fe7a44 100644 --- a/src/ui/simple/CSimpleFrameScript.cpp +++ b/src/ui/simple/CSimpleFrameScript.cpp @@ -3,12 +3,12 @@ #include "ui/CBackdropGenerator.hpp" #include "ui/FrameScript.hpp" #include "ui/FrameXML.hpp" +#include "ui/Util.hpp" #include "ui/simple/CSimpleFont.hpp" #include "ui/simple/CSimpleFontString.hpp" #include "ui/simple/CSimpleFrame.hpp" #include "ui/simple/CSimpleTexture.hpp" #include "util/Lua.hpp" -#include "util/StringTo.hpp" #include "util/Unimplemented.hpp" #include #include diff --git a/src/ui/simple/CSimpleHTML.cpp b/src/ui/simple/CSimpleHTML.cpp index d5d2627..2c642af 100644 --- a/src/ui/simple/CSimpleHTML.cpp +++ b/src/ui/simple/CSimpleHTML.cpp @@ -1,11 +1,11 @@ #include "ui/simple/CSimpleHTML.hpp" +#include "ui/Util.hpp" #include "ui/simple/CSimpleFontString.hpp" #include "ui/simple/CSimpleFontedFrameFont.hpp" #include "ui/simple/CSimpleHTMLScript.hpp" #include "ui/simple/CSimpleTop.hpp" #include "util/CStatus.hpp" #include "util/SFile.hpp" -#include "util/StringTo.hpp" #include int32_t CSimpleHTML::s_metatable; diff --git a/src/ui/simple/CSimpleSlider.cpp b/src/ui/simple/CSimpleSlider.cpp index 81d64d2..4bfbe8f 100644 --- a/src/ui/simple/CSimpleSlider.cpp +++ b/src/ui/simple/CSimpleSlider.cpp @@ -1,10 +1,10 @@ #include "ui/simple/CSimpleSlider.hpp" #include "math/Utils.hpp" #include "ui/LoadXML.hpp" +#include "ui/Util.hpp" #include "ui/simple/CSimpleSliderScript.hpp" #include "ui/simple/CSimpleTexture.hpp" #include "util/Lua.hpp" -#include "util/StringTo.hpp" #include #include diff --git a/src/ui/simple/CSimpleStatusBar.cpp b/src/ui/simple/CSimpleStatusBar.cpp index c3c0d28..7cb197e 100644 --- a/src/ui/simple/CSimpleStatusBar.cpp +++ b/src/ui/simple/CSimpleStatusBar.cpp @@ -1,10 +1,10 @@ #include "ui/simple/CSimpleStatusBar.hpp" #include "ui/LoadXML.hpp" +#include "ui/Util.hpp" #include "ui/simple/CSimpleStatusBarScript.hpp" #include "ui/simple/CSimpleTexture.hpp" #include "util/CStatus.hpp" #include "util/Lua.hpp" -#include "util/StringTo.hpp" #include int32_t CSimpleStatusBar::s_metatable; diff --git a/src/ui/simple/CSimpleTexture.cpp b/src/ui/simple/CSimpleTexture.cpp index 873929d..b385232 100644 --- a/src/ui/simple/CSimpleTexture.cpp +++ b/src/ui/simple/CSimpleTexture.cpp @@ -9,7 +9,6 @@ #include "ui/Util.hpp" #include "ui/simple/CSimpleFrame.hpp" #include "ui/simple/CSimpleTextureScript.hpp" -#include "util/StringTo.hpp" #include #include #include diff --git a/src/ui/simple/CSimpleTextureScript.cpp b/src/ui/simple/CSimpleTextureScript.cpp index ada51de..4ab329f 100644 --- a/src/ui/simple/CSimpleTextureScript.cpp +++ b/src/ui/simple/CSimpleTextureScript.cpp @@ -1,8 +1,8 @@ #include "ui/simple/CSimpleTextureScript.hpp" #include "ui/Types.hpp" +#include "ui/Util.hpp" #include "ui/simple/CSimpleTexture.hpp" #include "util/Lua.hpp" -#include "util/StringTo.hpp" #include "util/Unimplemented.hpp" #include diff --git a/src/util/StringTo.cpp b/src/util/StringTo.cpp deleted file mode 100644 index 7ba51c3..0000000 --- a/src/util/StringTo.cpp +++ /dev/null @@ -1,161 +0,0 @@ -#include "util/StringTo.hpp" -#include "util/Lua.hpp" -#include - -uint64_t StringToClickAction(const char* actionStr) { - if (!actionStr || !*actionStr) { - return 0; - } - - if (!SStrCmpI(actionStr, "LeftButtonDown", STORM_MAX_STR)) { - return 1; - } - - if (!SStrCmpI(actionStr, "LeftButtonUp", STORM_MAX_STR)) { - return 0x80000000; - } - - if (!SStrCmpI(actionStr, "MiddleButtonDown", STORM_MAX_STR)) { - return 2; - } - - if (!SStrCmpI(actionStr, "MiddleButtonUp", STORM_MAX_STR)) { - return 0; - } - - if (!SStrCmpI(actionStr, "RightButtonDown", STORM_MAX_STR)) { - return 4; - } - - if (!SStrCmpI(actionStr, "RightButtonUp", STORM_MAX_STR)) { - return 0; - } - - // TODO remaining buttons - - return 0; -} - -int32_t StringToBOOL(const char* str) { - return StringToBOOL(str, 0); -} - -bool StringToBOOL(const char* str, int32_t def) { - if (!str) { - return def; - } - - switch (*str) { - case '0': - case 'F': - case 'N': - case 'f': - case 'n': - return false; - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'T': - case 'Y': - case 't': - case 'y': - return true; - - default: - if (!SStrCmpI(str, "off", 0x7FFFFFFFu) || !SStrCmpI(str, "disabled", 0x7FFFFFFFu)) { - return false; - } - - if (!SStrCmpI(str, "on", 0x7FFFFFFFu) || !SStrCmpI(str, "enabled", 0x7FFFFFFFu)) { - return true; - } - - return def; - } -} - -bool StringToBOOL(lua_State* L, int32_t idx, int32_t def) { - bool result; - const char* str; - - switch (lua_type(L, idx)) { - case LUA_TNIL: - result = false; - break; - - case LUA_TBOOLEAN: - result = lua_toboolean(L, idx); - break; - - case LUA_TNUMBER: - result = lua_tonumber(L, idx) != 0; - break; - - case LUA_TSTRING: - str = lua_tostring(L, idx); - result = StringToBOOL(str, def); - break; - - default: - result = def; - break; - } - - return result; -} - -int32_t StringToDrawLayer(const char* string, int32_t& layer) { - struct LayerEntry { - int32_t layer; - const char* string; - }; - - static LayerEntry layerMap[] = { - { 0, "BACKGROUND" }, - { 1, "BORDER" }, - { 2, "ARTWORK" }, - { 3, "OVERLAY" }, - { 4, "HIGHLIGHT" } - }; - - for (const auto& entry : layerMap) { - if (!SStrCmpI(entry.string, string)) { - layer = entry.layer; - return 1; - } - } - - return 0; -} - -int32_t StringToJustify(const char* string, uint32_t& justify) { - struct JustifyEntry { - uint32_t value; - const char* string; - }; - - static JustifyEntry justifyMap[] = { - { 0x1, "LEFT" }, - { 0x2, "CENTER" }, - { 0x4, "RIGHT" }, - { 0x8, "TOP" }, - { 0x10, "MIDDLE" }, - { 0x20, "BOTTOM" } - }; - - for (const auto& entry : justifyMap) { - if (!SStrCmpI(entry.string, string)) { - justify = entry.value; - return 1; - } - } - - return 0; -} diff --git a/src/util/StringTo.hpp b/src/util/StringTo.hpp deleted file mode 100644 index 18d4825..0000000 --- a/src/util/StringTo.hpp +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef UTIL_STRING_TO_HPP -#define UTIL_STRING_TO_HPP - -#include - -struct lua_State; - -uint64_t StringToClickAction(const char* actionStr); - -int32_t StringToBOOL(const char*); - -bool StringToBOOL(const char*, int32_t); - -bool StringToBOOL(lua_State*, int32_t, int32_t); - -int32_t StringToDrawLayer(const char*, int32_t&); - -int32_t StringToJustify(const char*, uint32_t&); - -#endif