4
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

91 lines
2.3 KiB

Scriptname UISelectionMenu extends UIMenuBase
FormList Property SelectedForms Auto
string property ROOT_MENU = "CustomMenu" autoReadonly
string Property MENU_ROOT = "_root.MenuHolder.Menu_mc." autoReadonly
Form _form = None
Form _receiver = None
Form _selected = None
int _mode = 0
Form Function GetResultForm()
if _mode == 0
return _selected
elseif _mode == 1
return SelectedForms
endif
return None
EndFunction
Function SetPropertyInt(string propertyName, int value)
If propertyName == "menuMode"
_mode = value
Endif
EndFunction
Function ResetMenu()
isResetting = true
_selected = None
SelectedForms.Revert()
isResetting = false
EndFunction
int Function OpenMenu(Form aForm = None, Form aReceiver = None)
_form = aForm
_receiver = aReceiver
If !BlockUntilClosed() || !WaitForReset()
return 0
Endif
RegisterForModEvent("UISelectionMenu_LoadMenu", "OnLoadMenu")
RegisterForModEvent("UISelectionMenu_CloseMenu", "OnUnloadMenu")
RegisterForModEvent("UISelectionMenu_SelectForm", "OnSelect")
RegisterForModEvent("UISelectionMenu_SelectionReady", "OnSelectForm")
If _receiver
_receiver.RegisterForModEvent("UISelectionMenu_SelectionChanged", "OnSelectForm")
Endif
Lock()
UI.OpenCustomMenu("selectionmenu")
If !WaitLock()
return 0
Endif
return 1
EndFunction
string Function GetMenuName()
return "UISelectionMenu"
EndFunction
; Push forms to FormList
Event OnSelect(string eventName, string strArg, float numArg, Form formArg)
if _mode == 0
_selected = formArg
elseif _mode == 1
SelectedForms.AddForm(formArg)
endif
EndEvent
; Unlock selection menu
Event OnSelectForm(string eventName, string strArg, float numArg, Form formArg)
Unlock()
EndEvent
Event OnLoadMenu(string eventName, string strArg, float numArg, Form formArg)
UI.InvokeForm(ROOT_MENU, MENU_ROOT + "SetSelectionMenuFormData", _form)
UI.InvokeFloat(ROOT_MENU, MENU_ROOT + "SetSelectionMenuMode", _mode as float)
EndEvent
Event OnUnloadMenu(string eventName, string strArg, float numArg, Form formArg)
UnregisterForModEvent("UISelectionMenu_LoadMenu")
UnregisterForModEvent("UISelectionMenu_CloseMenu")
UnregisterForModEvent("UISelectionMenu_SelectForm")
UnregisterForModEvent("UISelectionMenu_SelectionReady")
If _receiver
_receiver.UnregisterForModEvent("UISelectionMenu_SelectionChanged")
Endif
EndEvent