UILogic.lua 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. local UILogic = {
  2. Properties = {
  3. Debug = false,
  4. QuitInputEvent = "Quit",
  5. ResetInputEvent = "Reset",
  6. CtrlInputEvent = "Ctrl"
  7. },
  8. InputHandlers = {
  9. Quit = {},
  10. Reset = {},
  11. Ctrl = {}
  12. },
  13. GameplayEventHandlers = {
  14. OnCancel = {},
  15. OnQuit = {}
  16. }
  17. }
  18. function UILogic:OnActivate()
  19. self.ctrlPressed = false
  20. self.resetPressed = false
  21. self.quitCanvasVisible = false
  22. for event, handler in pairs(self.InputHandlers) do
  23. local id = InputEventNotificationId(event)
  24. handler.busHandler = InputEventNotificationBus.Connect(handler, id)
  25. handler.component = self
  26. end
  27. for event, handler in pairs(self.GameplayEventHandlers) do
  28. local id = GameplayNotificationId(EntityId(0), event, "float")
  29. handler.busHandler = GameplayNotificationBus.Connect(handler, id)
  30. handler.component = self
  31. end
  32. end
  33. function UILogic:SetCanvasVisible(visible)
  34. if visible then
  35. if self.quitCanvasVisible == false then
  36. self.quitCanvasVisible = true
  37. -- show cursor
  38. while UiCursorBus.Broadcast.IsUiCursorVisible() == false do
  39. UiCursorBus.Broadcast.IncrementVisibleCounter()
  40. end
  41. FlyCameraInputBus.Broadcast.SetIsEnabled(false)
  42. UiCanvasAssetRefBus.Event.LoadCanvas(self.entityId)
  43. end
  44. else
  45. self.quitCanvasVisible = false
  46. -- hide cursor
  47. UiCursorBus.Broadcast.DecrementVisibleCounter()
  48. FlyCameraInputBus.Broadcast.SetIsEnabled(true)
  49. UiCanvasAssetRefBus.Event.UnloadCanvas(self.entityId)
  50. end
  51. end
  52. function UILogic.GameplayEventHandlers.OnCancel:OnEventBegin(value)
  53. self.component:SetCanvasVisible(false)
  54. end
  55. function UILogic.GameplayEventHandlers.OnQuit:OnEventBegin(value)
  56. Debug.Log("Exiting application")
  57. ConsoleRequestBus.Broadcast.ExecuteConsoleCommand("quit")
  58. end
  59. function UILogic:Reset()
  60. if self.resetPressed and self.ctrlPressed then
  61. Debug.Log("Re-loading level")
  62. ROSConDemoRequestBus.Broadcast.ReloadLevel();
  63. --ConsoleRequestBus.Broadcast.ExecuteConsoleCommand("LoadLevel main")
  64. end
  65. end
  66. function UILogic.InputHandlers.Quit:OnPressed(value)
  67. self.component:SetCanvasVisible(true)
  68. end
  69. function UILogic.InputHandlers.Reset:OnPressed(value)
  70. self.component.resetPressed = true
  71. self.component:Reset()
  72. end
  73. function UILogic.InputHandlers.Reset:OnReleased(value)
  74. self.component.resetPressed = false
  75. end
  76. function UILogic.InputHandlers.Ctrl:OnPressed(value)
  77. self.component.ctrlPressed = true
  78. end
  79. function UILogic.InputHandlers.Ctrl:OnReleased(value)
  80. self.component.ctrlPressed = false
  81. end
  82. function UILogic:OnDeactivate()
  83. for event, handler in pairs(self.InputHandlers) do
  84. handler.busHandler:Disconnect()
  85. end
  86. for event, handler in pairs(self.GameplayEventHandlers) do
  87. handler.busHandler:Disconnect()
  88. end
  89. end
  90. return UILogic