AtomicMain.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. //
  2. // Copyright (c) 2014-2017, THUNDERBEAST GAMES LLC All rights reserved
  3. //
  4. // Permission is hereby granted, free of charge, to any person obtaining a copy
  5. // of this software and associated documentation files (the "Software"), to deal
  6. // in the Software without restriction, including without limitation the rights
  7. // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  8. // copies of the Software, and to permit persons to whom the Software is
  9. // furnished to do so, subject to the following conditions:
  10. //
  11. // The above copyright notice and this permission notice shall be included in
  12. // all copies or substantial portions of the Software.
  13. //
  14. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  17. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  18. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  19. // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  20. // THE SOFTWARE.
  21. //
  22. // UIPeriodicTable example
  23. using System;
  24. using AtomicEngine;
  25. using AtomicPlayer;
  26. // list all the classes
  27. using static code_table;
  28. using static code_uibargraph;
  29. using static code_uibutton;
  30. using static code_uicheckbox;
  31. using static code_uiclicklabel;
  32. using static code_uicolorwheel;
  33. using static code_uicolorwidget;
  34. using static code_uicontainer;
  35. using static code_uieditfield;
  36. using static code_uifinderwindow;
  37. using static code_uifontdescription;
  38. using static code_uiimagewidget;
  39. using static code_uiinlineselect;
  40. using static code_uilayout;
  41. using static code_uilayoutparams;
  42. using static code_uimenuitem;
  43. using static code_uimenuwindow;
  44. using static code_uimessagewindow;
  45. using static code_uipromptwindow;
  46. using static code_uipulldownmenu;
  47. using static code_uiradiobutton;
  48. using static code_uisceneview;
  49. using static code_uiscrollbar;
  50. using static code_uiscrollcontainer;
  51. using static code_uisection;
  52. using static code_uiselectdropdown;
  53. using static code_uiselectitem;
  54. using static code_uiselectlist;
  55. using static code_uiseparator;
  56. using static code_uiskinimage;
  57. using static code_uislider;
  58. using static code_uitabcontainer;
  59. using static code_uitextfield;
  60. using static code_uitexturewidget;
  61. using static code_uiwidget;
  62. using static code_uiwindow;
  63. public class AtomicMain : AppDelegate {
  64. public static UIView myuivew;
  65. public static UITextField mylog;
  66. public static UILayout mylayout;
  67. public override void Start ()
  68. {
  69. AtomicNET.GetSubsystem<Player> ().LoadScene ("Scenes/Scene.scene");
  70. var ui = GetSubsystem<UI> ();
  71. ui.AddFont ("Textures/BrokenGlass.ttf", "BrokenGlass"); // add a gooder font
  72. ui.LoadSkin ("Textures/desktop.tb.txt"); // load in the app skin
  73. ResourceCache cache = GetSubsystem<ResourceCache> ();
  74. Graphics graphics = GetSubsystem<Graphics> ();
  75. graphics.SetWindowTitle ("PeriodicApp");
  76. Image icon = cache.GetResource<Image> ("Textures/AtomicLogo32.png");
  77. graphics.SetWindowIcon (icon);
  78. myuivew = new UIView ();
  79. mylayout = new UILayout (); // make the host widget for all visible ui
  80. mylayout.SetId ("UIPeriodicTable"); // tag it, like a big game scientist
  81. mylayout.SetRect (myuivew.GetRect ()); //size it to fill the screen area
  82. mylayout.SetLayoutConfig ("YAGAC"); //all-in-one setting
  83. mylayout.SetSkinBg ("background_solid"); // make it look gooder
  84. mylayout.Load ("Scenes/main_layout.ui.txt"); // load the main layout
  85. myuivew.AddChild (mylayout); // And make it show up.
  86. UITabContainer maintb = (UITabContainer)mylayout.GetWidget ("maintabs");
  87. UITabContainer acttb = (UITabContainer)mylayout.GetWidget ("primarytabs");
  88. UITabContainer semitb = (UITabContainer)mylayout.GetWidget ("moretabs");
  89. UITabContainer viewtb = (UITabContainer)mylayout.GetWidget ("supporttabs");
  90. UITabContainer supporttb = (UITabContainer)mylayout.GetWidget ("atomictabs");
  91. supporttb.SetCurrentPage (0);
  92. viewtb.SetCurrentPage (0);
  93. semitb.SetCurrentPage (0);
  94. acttb.SetCurrentPage (0);
  95. maintb.SetCurrentPage (0); // do this or else the tab contents look like crap!
  96. mylog = (UITextField)mylayout.GetWidget ("LogText");
  97. UIWidget ea = mylayout.GetWidget ("exitapp");
  98. var cota = new code_table ();
  99. cota.Setup (mylayout);
  100. var cobg = new code_uibargraph ();
  101. cobg.Setup (mylayout.GetWidget ("pageuibargraph"));
  102. var cobu = new code_uibutton ();
  103. cobu.Setup (mylayout.GetWidget ("pageuibutton"));
  104. var cocb = new code_uicheckbox ();
  105. cocb.Setup (mylayout.GetWidget ("pageuicheckbox"));
  106. var cocl = new code_uiclicklabel ();
  107. cocl.Setup (mylayout.GetWidget ("pageuiclicklabel"));
  108. var coch = new code_uicolorwheel ();
  109. coch.Setup (mylayout.GetWidget ("pageuicolorwheel"));
  110. var cocw = new code_uicolorwidget ();
  111. cocw.Setup (mylayout.GetWidget ("pageuicolorwidget"));
  112. var coco = new code_uicontainer ();
  113. coco.Setup (mylayout.GetWidget ("pageuicontainer"));
  114. var coef = new code_uieditfield ();
  115. coef.Setup (mylayout.GetWidget ("pageuieditfield"));
  116. var cofw = new code_uifinderwindow ();
  117. cofw.Setup (mylayout.GetWidget ("pageuifinderwindow"));
  118. var cofd = new code_uifontdescription ();
  119. cofd.Setup (mylayout.GetWidget ("pageuifontdescription"));
  120. var coiw = new code_uiimagewidget ();
  121. coiw.Setup (mylayout.GetWidget ("pageuiimagewidget"));
  122. var cois = new code_uiinlineselect ();
  123. cois.Setup (mylayout.GetWidget ("pageuiinlineselect"));
  124. var colo = new code_uilayout ();
  125. colo.Setup (mylayout.GetWidget ("pageuilayout"));
  126. var colp = new code_uilayoutparams ();
  127. colp.Setup (mylayout.GetWidget ("pageuilayoutparams"));
  128. var comi = new code_uimenuitem ();
  129. comi.Setup (mylayout.GetWidget ("pageuimenuitem"));
  130. var comw = new code_uimenuwindow ();
  131. comw.Setup (mylayout.GetWidget ("pageuimenuwindow"));
  132. var come = new code_uimessagewindow ();
  133. come.Setup (mylayout.GetWidget ("pageuimessagewindow"));
  134. var copw = new code_uipromptwindow ();
  135. copw.Setup (mylayout.GetWidget ("pageuipromptwindow"));
  136. var copd = new code_uipulldownmenu ();
  137. copd.Setup (mylayout.GetWidget ("pageuipulldownmenu"));
  138. var corb = new code_uiradiobutton ();
  139. corb.Setup (mylayout.GetWidget ("pageuiradiobutton"));
  140. var cosv = new code_uisceneview ();
  141. cosv.Setup (mylayout.GetWidget ("pageuisceneview"));
  142. var cosb = new code_uiscrollbar ();
  143. cosb.Setup (mylayout.GetWidget ("pageuiscrollbar"));
  144. var cosc = new code_uiscrollcontainer ();
  145. cosc.Setup (mylayout.GetWidget ("pageuiscrollcontainer"));
  146. var cose = new code_uisection ();
  147. cose.Setup (mylayout.GetWidget ("pageuisection"));
  148. var cosd = new code_uiselectdropdown ();
  149. cosd.Setup (mylayout.GetWidget ("pageuiselectdropdown"));
  150. var cosi = new code_uiselectitem ();
  151. cosi.Setup (mylayout.GetWidget ("pageuiselectitem"));
  152. var cosl = new code_uiselectlist ();
  153. cosl.Setup (mylayout.GetWidget ("pageuiselectlist"));
  154. var cosp = new code_uiseparator ();
  155. cosp.Setup (mylayout.GetWidget ("pageuiseparator"));
  156. var cosk = new code_uiskinimage ();
  157. cosk.Setup (mylayout.GetWidget ("pageuiskinimage"));
  158. var cosa = new code_uislider ();
  159. cosa.Setup (mylayout.GetWidget ("pageuislider"));
  160. var cotc = new code_uitabcontainer ();
  161. cotc.Setup (mylayout.GetWidget ("pageuitabcontainer"));
  162. var cotf = new code_uitextfield ();
  163. cotf.Setup (mylayout.GetWidget ("pageuitextfield"));
  164. var cotw = new code_uitexturewidget ();
  165. cotw.Setup (mylayout.GetWidget ("pageuitexturewidget"));
  166. var cowd = new code_uiwidget ();
  167. cowd.Setup (mylayout.GetWidget ("pageuiwidget"));
  168. var cowi = new code_uiwindow ();
  169. cowi.Setup (mylayout.GetWidget ("pageuiwindow"));
  170. SubscribeToEvent<WidgetEvent> (ea, ev => {
  171. if (ev.Type == UI_EVENT_TYPE.UI_EVENT_TYPE_CLICK) {
  172. GetSubsystem<Engine> ().Exit ();
  173. }
  174. });
  175. SubscribeToEvent<KeyDownEvent> (e => {
  176. if (e.Key == Constants.KEY_ESCAPE)
  177. GetSubsystem<Engine> ().Exit ();
  178. });
  179. }
  180. public static void AppLog (string logtext)
  181. {
  182. mylog.SetText (logtext);
  183. }
  184. public static void ViewCode (String filename, UIWidget layoutParent)
  185. {
  186. var cache = GetSubsystem<ResourceCache> ();
  187. UIWindow window = new UIWindow ();
  188. window.SetSettings (UI_WINDOW_SETTINGS.UI_WINDOW_SETTINGS_DEFAULT);
  189. window.SetText ("Code Viewer");
  190. window.Load ("Scenes/view_code.ui.txt");
  191. File filex = cache.GetFile (filename);
  192. string textx = filex.ReadText ();
  193. filex.Close ();
  194. UIWidget coder = window.GetWidget ("viewCodeText");
  195. coder.SetText (textx);
  196. window.ResizeToFitContent ();
  197. myuivew.AddChild (window);
  198. window.Center ();
  199. UIWidget someok = window.GetWidget ("viewCodeOK");
  200. someok.SubscribeToEvent<WidgetEvent> (someok, ev => {
  201. if (ev.Type == UI_EVENT_TYPE.UI_EVENT_TYPE_CLICK) {
  202. UIWindow mywindow = (UIWindow)FindTheWindowParent (ev.Target);
  203. if (!mywindow.Equals (null))
  204. mywindow.Close ();
  205. }
  206. });
  207. }
  208. public static UIWidget FindTheWindowParent (UIWidget fromThisWidget)
  209. {
  210. if (fromThisWidget.Equals (null))
  211. return null;
  212. string tname = fromThisWidget.GetTypeName ();
  213. if (tname == "UIWindow" || tname == "UIDockWindow")
  214. return fromThisWidget;
  215. UIWidget tbw = fromThisWidget.GetParent ();
  216. while (!tbw.Equals (null)) {
  217. string stname = tbw.GetTypeName ();
  218. if (stname == "UIWindow" || stname == "UIDockWindow")
  219. return tbw;
  220. tbw = tbw.GetParent ();
  221. }
  222. return null;
  223. }
  224. public static string EventReport (int eventNumber)
  225. {
  226. switch (eventNumber) {
  227. case 0:
  228. return "UI_EVENT_TYPE_CLICK";
  229. case 1:
  230. return "UI_EVENT_TYPE_LONG_CLICK";
  231. case 2:
  232. return "UI_EVENT_TYPE_POINTER_DOWN";
  233. case 3:
  234. return "UI_EVENT_TYPE_POINTER_UP";
  235. case 4:
  236. return "UI_EVENT_TYPE_POINTER_MOVE";
  237. case 5:
  238. return "UI_EVENT_TYPE_RIGHT_POINTER_DOWN";
  239. case 6:
  240. return "UI_EVENT_TYPE_RIGHT_POINTER_UP";
  241. case 7:
  242. return "UI_EVENT_TYPE_WHEEL";
  243. case 8:
  244. return "UI_EVENT_TYPE_CHANGED";
  245. case 9:
  246. return "UI_EVENT_TYPE_KEY_DOWN";
  247. case 10:
  248. return "UI_EVENT_TYPE_KEY_UP";
  249. case 11:
  250. return "UI_EVENT_TYPE_SHORTCUT";
  251. case 12:
  252. return "UI_EVENT_TYPE_CONTEXT_MENU";
  253. case 13:
  254. return "UI_EVENT_TYPE_FILE_DROP";
  255. case 14:
  256. return "UI_EVENT_TYPE_TAB_CHANGED";
  257. case 15:
  258. return "UI_EVENT_TYPE_CUSTOM";
  259. }
  260. return "EVENT_UKNOWN";
  261. }
  262. }