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