menumanager.c 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #ifdef GAME_TEMPLATE
  2. enum DialogPriority
  3. {
  4. INFORMATIVE,
  5. WARNING,
  6. CRITICAL
  7. };
  8. enum DialogResult
  9. {
  10. PENDING,
  11. OK,
  12. YES,
  13. NO,
  14. CANCEL,
  15. };
  16. enum ScriptMenuPresetEnum
  17. {
  18. };
  19. class MenuManager
  20. {
  21. proto native MenuBase OpenMenu(ScriptMenuPresetEnum preset, int userId = 0, bool unique = false);
  22. proto native MenuBase OpenDialog(ScriptMenuPresetEnum preset, int priority = DialogPriority.INFORMATIVE, int iUserId = 0, bool unique = false);
  23. proto native MenuBase FindMenuByPreset(ScriptMenuPresetEnum preset);
  24. proto native MenuBase FindMenuByUserId(int userId);
  25. proto native MenuBase GetTopMenu();
  26. proto native bool IsAnyMenuOpen();
  27. proto native bool IsAnyDialogOpen();
  28. proto native bool CloseMenuByPreset(ScriptMenuPresetEnum preset);
  29. proto native bool CloseMenuByUserId(int userId);
  30. proto native bool CloseMenu(MenuBase menu);
  31. protected void MenuManager();
  32. protected void ~MenuManager();
  33. };
  34. class MenuBindAttribute
  35. {
  36. string m_MenuItemName;
  37. void MenuBindAttribute(string menuItemName = "")
  38. {
  39. m_MenuItemName = menuItemName;
  40. }
  41. }
  42. class MenuBase: ScriptedWidgetEventHandler
  43. {
  44. proto native int GetUserId();
  45. proto native Widget GetRootWidget();
  46. proto external MenuBase BindItem(string menuItemName, func callback);
  47. proto native MenuBase SetLabel(string menuItemName, string text);
  48. proto native Widget GetItemWidget(string menuItemName);
  49. proto native MenuManager GetManager();
  50. proto native void Close();
  51. void OnMenuFocusGained() {}
  52. void OnMenuFocusLost() {}
  53. void OnMenuShow() {}
  54. void OnMenuHide() {}
  55. void OnMenuOpen() {}
  56. void OnMenuClose() {}
  57. void OnMenuInit() {}
  58. void OnMenuUpdate(float tDelta) {}
  59. void OnMenuItem(string menuItemName, bool changed, bool finished) {}
  60. protected void MenuBase();
  61. protected void ~MenuBase();
  62. };
  63. class MessageBox: MenuBase
  64. {
  65. [MenuBindAttribute()]
  66. void Ok()
  67. {
  68. Close();
  69. }
  70. }
  71. #ifdef PLATFORM_WINDOWS
  72. class WorldEditorIngame: MenuBase
  73. {
  74. proto native bool LoadWorld(string worldFilePath);
  75. proto native bool SaveWorld();
  76. };
  77. #endif
  78. #endif