146 lines
3.2 KiB
Plaintext
146 lines
3.2 KiB
Plaintext
scriptname SKI_SettingsManager extends SKI_QuestBase
|
|
|
|
; CONSTANTS ---------------------------------------------------------------------------------------
|
|
|
|
string property MENU_ROOT = "_global.skyui.util.ConfigManager" autoReadonly
|
|
|
|
string property INVENTORY_MENU = "InventoryMenu" autoReadonly
|
|
string property MAGIC_MENU = "MagicMenu" autoReadonly
|
|
string property CONTAINER_MENU = "ContainerMenu" autoReadonly
|
|
string property BARTER_MENU = "BarterMenu" autoReadonly
|
|
string property GIFT_MENU = "GiftMenu" autoReadonly
|
|
string property CRAFTING_MENU = "Crafting Menu" autoReadonly
|
|
|
|
|
|
; PRIVATE VARIABLES -------------------------------------------------------------------------------
|
|
|
|
int _overrideCount = 0
|
|
string[] _overrideKeys
|
|
string[] _overrideValues
|
|
|
|
string _currentMenu
|
|
|
|
|
|
; INITIALIZATION ----------------------------------------------------------------------------------
|
|
|
|
event OnInit()
|
|
_overrideKeys = new string[128]
|
|
_overrideValues = new string[128]
|
|
|
|
int i = 0
|
|
while (i<128)
|
|
_overrideKeys[i] = ""
|
|
_overrideValues[i] = ""
|
|
i += 1
|
|
endWhile
|
|
|
|
OnGameReload()
|
|
endEvent
|
|
|
|
; @implements SKI_QuestBase
|
|
event OnGameReload()
|
|
RegisterForMenu(INVENTORY_MENU)
|
|
RegisterForMenu(MAGIC_MENU)
|
|
RegisterForMenu(CONTAINER_MENU)
|
|
RegisterForMenu(BARTER_MENU)
|
|
RegisterForMenu(GIFT_MENU)
|
|
RegisterForMenu(CRAFTING_MENU)
|
|
RegisterForModEvent("SKICO_setConfigOverride", "OnSetConfigOverride")
|
|
endEvent
|
|
|
|
|
|
; EVENTS ------------------------------------------------------------------------------------------
|
|
|
|
event OnMenuOpen(string a_menuName)
|
|
GotoState("LOCKED")
|
|
; Check if it's still open
|
|
if (UI.IsMenuOpen(a_menuName))
|
|
_currentMenu = a_menuName
|
|
UI.InvokeStringA(a_menuName, MENU_ROOT + ".setExternalOverrideKeys", _overrideKeys)
|
|
UI.InvokeStringA(a_menuName, MENU_ROOT + ".setExternalOverrideValues", _overrideValues)
|
|
endIf
|
|
GotoState("")
|
|
endEvent
|
|
|
|
event OnSetConfigOverride(string a_eventName, string a_strArg, float a_numArg, Form a_sender)
|
|
string overrideKey = a_strArg
|
|
string overrideValue = UI.GetString(_currentMenu, MENU_ROOT + ".out_overrides." + overrideKey)
|
|
|
|
SetOverride(overrideKey, overrideValue)
|
|
endEvent
|
|
|
|
; ----------------------------------------------
|
|
state LOCKED
|
|
|
|
event OnMenuOpen(string a_menuName)
|
|
endEvent
|
|
|
|
endState
|
|
|
|
|
|
; FUNCTIONS ---------------------------------------------------------------------------------------
|
|
|
|
; @interface
|
|
bool function SetOverride(string a_key, string a_value)
|
|
if (a_key == "")
|
|
return false
|
|
endIf
|
|
|
|
; Existing override?
|
|
int index = _overrideKeys.Find(a_key)
|
|
if (index != -1)
|
|
_overrideValues[index] = a_value
|
|
|
|
return true
|
|
|
|
; New override
|
|
else
|
|
if (_overrideCount >= 128)
|
|
return false
|
|
endIf
|
|
|
|
index = NextFreeIndex()
|
|
if (index == -1)
|
|
return false
|
|
endIf
|
|
|
|
_overrideKeys[index] = a_key
|
|
_overrideValues[index] = a_value
|
|
_overrideCount += 1
|
|
|
|
return true
|
|
endIf
|
|
|
|
endFunction
|
|
|
|
; @interface
|
|
bool function ClearOverride(string a_key)
|
|
if (a_key == "")
|
|
return false
|
|
endIf
|
|
|
|
int index = _overrideKeys.Find(a_key)
|
|
if (index == -1)
|
|
return false
|
|
endIf
|
|
|
|
_overrideKeys[index] = ""
|
|
_overrideValues[index] = ""
|
|
_overrideCount -= 1
|
|
|
|
return true
|
|
endFunction
|
|
|
|
int function NextFreeIndex()
|
|
int i = 0
|
|
|
|
while (i < _overrideKeys.length)
|
|
if (_overrideKeys[i] == "")
|
|
return i
|
|
endIf
|
|
i += 1
|
|
endWhile
|
|
|
|
return -1
|
|
endFunction
|