enderalse/scripts/source/uilib_1.psc

179 lines
5.7 KiB
Plaintext

ScriptName UILIB_1 Extends Form
{SkyUILib API - Version 1}
;Private variables
Bool bMenuOpen
String sTitle
String sInitialText
String sInput
String[] sOptions
Int iStartIndex
Int iDefaultIndex
Int iInput
;Text input
Function TextInputMenu_Open(Form akClient) Global
akClient.RegisterForModEvent("UILIB_1_textInputOpen", "OnTextInputOpen")
akClient.RegisterForModEvent("UILIB_1_textInputClose", "OnTextInputClose")
UI.OpenCustomMenu("uilib/uilib_1_textinputmenu")
EndFunction
Function TextInputMenu_SetData(String asTitle = "", String asInitialText = "") Global
UI.InvokeNumber("CustomMenu", "_root.textInputDialog.setPlatform", (Game.UsingGamepad() as Int))
String[] sData = new String[2]
sData[0] = asTitle
sData[1] = asInitialText
UI.InvokeStringA("CustomMenu", "_root.textInputDialog.initData", sData)
EndFunction
Function TextInputMenu_Release(Form akClient) Global
akClient.UnregisterForModEvent("UILIB_1_textInputOpen")
akClient.UnregisterForModEvent("UILIB_1_textInputClose")
EndFunction
String Function ShowTextInput(String asTitle = "", String asInitialText = "")
If(bMenuOpen)
Return ""
EndIf
bMenuOpen = True
sInput = ""
sTitle = asTitle
sInitialText = asInitialText
TextInputMenu_Open(Self)
While(bMenuOpen)
Utility.WaitMenuMode(0.1)
EndWhile
TextInputMenu_Release(Self)
Return sInput
EndFunction
Event OnTextInputOpen(String asEventName, String asStringArg, Float afNumArg, Form akSender)
If(asEventName == "UILIB_1_textInputOpen")
TextInputMenu_SetData(sTitle, sInitialText)
EndIf
EndEvent
Event OnTextInputClose(String asEventName, String asInput, Float afCancelled, Form akSender)
If(asEventName == "UILIB_1_textInputClose")
If(afCancelled as Bool)
sInput = ""
Else
sInput = asInput
EndIf
bMenuOpen = False
EndIf
EndEvent
;List
Function ListMenu_Open(Form akClient) Global
akClient.RegisterForModEvent("UILIB_1_listMenuOpen", "OnListMenuOpen")
akClient.RegisterForModEvent("UILIB_1_listMenuClose", "OnListMenuClose")
UI.OpenCustomMenu("uilib/uilib_1_listmenu")
EndFunction
Function ListMenu_SetData(String asTitle = "", String[] asOptions, Int aiStartIndex, Int aiDefaultIndex) Global
UI.InvokeNumber("CustomMenu", "_root.listDialog.setPlatform", (Game.UsingGamepad() as Int))
UI.InvokeStringA("CustomMenu", "_root.listDialog.initListData", asOptions)
Int iHandle = UICallback.Create("CustomMenu", "_root.listDialog.initListParams")
If(iHandle)
UICallback.PushString(iHandle, asTitle)
UICallback.PushInt(iHandle, aiStartIndex)
UICallback.PushInt(iHandle, aiDefaultIndex)
UICallback.Send(iHandle)
EndIf
EndFunction
Function ListMenu_Release(Form akClient) Global
akClient.UnregisterForModEvent("UILIB_1_listMenuOpen")
akClient.UnregisterForModEvent("UILIB_1_listMenuClose")
EndFunction
Int Function ShowList(String asTitle = "", String[] asOptions, Int aiStartIndex, Int aiDefaultIndex)
If(bMenuOpen)
Return -1
EndIf
bMenuOpen = True
iInput = -1
sTitle = asTitle
sOptions = asOptions
iStartIndex = aiStartIndex
iDefaultIndex = aiDefaultIndex
ListMenu_Open(Self)
While(bMenuOpen)
Utility.WaitMenuMode(0.1)
EndWhile
ListMenu_Release(Self)
Return iInput
EndFunction
Event OnListMenuOpen(String asEventName, String asStringArg, Float afNumArg, Form akSender)
If(asEventName == "UILIB_1_listMenuOpen")
ListMenu_SetData(sTitle, sOptions, iStartIndex, iDefaultIndex)
EndIf
EndEvent
Event OnListMenuClose(String asEventName, String asStringArg, Float afInput, Form akSender)
If(asEventName == "UILIB_1_listMenuClose")
iInput = afInput as Int
bMenuOpen = False
EndIf
EndEvent
;Notification
Function ShowNotification(String asMessage, String asColor = "#FFFFFF")
If(!NotificationMenu_PrepareArea())
Return
EndIf
Int iHandle = UICallback.Create("HUD Menu", "_root.HUDMovieBaseInstance.uilib_1_notificationAreaContainer.notificationArea.ShowMessage")
If(iHandle)
UICallback.PushString(iHandle, asMessage)
UICallback.PushString(iHandle, asColor)
UICallback.Send(iHandle)
EndIf
EndFunction
Function ShowNotificationIcon(String asMessage, String asIconPath, Int aiIconFrame = 0, String asColor = "#FFFFFF")
If(!NotificationMenu_PrepareArea())
Return
EndIf
Int iHandle = UICallback.Create("HUD Menu", "_root.HUDMovieBaseInstance.uilib_1_notificationAreaContainer.notificationArea.ShowIconMessage")
If(iHandle)
UICallback.PushString(iHandle, asMessage)
UICallback.PushString(iHandle, asColor)
UICallback.PushString(iHandle, asIconPath)
UICallback.PushInt(iHandle, aiIconFrame)
UICallback.Send(iHandle)
EndIf
EndFunction
Bool Function NotificationMenu_PrepareArea() global
Int iVersion = UI.GetInt("HUD Menu", "_global.uilib_1.NotificationArea.UILIB_VERSION")
If(iVersion == 0)
Int iHandle = UICallback.Create("HUD Menu", "_root.HUDMovieBaseInstance.createEmptyMovieClip")
If(!iHandle)
Return False
EndIf
UICallback.PushString(iHandle, "uilib_1_notificationAreaContainer")
UICallback.PushInt(iHandle, -16380)
If(!UICallback.Send(iHandle))
Return False
EndIf
UI.InvokeString("HUD Menu", "_root.HUDMovieBaseInstance.uilib_1_notificationAreaContainer.loadMovie", "uilib/uilib_1_notificationarea.swf")
Utility.Wait(0.5)
iVersion = UI.GetInt("HUD Menu", "_global.uilib_1.NotificationArea.UILIB_VERSION")
If(iVersion == 0)
UI.InvokeString("HUD Menu", "_root.HUDMovieBaseInstance.uilib_1_notificationAreaContainer.loadMovie", "exported/uilib/uilib_1_notificationarea.swf")
Utility.Wait(0.5)
iVersion = UI.GetInt("HUD Menu", "_global.uilib_1.NotificationArea.UILIB_VERSION")
If(iVersion == 0)
Debug.Trace("===== UILib: Notification injection failed =====")
Return False
EndIf
UI.InvokeString("HUD Menu", "_root.HUDMovieBaseInstance.uilib_1_notificationAreaContainer.SetRootPath", "exported/")
EndIf
EndIf
Return True
EndFunction