gglib 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (446) hide show
  1. data/LICENSE +22 -0
  2. data/NEWS +75 -0
  3. data/TODO +5 -0
  4. data/{lib/examples → examples}/BasicExample.rb +70 -70
  5. data/examples/CheckBoxAndRadio.rb +54 -0
  6. data/{lib/examples → examples}/ConsoleDemo.rb +25 -25
  7. data/{lib/examples → examples}/FadeIn.rb +41 -39
  8. data/examples/README +1 -0
  9. data/{lib/examples → examples}/SplashScreen.rb +29 -29
  10. data/examples/img/bg.png +0 -0
  11. data/examples/img/bgblue.png +0 -0
  12. data/examples/img/bggray.png +0 -0
  13. data/examples/img/splash.png +0 -0
  14. data/lib/LICENSE +22 -0
  15. data/lib/NEWS +75 -0
  16. data/lib/TODO +5 -0
  17. data/lib/camera.rb +6 -6
  18. data/lib/carray.rb +70 -70
  19. data/lib/doc/classes/Camera.html +155 -0
  20. data/lib/doc/classes/Camera.src/M000012.html +19 -0
  21. data/lib/doc/classes/ConsoleDemoState.html +139 -0
  22. data/lib/doc/classes/ConsoleDemoState.src/M000008.html +19 -0
  23. data/lib/doc/classes/ConsoleDemoWindow.html +139 -0
  24. data/lib/doc/classes/ConsoleDemoWindow.src/M000013.html +20 -0
  25. data/lib/doc/classes/EndMenu.html +145 -0
  26. data/lib/doc/classes/EndMenu.src/M000010.html +19 -0
  27. data/lib/doc/classes/FadeExample.html +139 -0
  28. data/lib/doc/classes/FadeExample.src/M000009.html +20 -0
  29. data/lib/doc/classes/GGLib.html +196 -0
  30. data/lib/doc/classes/GGLib/Animation.html +287 -0
  31. data/lib/doc/classes/GGLib/Animation.src/M000235.html +27 -0
  32. data/lib/doc/classes/GGLib/Animation.src/M000236.html +18 -0
  33. data/lib/doc/classes/GGLib/Animation.src/M000237.html +24 -0
  34. data/lib/doc/classes/GGLib/Animation.src/M000238.html +18 -0
  35. data/lib/doc/classes/GGLib/Animation.src/M000239.html +20 -0
  36. data/lib/doc/classes/GGLib/Animation.src/M000240.html +19 -0
  37. data/lib/doc/classes/GGLib/Animation.src/M000241.html +47 -0
  38. data/lib/doc/classes/GGLib/Animation.src/M000242.html +18 -0
  39. data/lib/doc/classes/GGLib/Button.html +272 -0
  40. data/lib/doc/classes/GGLib/Button.src/M000187.html +22 -0
  41. data/lib/doc/classes/GGLib/Button.src/M000188.html +19 -0
  42. data/lib/doc/classes/GGLib/Button.src/M000189.html +19 -0
  43. data/lib/doc/classes/GGLib/Button.src/M000190.html +18 -0
  44. data/lib/doc/classes/GGLib/Button.src/M000191.html +23 -0
  45. data/lib/doc/classes/GGLib/Button.src/M000192.html +18 -0
  46. data/lib/doc/classes/GGLib/Button.src/M000193.html +18 -0
  47. data/lib/doc/classes/GGLib/Button.src/M000194.html +18 -0
  48. data/lib/doc/classes/GGLib/CArray.html +269 -0
  49. data/lib/doc/classes/GGLib/CArray.src/M000150.html +19 -0
  50. data/lib/doc/classes/GGLib/CArray.src/M000151.html +20 -0
  51. data/lib/doc/classes/GGLib/CArray.src/M000152.html +20 -0
  52. data/lib/doc/classes/GGLib/CArray.src/M000153.html +24 -0
  53. data/lib/doc/classes/GGLib/CArray.src/M000154.html +28 -0
  54. data/lib/doc/classes/GGLib/CArray.src/M000155.html +21 -0
  55. data/lib/doc/classes/GGLib/CArray.src/M000156.html +27 -0
  56. data/lib/doc/classes/GGLib/CArray.src/M000157.html +18 -0
  57. data/lib/doc/classes/GGLib/CArray.src/M000158.html +18 -0
  58. data/lib/doc/classes/GGLib/CheckBox.html +252 -0
  59. data/lib/doc/classes/GGLib/CheckBox.src/M000134.html +20 -0
  60. data/lib/doc/classes/GGLib/CheckBox.src/M000135.html +18 -0
  61. data/lib/doc/classes/GGLib/CheckBox.src/M000136.html +18 -0
  62. data/lib/doc/classes/GGLib/CheckBox.src/M000137.html +18 -0
  63. data/lib/doc/classes/GGLib/CheckBox.src/M000138.html +18 -0
  64. data/lib/doc/classes/GGLib/CheckBox.src/M000139.html +18 -0
  65. data/lib/doc/classes/GGLib/CheckBox.src/M000140.html +24 -0
  66. data/lib/doc/classes/GGLib/CheckBox.src/M000141.html +18 -0
  67. data/lib/doc/classes/GGLib/CheckBox/CheckedHk.html +165 -0
  68. data/lib/doc/classes/GGLib/CheckBox/CheckedHk.src/M000142.html +18 -0
  69. data/lib/doc/classes/GGLib/Cursor.html +252 -0
  70. data/lib/doc/classes/GGLib/Cursor.src/M000143.html +21 -0
  71. data/lib/doc/classes/GGLib/Cursor.src/M000144.html +20 -0
  72. data/lib/doc/classes/GGLib/Cursor.src/M000145.html +19 -0
  73. data/lib/doc/classes/GGLib/Cursor.src/M000146.html +18 -0
  74. data/lib/doc/classes/GGLib/Cursor.src/M000147.html +18 -0
  75. data/lib/doc/classes/GGLib/Cursor.src/M000148.html +20 -0
  76. data/lib/doc/classes/GGLib/Cursor.src/M000149.html +20 -0
  77. data/lib/doc/classes/GGLib/DebugConsole.html +321 -0
  78. data/lib/doc/classes/GGLib/DebugConsole.src/M000260.html +23 -0
  79. data/lib/doc/classes/GGLib/DebugConsole.src/M000261.html +61 -0
  80. data/lib/doc/classes/GGLib/DebugConsole.src/M000262.html +18 -0
  81. data/lib/doc/classes/GGLib/DebugConsole.src/M000263.html +25 -0
  82. data/lib/doc/classes/GGLib/DebugConsole.src/M000264.html +34 -0
  83. data/lib/doc/classes/GGLib/DebugConsole.src/M000265.html +24 -0
  84. data/lib/doc/classes/GGLib/DebugConsole.src/M000266.html +21 -0
  85. data/lib/doc/classes/GGLib/DebugConsole.src/M000267.html +23 -0
  86. data/lib/doc/classes/GGLib/DebugConsole.src/M000268.html +18 -0
  87. data/lib/doc/classes/GGLib/DebugConsole.src/M000269.html +18 -0
  88. data/lib/doc/classes/GGLib/DebugConsole.src/M000270.html +18 -0
  89. data/lib/doc/classes/GGLib/DebugConsole.src/M000271.html +18 -0
  90. data/lib/doc/classes/GGLib/DebugConsole.src/M000272.html +22 -0
  91. data/lib/doc/classes/GGLib/DrawnTheme.html +214 -0
  92. data/lib/doc/classes/GGLib/DrawnTheme.src/M000274.html +19 -0
  93. data/lib/doc/classes/GGLib/DrawnTheme.src/M000275.html +18 -0
  94. data/lib/doc/classes/GGLib/DrawnTheme.src/M000276.html +18 -0
  95. data/lib/doc/classes/GGLib/DrawnTheme.src/M000277.html +18 -0
  96. data/lib/doc/classes/GGLib/DrawnTheme.src/M000278.html +17 -0
  97. data/lib/doc/classes/GGLib/DrawnThemeInstance.html +139 -0
  98. data/lib/doc/classes/GGLib/DrawnThemeInstance.src/M000273.html +18 -0
  99. data/lib/doc/classes/GGLib/FadeScreen.html +220 -0
  100. data/lib/doc/classes/GGLib/FadeScreen.src/M000227.html +23 -0
  101. data/lib/doc/classes/GGLib/FadeScreen.src/M000228.html +18 -0
  102. data/lib/doc/classes/GGLib/FadeScreen.src/M000229.html +19 -0
  103. data/lib/doc/classes/GGLib/FadeScreen.src/M000230.html +29 -0
  104. data/lib/doc/classes/GGLib/FadeScreen.src/M000231.html +21 -0
  105. data/lib/doc/classes/GGLib/FadeScreen/FadeIn.html +169 -0
  106. data/lib/doc/classes/GGLib/FadeScreen/FadeIn.src/M000232.html +25 -0
  107. data/lib/doc/classes/GGLib/FadeScreen/FadeIn.src/M000233.html +26 -0
  108. data/lib/doc/classes/GGLib/FadeScreen/FadeIn.src/M000234.html +21 -0
  109. data/lib/doc/classes/GGLib/GUIWindow.html +633 -0
  110. data/lib/doc/classes/GGLib/GUIWindow.src/M000034.html +35 -0
  111. data/lib/doc/classes/GGLib/GUIWindow.src/M000035.html +20 -0
  112. data/lib/doc/classes/GGLib/GUIWindow.src/M000036.html +18 -0
  113. data/lib/doc/classes/GGLib/GUIWindow.src/M000037.html +18 -0
  114. data/lib/doc/classes/GGLib/GUIWindow.src/M000038.html +20 -0
  115. data/lib/doc/classes/GGLib/GUIWindow.src/M000039.html +20 -0
  116. data/lib/doc/classes/GGLib/GUIWindow.src/M000040.html +18 -0
  117. data/lib/doc/classes/GGLib/GUIWindow.src/M000041.html +18 -0
  118. data/lib/doc/classes/GGLib/GUIWindow.src/M000042.html +19 -0
  119. data/lib/doc/classes/GGLib/GUIWindow.src/M000043.html +19 -0
  120. data/lib/doc/classes/GGLib/GUIWindow.src/M000044.html +20 -0
  121. data/lib/doc/classes/GGLib/GUIWindow.src/M000045.html +20 -0
  122. data/lib/doc/classes/GGLib/GUIWindow.src/M000046.html +21 -0
  123. data/lib/doc/classes/GGLib/GUIWindow.src/M000047.html +18 -0
  124. data/lib/doc/classes/GGLib/GUIWindow.src/M000048.html +18 -0
  125. data/lib/doc/classes/GGLib/GUIWindow.src/M000049.html +18 -0
  126. data/lib/doc/classes/GGLib/GUIWindow.src/M000050.html +19 -0
  127. data/lib/doc/classes/GGLib/GUIWindow.src/M000051.html +21 -0
  128. data/lib/doc/classes/GGLib/GUIWindow.src/M000052.html +18 -0
  129. data/lib/doc/classes/GGLib/GUIWindow.src/M000053.html +18 -0
  130. data/lib/doc/classes/GGLib/GUIWindow.src/M000054.html +19 -0
  131. data/lib/doc/classes/GGLib/GUIWindow.src/M000055.html +22 -0
  132. data/lib/doc/classes/GGLib/GUIWindow.src/M000056.html +20 -0
  133. data/lib/doc/classes/GGLib/GUIWindow.src/M000057.html +18 -0
  134. data/lib/doc/classes/GGLib/GUIWindow.src/M000058.html +25 -0
  135. data/lib/doc/classes/GGLib/GUIWindow.src/M000059.html +24 -0
  136. data/lib/doc/classes/GGLib/GUIWindow.src/M000060.html +18 -0
  137. data/lib/doc/classes/GGLib/GUIWindow.src/M000061.html +18 -0
  138. data/lib/doc/classes/GGLib/GUIWindow.src/M000062.html +37 -0
  139. data/lib/doc/classes/GGLib/GUIWindow.src/M000063.html +23 -0
  140. data/lib/doc/classes/GGLib/Image.html +227 -0
  141. data/lib/doc/classes/GGLib/Image.src/M000180.html +24 -0
  142. data/lib/doc/classes/GGLib/Image.src/M000181.html +18 -0
  143. data/lib/doc/classes/GGLib/Image.src/M000182.html +20 -0
  144. data/lib/doc/classes/GGLib/Image.src/M000183.html +18 -0
  145. data/lib/doc/classes/GGLib/ImageTheme.html +184 -0
  146. data/lib/doc/classes/GGLib/ImageTheme.src/M000185.html +22 -0
  147. data/lib/doc/classes/GGLib/ImageTheme.src/M000186.html +18 -0
  148. data/lib/doc/classes/GGLib/ImageThemeInstance.html +246 -0
  149. data/lib/doc/classes/GGLib/ImageThemeInstance.src/M000126.html +19 -0
  150. data/lib/doc/classes/GGLib/ImageThemeInstance.src/M000127.html +26 -0
  151. data/lib/doc/classes/GGLib/ImageThemeInstance.src/M000128.html +19 -0
  152. data/lib/doc/classes/GGLib/ImageThemeInstance.src/M000129.html +19 -0
  153. data/lib/doc/classes/GGLib/ImageThemeInstance.src/M000130.html +19 -0
  154. data/lib/doc/classes/GGLib/ImageThemeInstance.src/M000131.html +20 -0
  155. data/lib/doc/classes/GGLib/ImageThemeInstance.src/M000132.html +19 -0
  156. data/lib/doc/classes/GGLib/ImageThemeInstance.src/M000133.html +18 -0
  157. data/lib/doc/classes/GGLib/Label.html +169 -0
  158. data/lib/doc/classes/GGLib/Label.src/M000091.html +19 -0
  159. data/lib/doc/classes/GGLib/Label.src/M000092.html +18 -0
  160. data/lib/doc/classes/GGLib/MapImage.html +219 -0
  161. data/lib/doc/classes/GGLib/MapImage.src/M000285.html +19 -0
  162. data/lib/doc/classes/GGLib/MapImage.src/M000286.html +22 -0
  163. data/lib/doc/classes/GGLib/MapImage.src/M000287.html +22 -0
  164. data/lib/doc/classes/GGLib/MapImage.src/M000288.html +18 -0
  165. data/lib/doc/classes/GGLib/MenuBase.html +154 -0
  166. data/lib/doc/classes/GGLib/MenuBase.src/M000159.html +22 -0
  167. data/lib/doc/classes/GGLib/MenuBase.src/M000160.html +18 -0
  168. data/lib/doc/classes/GGLib/MouseDragEvent.html +237 -0
  169. data/lib/doc/classes/GGLib/MouseDragEvent.src/M000171.html +21 -0
  170. data/lib/doc/classes/GGLib/MouseDragEvent.src/M000172.html +19 -0
  171. data/lib/doc/classes/GGLib/MouseDragEvent.src/M000173.html +19 -0
  172. data/lib/doc/classes/GGLib/MouseDragEvent.src/M000174.html +19 -0
  173. data/lib/doc/classes/GGLib/MouseDragEvent.src/M000175.html +18 -0
  174. data/lib/doc/classes/GGLib/RadioButton.html +270 -0
  175. data/lib/doc/classes/GGLib/RadioButton.src/M000082.html +22 -0
  176. data/lib/doc/classes/GGLib/RadioButton.src/M000083.html +18 -0
  177. data/lib/doc/classes/GGLib/RadioButton.src/M000084.html +18 -0
  178. data/lib/doc/classes/GGLib/RadioButton.src/M000085.html +18 -0
  179. data/lib/doc/classes/GGLib/RadioButton.src/M000086.html +18 -0
  180. data/lib/doc/classes/GGLib/RadioButton.src/M000087.html +18 -0
  181. data/lib/doc/classes/GGLib/RadioButton.src/M000088.html +32 -0
  182. data/lib/doc/classes/GGLib/RadioButton.src/M000089.html +18 -0
  183. data/lib/doc/classes/GGLib/RadioButton/CheckedHk.html +165 -0
  184. data/lib/doc/classes/GGLib/RadioButton/CheckedHk.src/M000090.html +18 -0
  185. data/lib/doc/classes/GGLib/RadioGroup.html +238 -0
  186. data/lib/doc/classes/GGLib/RadioGroup.src/M000243.html +37 -0
  187. data/lib/doc/classes/GGLib/RadioGroup.src/M000244.html +19 -0
  188. data/lib/doc/classes/GGLib/RadioGroup.src/M000245.html +20 -0
  189. data/lib/doc/classes/GGLib/RadioGroup.src/M000246.html +19 -0
  190. data/lib/doc/classes/GGLib/RadioGroup.src/M000247.html +21 -0
  191. data/lib/doc/classes/GGLib/RadioGroup.src/M000248.html +18 -0
  192. data/lib/doc/classes/GGLib/RadioGroup.src/M000249.html +18 -0
  193. data/lib/doc/classes/GGLib/RadioGroup/Layout.html +123 -0
  194. data/lib/doc/classes/GGLib/RadioGroup/Spacing.html +123 -0
  195. data/lib/doc/classes/GGLib/SplashScreen.html +207 -0
  196. data/lib/doc/classes/GGLib/SplashScreen.src/M000077.html +21 -0
  197. data/lib/doc/classes/GGLib/SplashScreen.src/M000078.html +18 -0
  198. data/lib/doc/classes/GGLib/SplashScreen.src/M000079.html +18 -0
  199. data/lib/doc/classes/GGLib/SplashScreen.src/M000080.html +30 -0
  200. data/lib/doc/classes/GGLib/SplashScreen.src/M000081.html +18 -0
  201. data/lib/doc/classes/GGLib/StateObject.html +314 -0
  202. data/lib/doc/classes/GGLib/StateObject.src/M000161.html +20 -0
  203. data/lib/doc/classes/GGLib/StateObject.src/M000162.html +23 -0
  204. data/lib/doc/classes/GGLib/StateObject.src/M000163.html +18 -0
  205. data/lib/doc/classes/GGLib/StateObject.src/M000164.html +18 -0
  206. data/lib/doc/classes/GGLib/StateObject.src/M000165.html +17 -0
  207. data/lib/doc/classes/GGLib/StateObject.src/M000166.html +18 -0
  208. data/lib/doc/classes/GGLib/StateObject.src/M000167.html +17 -0
  209. data/lib/doc/classes/GGLib/StateObject.src/M000168.html +17 -0
  210. data/lib/doc/classes/GGLib/StateObject.src/M000169.html +17 -0
  211. data/lib/doc/classes/GGLib/StateObject.src/M000170.html +17 -0
  212. data/lib/doc/classes/GGLib/TextBox.html +304 -0
  213. data/lib/doc/classes/GGLib/TextBox.src/M000250.html +32 -0
  214. data/lib/doc/classes/GGLib/TextBox.src/M000251.html +18 -0
  215. data/lib/doc/classes/GGLib/TextBox.src/M000252.html +18 -0
  216. data/lib/doc/classes/GGLib/TextBox.src/M000253.html +18 -0
  217. data/lib/doc/classes/GGLib/TextBox.src/M000254.html +19 -0
  218. data/lib/doc/classes/GGLib/TextBox.src/M000255.html +19 -0
  219. data/lib/doc/classes/GGLib/TextBox.src/M000256.html +18 -0
  220. data/lib/doc/classes/GGLib/TextBox.src/M000257.html +18 -0
  221. data/lib/doc/classes/GGLib/TextBox.src/M000258.html +19 -0
  222. data/lib/doc/classes/GGLib/TextBox.src/M000259.html +37 -0
  223. data/lib/doc/classes/GGLib/Texture.html +239 -0
  224. data/lib/doc/classes/GGLib/Texture.src/M000176.html +26 -0
  225. data/lib/doc/classes/GGLib/Texture.src/M000177.html +18 -0
  226. data/lib/doc/classes/GGLib/Texture.src/M000178.html +18 -0
  227. data/lib/doc/classes/GGLib/Texture.src/M000179.html +18 -0
  228. data/lib/doc/classes/GGLib/Theme.html +235 -0
  229. data/lib/doc/classes/GGLib/Theme.src/M000279.html +17 -0
  230. data/lib/doc/classes/GGLib/Theme.src/M000280.html +17 -0
  231. data/lib/doc/classes/GGLib/Theme.src/M000281.html +17 -0
  232. data/lib/doc/classes/GGLib/Theme.src/M000282.html +17 -0
  233. data/lib/doc/classes/GGLib/Theme.src/M000283.html +17 -0
  234. data/lib/doc/classes/GGLib/Theme.src/M000284.html +18 -0
  235. data/lib/doc/classes/GGLib/ThemeFontGroup.html +170 -0
  236. data/lib/doc/classes/GGLib/ThemeFontGroup.src/M000064.html +22 -0
  237. data/lib/doc/classes/GGLib/ThemeImageGroup.html +160 -0
  238. data/lib/doc/classes/GGLib/ThemeImageGroup.src/M000184.html +20 -0
  239. data/lib/doc/classes/GGLib/ThemeInstance.html +304 -0
  240. data/lib/doc/classes/GGLib/ThemeInstance.src/M000065.html +25 -0
  241. data/lib/doc/classes/GGLib/ThemeInstance.src/M000066.html +21 -0
  242. data/lib/doc/classes/GGLib/ThemeInstance.src/M000067.html +18 -0
  243. data/lib/doc/classes/GGLib/ThemeInstance.src/M000068.html +18 -0
  244. data/lib/doc/classes/GGLib/ThemeInstance.src/M000069.html +18 -0
  245. data/lib/doc/classes/GGLib/ThemeInstance.src/M000070.html +17 -0
  246. data/lib/doc/classes/GGLib/ThemeInstance.src/M000071.html +18 -0
  247. data/lib/doc/classes/GGLib/ThemeInstance.src/M000072.html +18 -0
  248. data/lib/doc/classes/GGLib/ThemeInstance.src/M000073.html +18 -0
  249. data/lib/doc/classes/GGLib/ThemeInstance.src/M000074.html +18 -0
  250. data/lib/doc/classes/GGLib/ThemeInstance.src/M000075.html +18 -0
  251. data/lib/doc/classes/GGLib/ThemeInstance.src/M000076.html +17 -0
  252. data/lib/doc/classes/GGLib/Themes.html +164 -0
  253. data/lib/doc/classes/GGLib/Themes.src/M000014.html +30 -0
  254. data/lib/doc/classes/GGLib/Themes.src/M000015.html +30 -0
  255. data/lib/doc/classes/GGLib/Themes/BlueSteelTheme.html +154 -0
  256. data/lib/doc/classes/GGLib/Themes/BlueSteelTheme.src/M000023.html +24 -0
  257. data/lib/doc/classes/GGLib/Themes/BlueSteelTheme.src/M000024.html +94 -0
  258. data/lib/doc/classes/GGLib/Themes/RubygooLabelTheme.html +137 -0
  259. data/lib/doc/classes/GGLib/Themes/RubygooLabelTheme.src/M000019.html +25 -0
  260. data/lib/doc/classes/GGLib/Themes/RubygooTextTheme.html +154 -0
  261. data/lib/doc/classes/GGLib/Themes/RubygooTextTheme.src/M000025.html +25 -0
  262. data/lib/doc/classes/GGLib/Themes/RubygooTextTheme.src/M000026.html +26 -0
  263. data/lib/doc/classes/GGLib/Themes/RubygooTheme.html +169 -0
  264. data/lib/doc/classes/GGLib/Themes/RubygooTheme.src/M000020.html +25 -0
  265. data/lib/doc/classes/GGLib/Themes/RubygooTheme.src/M000021.html +27 -0
  266. data/lib/doc/classes/GGLib/Themes/RubygooTheme.src/M000022.html +24 -0
  267. data/lib/doc/classes/GGLib/Themes/ShadeCheckGenCTheme.html +154 -0
  268. data/lib/doc/classes/GGLib/Themes/ShadeCheckGenCTheme.src/M000027.html +25 -0
  269. data/lib/doc/classes/GGLib/Themes/ShadeCheckGenCTheme.src/M000028.html +28 -0
  270. data/lib/doc/classes/GGLib/Themes/ShadeCheckGenTheme.html +154 -0
  271. data/lib/doc/classes/GGLib/Themes/ShadeCheckGenTheme.src/M000016.html +25 -0
  272. data/lib/doc/classes/GGLib/Themes/ShadeCheckGenTheme.src/M000017.html +30 -0
  273. data/lib/doc/classes/GGLib/Themes/ShadeLabelTheme.html +137 -0
  274. data/lib/doc/classes/GGLib/Themes/ShadeLabelTheme.src/M000018.html +25 -0
  275. data/lib/doc/classes/GGLib/Themes/ShadeTheme.html +169 -0
  276. data/lib/doc/classes/GGLib/Themes/ShadeTheme.src/M000031.html +25 -0
  277. data/lib/doc/classes/GGLib/Themes/ShadeTheme.src/M000032.html +30 -0
  278. data/lib/doc/classes/GGLib/Themes/ShadeTheme.src/M000033.html +26 -0
  279. data/lib/doc/classes/GGLib/Themes/WindowsTheme.html +154 -0
  280. data/lib/doc/classes/GGLib/Themes/WindowsTheme.src/M000029.html +24 -0
  281. data/lib/doc/classes/GGLib/Themes/WindowsTheme.src/M000030.html +94 -0
  282. data/lib/doc/classes/GGLib/Tile.html +568 -0
  283. data/lib/doc/classes/GGLib/Tile.src/M000105.html +34 -0
  284. data/lib/doc/classes/GGLib/Tile.src/M000106.html +22 -0
  285. data/lib/doc/classes/GGLib/Tile.src/M000108.html +18 -0
  286. data/lib/doc/classes/GGLib/Tile.src/M000109.html +18 -0
  287. data/lib/doc/classes/GGLib/Tile.src/M000110.html +21 -0
  288. data/lib/doc/classes/GGLib/Tile.src/M000111.html +23 -0
  289. data/lib/doc/classes/GGLib/Tile.src/M000112.html +18 -0
  290. data/lib/doc/classes/GGLib/Tile.src/M000113.html +18 -0
  291. data/lib/doc/classes/GGLib/Tile.src/M000114.html +18 -0
  292. data/lib/doc/classes/GGLib/Tile.src/M000115.html +18 -0
  293. data/lib/doc/classes/GGLib/Tile.src/M000116.html +22 -0
  294. data/lib/doc/classes/GGLib/Tile.src/M000117.html +32 -0
  295. data/lib/doc/classes/GGLib/Tile.src/M000118.html +18 -0
  296. data/lib/doc/classes/GGLib/Tile.src/M000119.html +18 -0
  297. data/lib/doc/classes/GGLib/Tile.src/M000120.html +22 -0
  298. data/lib/doc/classes/GGLib/Tile.src/M000121.html +24 -0
  299. data/lib/doc/classes/GGLib/Tile.src/M000122.html +18 -0
  300. data/lib/doc/classes/GGLib/Tile.src/M000123.html +18 -0
  301. data/lib/doc/classes/GGLib/Tile.src/M000124.html +18 -0
  302. data/lib/doc/classes/GGLib/Tile.src/M000125.html +19 -0
  303. data/lib/doc/classes/GGLib/TracePanel.html +306 -0
  304. data/lib/doc/classes/GGLib/TracePanel.src/M000093.html +19 -0
  305. data/lib/doc/classes/GGLib/TracePanel.src/M000094.html +22 -0
  306. data/lib/doc/classes/GGLib/TracePanel.src/M000095.html +19 -0
  307. data/lib/doc/classes/GGLib/TracePanel.src/M000096.html +20 -0
  308. data/lib/doc/classes/GGLib/TracePanel.src/M000097.html +18 -0
  309. data/lib/doc/classes/GGLib/TracePanel.src/M000098.html +18 -0
  310. data/lib/doc/classes/GGLib/TracePanel.src/M000099.html +18 -0
  311. data/lib/doc/classes/GGLib/TracePanel.src/M000100.html +18 -0
  312. data/lib/doc/classes/GGLib/TracePanel.src/M000101.html +21 -0
  313. data/lib/doc/classes/GGLib/TracePanel.src/M000102.html +22 -0
  314. data/lib/doc/classes/GGLib/TracePanel.src/M000103.html +18 -0
  315. data/lib/doc/classes/GGLib/TracePanel.src/M000104.html +22 -0
  316. data/lib/doc/classes/GGLib/Widget.html +687 -0
  317. data/lib/doc/classes/GGLib/Widget.src/M000195.html +25 -0
  318. data/lib/doc/classes/GGLib/Widget.src/M000196.html +22 -0
  319. data/lib/doc/classes/GGLib/Widget.src/M000197.html +22 -0
  320. data/lib/doc/classes/GGLib/Widget.src/M000198.html +20 -0
  321. data/lib/doc/classes/GGLib/Widget.src/M000199.html +18 -0
  322. data/lib/doc/classes/GGLib/Widget.src/M000200.html +18 -0
  323. data/lib/doc/classes/GGLib/Widget.src/M000201.html +22 -0
  324. data/lib/doc/classes/GGLib/Widget.src/M000202.html +27 -0
  325. data/lib/doc/classes/GGLib/Widget.src/M000203.html +22 -0
  326. data/lib/doc/classes/GGLib/Widget.src/M000204.html +17 -0
  327. data/lib/doc/classes/GGLib/Widget.src/M000205.html +17 -0
  328. data/lib/doc/classes/GGLib/Widget.src/M000206.html +17 -0
  329. data/lib/doc/classes/GGLib/Widget.src/M000207.html +17 -0
  330. data/lib/doc/classes/GGLib/Widget.src/M000208.html +17 -0
  331. data/lib/doc/classes/GGLib/Widget.src/M000209.html +17 -0
  332. data/lib/doc/classes/GGLib/Widget.src/M000210.html +17 -0
  333. data/lib/doc/classes/GGLib/Widget.src/M000211.html +17 -0
  334. data/lib/doc/classes/GGLib/Widget.src/M000212.html +17 -0
  335. data/lib/doc/classes/GGLib/Widget.src/M000213.html +17 -0
  336. data/lib/doc/classes/GGLib/Widget.src/M000214.html +17 -0
  337. data/lib/doc/classes/GGLib/Widget.src/M000215.html +17 -0
  338. data/lib/doc/classes/GGLib/Widget.src/M000216.html +17 -0
  339. data/lib/doc/classes/GGLib/Widget.src/M000217.html +17 -0
  340. data/lib/doc/classes/GGLib/Widget.src/M000218.html +18 -0
  341. data/lib/doc/classes/GGLib/Widget.src/M000219.html +18 -0
  342. data/lib/doc/classes/GGLib/Widget.src/M000220.html +21 -0
  343. data/lib/doc/classes/GGLib/Widget.src/M000221.html +17 -0
  344. data/lib/doc/classes/GGLib/Widget.src/M000222.html +24 -0
  345. data/lib/doc/classes/GGLib/Widget.src/M000223.html +18 -0
  346. data/lib/doc/classes/GGLib/Widget.src/M000224.html +21 -0
  347. data/lib/doc/classes/GGLib/Widget.src/M000225.html +18 -0
  348. data/lib/doc/classes/GGLib/Widget.src/M000226.html +24 -0
  349. data/lib/doc/classes/GGLib/WidgetEvent.html +209 -0
  350. data/lib/doc/classes/GGLib/ZOrder.html +209 -0
  351. data/lib/doc/classes/MyGUIWindow.html +139 -0
  352. data/lib/doc/classes/MyGUIWindow.src/M000011.html +26 -0
  353. data/lib/doc/classes/MySplashScreen.html +171 -0
  354. data/lib/doc/classes/MySplashScreen.src/M000005.html +18 -0
  355. data/lib/doc/classes/MySplashScreen.src/M000006.html +21 -0
  356. data/lib/doc/classes/MySplashScreen.src/M000007.html +21 -0
  357. data/lib/doc/classes/MyStateObj.html +191 -0
  358. data/lib/doc/classes/MyStateObj.src/M000001.html +19 -0
  359. data/lib/doc/classes/MyStateObj.src/M000002.html +29 -0
  360. data/lib/doc/classes/MyStateObj.src/M000003.html +18 -0
  361. data/lib/doc/classes/StartMenu.html +145 -0
  362. data/lib/doc/classes/StartMenu.src/M000004.html +19 -0
  363. data/lib/doc/created.rid +1 -0
  364. data/lib/doc/files/gglib/camera_rb.html +101 -0
  365. data/lib/doc/files/gglib/carray_rb.html +101 -0
  366. data/lib/doc/files/gglib/examples/BasicExample_rb.html +112 -0
  367. data/lib/doc/files/gglib/examples/ConsoleDemo_rb.html +112 -0
  368. data/lib/doc/files/gglib/examples/FadeIn_rb.html +111 -0
  369. data/lib/doc/files/gglib/examples/SplashScreen_rb.html +112 -0
  370. data/lib/doc/files/gglib/ext/menus_rb.html +101 -0
  371. data/lib/doc/files/gglib/ext/splash_rb.html +101 -0
  372. data/lib/doc/files/gglib/ext/themes_rb.html +101 -0
  373. data/lib/doc/files/gglib/ext/widgets_rb.html +101 -0
  374. data/lib/doc/files/gglib/gglib_rb.html +101 -0
  375. data/lib/doc/files/gglib/image_rb.html +101 -0
  376. data/lib/doc/files/gglib/mouse_rb.html +101 -0
  377. data/lib/doc/files/gglib/null_rb.html +107 -0
  378. data/lib/doc/files/gglib/state_rb.html +101 -0
  379. data/lib/doc/files/gglib/theme_rb.html +101 -0
  380. data/lib/doc/files/gglib/tile_rb.html +101 -0
  381. data/lib/doc/files/gglib/widget_rb.html +101 -0
  382. data/lib/doc/files/gglib/window_rb.html +101 -0
  383. data/lib/doc/fr_class_index.html +83 -0
  384. data/lib/doc/fr_file_index.html +45 -0
  385. data/lib/doc/fr_method_index.html +314 -0
  386. data/lib/doc/index.html +24 -0
  387. data/lib/doc/rdoc-style.css +208 -0
  388. data/lib/ext/splash.rb +41 -41
  389. data/lib/ext/themes.rb +422 -158
  390. data/lib/ext/widgets.rb +527 -348
  391. data/lib/gglib.rb +12 -12
  392. data/lib/image.rb +176 -176
  393. data/lib/media/black.bmp +0 -0
  394. data/lib/media/bluesteel/button/button.png +0 -0
  395. data/lib/media/bluesteel/button/buttondown.png +0 -0
  396. data/lib/media/bluesteel/button/buttonup.png +0 -0
  397. data/lib/media/bluesteel/checkbox/checkbox.png +0 -0
  398. data/lib/media/bluesteel/checkbox/checkboxc.png +0 -0
  399. data/lib/media/bluesteel/checkbox/checkboxcdown.png +0 -0
  400. data/lib/media/bluesteel/checkbox/checkboxcup.png +0 -0
  401. data/lib/media/bluesteel/checkbox/checkboxdown.png +0 -0
  402. data/lib/media/bluesteel/checkbox/checkboxup.png +0 -0
  403. data/lib/media/bluesteel/generic/menularge.png +0 -0
  404. data/lib/media/bluesteel/generic/menumed.png +0 -0
  405. data/lib/media/bluesteel/generic/menusmall.png +0 -0
  406. data/lib/media/bluesteel/radio/radiobtn.png +0 -0
  407. data/lib/media/bluesteel/radio/radiobtnc.png +0 -0
  408. data/lib/media/bluesteel/radio/radiobtncdown.png +0 -0
  409. data/lib/media/bluesteel/radio/radiobtncup.png +0 -0
  410. data/lib/media/bluesteel/radio/radiobtndown.png +0 -0
  411. data/lib/media/bluesteel/radio/radiobtnup.png +0 -0
  412. data/lib/media/bluesteel/textbox/textbox.png +0 -0
  413. data/lib/media/bluesteel/textbox/textboxactive.png +0 -0
  414. data/lib/media/cursor.bmp +0 -0
  415. data/lib/media/windows/button/button - Copy.png +0 -0
  416. data/lib/media/windows/button/button.png +0 -0
  417. data/lib/media/windows/button/buttondown.png +0 -0
  418. data/lib/media/windows/button/buttonup.png +0 -0
  419. data/lib/media/windows/checkbox/checkbox.png +0 -0
  420. data/lib/media/windows/checkbox/checkboxc.png +0 -0
  421. data/lib/media/windows/checkbox/checkboxcdown.png +0 -0
  422. data/lib/media/windows/checkbox/checkboxcup.png +0 -0
  423. data/lib/media/windows/checkbox/checkboxdown.png +0 -0
  424. data/lib/media/windows/checkbox/checkboxup.png +0 -0
  425. data/lib/media/windows/generic/menusmall.png +0 -0
  426. data/lib/media/windows/radio/radiobtn.png +0 -0
  427. data/lib/media/windows/radio/radiobtnc.png +0 -0
  428. data/lib/media/windows/radio/radiobtncdown.png +0 -0
  429. data/lib/media/windows/radio/radiobtncup.png +0 -0
  430. data/lib/media/windows/radio/radiobtndown.png +0 -0
  431. data/lib/media/windows/radio/radiobtnup.png +0 -0
  432. data/lib/media/windows/textbox/textbox.png +0 -0
  433. data/lib/media/windows/textbox/textboxup.png +0 -0
  434. data/lib/mouse.rb +62 -62
  435. data/lib/null.bmp +0 -0
  436. data/lib/null.png +0 -0
  437. data/lib/state.rb +136 -136
  438. data/lib/theme.rb +204 -204
  439. data/lib/tile.rb +169 -169
  440. data/lib/widget.rb +217 -205
  441. data/lib/window.rb +333 -324
  442. metadata +523 -21
  443. data/gemspec.txt +0 -15
  444. data/gglib-1.1.tar.gz +0 -0
  445. data/gglib.gemspec +0 -15
  446. data/gglib.tar +0 -0
@@ -1,324 +1,333 @@
1
- module GGLib
2
-
3
- #The GUIWindow class is the central hub of the program. It is utimately responsible for all input and output (exept for logging output).
4
- #The main game loops can be found in this class.
5
- class GUIWindow < Gosu::Window
6
- attr_accessor :cursor, :background_image, :camera, :state
7
- attr_reader :images, :mapimages
8
-
9
- BlankState = StateObject.new
10
-
11
- def initialize(w=640, h=480, fullscreen=true, u=20, stateObj=BlankState)
12
- super(w, h, fullscreen, u)
13
- $window=self #pre initialize global var to allow win initialization
14
- @background_image = Gosu::Image.new(self, File.expand_path(File.dirname(__FILE__))+"/null.png", true)
15
- @cursor = Cursor.new(File.expand_path(File.dirname(__FILE__))+"/media/cursor.bmp", false)
16
- @framedrawn=false
17
- @timer=0
18
- @camera=Camera.new
19
- @images = CArray.new
20
- @mapimages = CArray.new
21
- @guiWidgets = CArray.new
22
- @state=stateObj
23
- @focused=nil
24
- @stickfocused=nil
25
- @leftdrag = MouseDragEvent.new
26
- @rightdrag = MouseDragEvent.new
27
- @state.start
28
- $window=self
29
- $theme_init_hook.call
30
- end
31
-
32
- def state=(val)
33
- @state.end
34
- @state = val
35
- @state.start
36
- end
37
-
38
- def widgets
39
- return @widgets
40
- end
41
-
42
- def framedrawn
43
- return @framedrawn
44
- end
45
-
46
- def button_down(id)
47
- @state.button_down(id)
48
- checkFocus
49
- widgetDownProc(id)
50
- end
51
-
52
- def button_up(id)
53
- @state.button_up(id)
54
- checkFocus
55
- widgetUpProc(id)
56
- end
57
-
58
- def timer
59
- return @timer
60
- end
61
-
62
- def widgets
63
- return @guiWidgets
64
- end
65
-
66
- def newImage(x,y,z,src,hardBorders=true,tracer="None")
67
- img=Image.new(x,y,z,src,hardBorders,tracer,@images.size)
68
- return @images << img
69
- end
70
-
71
- def newTexture(x1,y1,x2,y2,z,src,hardBorders=true,tracer="None")
72
- img=Texture.new(x1,y1,x2,y2,z,src,hardBorders,tracer,@images.size)
73
- return @images << img
74
- end
75
-
76
- def setImage(index,x,y,z,src,hardBorders=true,tracer="None")
77
- img=Image.new(x,y,z,src,@images.size,hardBorders,tracer)
78
- @images[index]=img
79
- return index
80
- end
81
-
82
- def setTexture(index, x1,y1,x2,y2,z,src,hardBorders=true,tracer="None")
83
- img=Texture.new(x1,y1,x2,y2,z,src,hardBorders,tracer,@images.size)
84
- @images[index]=img
85
- return index
86
- end
87
-
88
- def deleteImage(no)
89
- if @images[no]!=nil
90
- @images[no].del
91
- end
92
- @images.delete_at(no)
93
- end
94
-
95
- def deleteAllImages
96
- @images.clear
97
- end
98
-
99
- def setBackground(src)
100
- @background_image = Gosu::Image.new(self,src,true)
101
- end
102
-
103
- def setMapBackground(src)
104
- @map_image = Gosu::Image.new(self,src,true)
105
- end
106
-
107
- def newMapImage(x,y,z,src,hardBorders=true,tracer="None")
108
- img=Image.new(x,y,z,src,hardBorders,tracer,@mapimages.size)
109
- return @mapimages << img
110
- end
111
-
112
- def deleteMapImage(no)
113
- if @mapimages[no]!=nil
114
- @mapimages[no].del
115
- end
116
- @mapimages.delete_at(no)
117
- end
118
-
119
- def deleteAllMapImages
120
- @mapimages.clear
121
- end
122
-
123
- def newWidget(widget)
124
- return @guiWidgets << widget
125
- end
126
-
127
- def deleteWidget(widget)
128
- id=widget.id
129
- @guiWidgets.delete_at(id)
130
- end
131
-
132
- def deleteAllWidgets
133
- @guiWidgets.each {|widget| widget.del}
134
- @guiWidgets.clear
135
- @focused=nil
136
- @stickfocused=nil
137
- self.text_input=nil
138
- end
139
-
140
- def createWidgets
141
- self.text_input=nil
142
- @focused=nil
143
- @stickfocused=nil
144
- end
145
-
146
- def setTextInput(field)
147
- self.text_input=field
148
- end
149
-
150
- def setFocus(object)
151
- if @focused!=nil and not @focused.sleeping? #dont blur the object if it is the window or if it is sleeping
152
- @focused.blur
153
- end
154
- if object==nil
155
- @focused=nil
156
- else
157
- @focused=@guiWidgets[object]
158
- end
159
- end
160
-
161
- def setStickyFocus(object)
162
- if @stickfocused!=nil
163
- @stickfocused.onStickyBlur
164
- end
165
- @stickfocused=object
166
- if @stickfocused!=nil
167
- @stickfocused.onStickyFocus
168
- end
169
- end
170
-
171
- def hasFocus
172
- return @focused
173
- end
174
-
175
- def hasStickyFocus
176
- return @stickfocused
177
- end
178
-
179
- def update
180
- checkFocus
181
-
182
- if @leftdrag.starting
183
- if(Gosu::distance(@leftdrag.start_x, @leftdrag.start_y, mouse_x, mouse_y) > 5)
184
- @leftdrag.confirmStart
185
- end
186
- elsif @rightdrag.starting
187
- if(Gosu::distance(@rightdrag.start_x, @rightdrag.start_y, mouse_x, mouse_y) > 5)
188
- @rightdrag.confirmStart
189
- end
190
- end
191
-
192
- if @timer>100
193
- @timer=0
194
- else
195
- @timer+=1
196
- end
197
-
198
- @state.update
199
- @framedrawn = false
200
- end
201
-
202
- def draw
203
- @cursor.draw
204
- @images.each {|img| img.draw}
205
- @guiWidgets.each {|widget| widget.intDraw}
206
- @background_image.draw(0, 0, ZOrder::Background)
207
- @state.draw
208
- @framedrawn=true
209
- end
210
-
211
- private
212
- def widgetDownProc(id)
213
- char=button_id_to_char(id)
214
- setStickyFocus(nil) if (id==Gosu::Button::MsLeft or id==Gosu::Button::MsRight) and @stickfocused!=nil #and not @stickfocused.contains?(mouse_x, mouse_y)
215
- if @stickfocused!=nil and not @stickfocused.sleeping? #only sticky focused widgets recieve text input
216
- if id==Gosu::Button::MsLeft
217
- @leftdrag.start
218
- elsif id==Gosu::Button::MsRight
219
- @rightdrag.start
220
- elsif char!=nil
221
- if button_down?(Gosu::Button::KbLeftShift) or button_down?(Gosu::Button::KbRightShift)
222
- if char=~/[A-Z]/i
223
- char=char.upcase!
224
- else
225
- capschar=WidgetTextCaps[char]
226
- if capschar!=nil
227
- char=capschar
228
- end
229
- end
230
- end
231
- @stickfocused.feedText(char)
232
- end
233
- end
234
- end
235
-
236
- def widgetUpProc(id)
237
- char=button_id_to_char(id)
238
- setStickyFocus(nil) if (id==Gosu::Button::MsLeft or id==Gosu::Button::MsRight) and @stickfocused!=nil #and not @stickfocused.contains?(mouse_x, mouse_y)
239
- if @stickfocused!=nil and not @stickfocused.sleeping? #only sticky focused widgets recieve text input
240
- if id==Gosu::Button::MsLeft
241
- if @leftdrag.inprogress
242
- @leftdrag.end
243
- @stickfocused.event(WidgetEvent::MsLeftDrag)
244
- else
245
- @leftdrag.terminate
246
- @stickfocused.event(WidgetEvent::MsLeft)
247
- end
248
- elsif id==Gosu::Button::MsRight
249
- if @rightdrag.inprogress
250
- @rightdrag.end
251
- @stickfocused.event(WidgetEvent::MsRightDrag)
252
- else
253
- @rightdrag.terminate
254
- @stickfocused.event(WidgetEvent::MsRight)
255
- end
256
- elsif id==Gosu::Button::KbUp or id==Gosu::Button::GpUp
257
- @stickfocused.event(WidgetEvent::KeyUp)
258
- elsif id==Gosu::Button::KbDown or id==Gosu::Button::GpDown
259
- @stickfocused.event(WidgetEvent::KeyDown)
260
- elsif id==Gosu::Button::KbLeft or id==Gosu::Button::GpLeft
261
- @stickfocused.event(WidgetEvent::KeyLeft)
262
- elsif id==Gosu::Button::KbRight or id==Gosu::Button::GpRight
263
- @stickfocused.event(WidgetEvent::KeyRight)
264
- elsif id==Gosu::Button::KbRight or id==Gosu::Button::GpRight
265
- @stickfocused.event(WidgetEvent::KeyRight)
266
- elsif id==Gosu::Button::KbBackspace or id==Gosu::Button::KbDelete
267
- @stickfocused.event(WidgetEvent::KeyDelete)
268
- elsif id==Gosu::Button::KbEscape or id==Gosu::Button::GpButton7
269
- @stickfocused.event(WidgetEvent::KeyEscape)
270
- elsif id==Gosu::Button::KbEnter or id==Gosu::Button::GpButton2 or id==28 #strange Gosu bug, KbEnter!=Enter code
271
- @stickfocused.event(WidgetEvent::KeyEnter)
272
- elsif id==Gosu::Button::KbLeftAlt or id==Gosu::Button::KbRightAlt or id==Gosu::Button::GpButton5
273
- @stickfocused.event(WidgetEvent::KeyAlt)
274
- elsif id==Gosu::Button::KbLeftControl or id==Gosu::Button::KbRightControl or id==Gosu::Button::GpButton3
275
- @stickfocused.event(WidgetEvent::KeyControl)
276
- elsif id==Gosu::Button::KbLeftShift or id==Gosu::Button::KbRightShift or id==Gosu::Button::GpButton6
277
- @stickfocused.event(WidgetEvent::KeyShift)
278
- elsif id==Gosu::Button::KbSpace or id==Gosu::Button::KbSpace or id==Gosu::Button::GpButton4
279
- @stickfocused.event(WidgetEvent::KeySpace)
280
- elsif id==Gosu::Button::GpButton0
281
- @stickfocused.event(WidgetEvent::GpEnter)
282
- elsif id==Gosu::Button::GpButton1
283
- @stickfocused.event(WidgetEvent::GpCancel)
284
- end
285
- end
286
- if @focused!=nil and not @focused.sleeping? and (@stickfocused==nil or @focused.id != @stickfocused.id) #normally focused widgets only recieve click input
287
- if id==Gosu::Button::MsLeft
288
- @focused.event(WidgetEvent::MsLeft)
289
- elsif id==Gosu::Button::MsRight
290
- @focused.event(WidgetEvent::MsRight)
291
- elsif id==Gosu::Button::GpButton0
292
- @focused.event(WidgetEvent::GpEnter)
293
- end
294
- end
295
- end
296
-
297
- def checkFocus
298
- if @focused==nil
299
- oldfocus=nil
300
- else
301
- oldfocus=@focused.id
302
- end
303
- newfocus=nil
304
- focusFlag=false
305
- @guiWidgets.each { |widget|
306
- if (@cursor.visible and widget.over?(mouse_x,mouse_y)) and not widget.sleeping?
307
- if not focusFlag
308
- newfocus=widget.id
309
- focusFlag=true
310
- elsif widget.zfocus >= @guiWidgets[newfocus].zfocus #give focus to the widget with the highest focus zorder, or in the event of a tie, give focus to the new object
311
- newfocus=widget.id
312
- end
313
- else
314
- end
315
- }
316
- if newfocus!=nil and newfocus!=oldfocus
317
- @guiWidgets[newfocus].focus
318
- elsif newfocus==nil and oldfocus!=nil
319
- setFocus(nil)
320
- end
321
- end
322
- end
323
-
324
- end #module GGLib
1
+ module GGLib
2
+
3
+ #The GUIWindow class is the central hub of the program. It is utimately responsible for all input and output (exept for logging output).
4
+ #The main game loops can be found in this class.
5
+ class GUIWindow < Gosu::Window
6
+ attr_accessor :cursor, :background_image, :camera, :state
7
+ attr_reader :images, :mapimages
8
+
9
+ BlankState = StateObject.new
10
+
11
+ def initialize(w=640, h=480, fullscreen=true, u=20, stateObj=BlankState)
12
+ super(w, h, fullscreen, u)
13
+ $window=self #pre initialize global var to allow win initialization
14
+ @background_image = Gosu::Image.new(self, File.expand_path(File.dirname(__FILE__))+"/null.png", true)
15
+ @cursor = Cursor.new(File.expand_path(File.dirname(__FILE__))+"/media/cursor.bmp", false)
16
+ @framedrawn=false
17
+ @timer=0
18
+ @camera=Camera.new
19
+ @images = CArray.new
20
+ @mapimages = CArray.new
21
+ @guiWidgets = CArray.new
22
+ @state=stateObj
23
+ @focused=nil
24
+ @stickfocused=nil
25
+ @leftdrag = MouseDragEvent.new
26
+ @rightdrag = MouseDragEvent.new
27
+ @state.start
28
+ $window=self
29
+ $theme_init_hook.call
30
+ end
31
+
32
+ def state=(val)
33
+ @state.end
34
+ @state = val
35
+ @state.start
36
+ end
37
+
38
+ def widgets
39
+ return @widgets
40
+ end
41
+
42
+ def framedrawn
43
+ return @framedrawn
44
+ end
45
+
46
+ def button_down(id)
47
+ @state.button_down(id)
48
+ checkFocus
49
+ widgetDownProc(id)
50
+ end
51
+
52
+ def button_up(id)
53
+ @state.button_up(id)
54
+ checkFocus
55
+ widgetUpProc(id)
56
+ end
57
+
58
+ def timer
59
+ return @timer
60
+ end
61
+
62
+ def widgets
63
+ return @guiWidgets
64
+ end
65
+
66
+ def newImage(x,y,z,src,hardBorders=true,tracer="None")
67
+ img=Image.new(x,y,z,src,hardBorders,tracer,@images.size)
68
+ return @images << img
69
+ end
70
+
71
+ def newTexture(x1,y1,x2,y2,z,src,hardBorders=true,tracer="None")
72
+ img=Texture.new(x1,y1,x2,y2,z,src,hardBorders,tracer,@images.size)
73
+ return @images << img
74
+ end
75
+
76
+ def setImage(index,x,y,z,src,hardBorders=true,tracer="None")
77
+ img=Image.new(x,y,z,src,@images.size,hardBorders,tracer)
78
+ @images[index]=img
79
+ return index
80
+ end
81
+
82
+ def setTexture(index, x1,y1,x2,y2,z,src,hardBorders=true,tracer="None")
83
+ img=Texture.new(x1,y1,x2,y2,z,src,hardBorders,tracer,@images.size)
84
+ @images[index]=img
85
+ return index
86
+ end
87
+
88
+ def deleteImage(no)
89
+ if @images[no]!=nil
90
+ @images[no].del
91
+ end
92
+ @images.delete_at(no)
93
+ end
94
+
95
+ def deleteAllImages
96
+ @images.clear
97
+ end
98
+
99
+ def setBackground(src)
100
+ @background_image = Gosu::Image.new(self,src,true)
101
+ end
102
+
103
+ def setMapBackground(src)
104
+ @map_image = Gosu::Image.new(self,src,true)
105
+ end
106
+
107
+ def newMapImage(x,y,z,src,hardBorders=true,tracer="None")
108
+ img=Image.new(x,y,z,src,hardBorders,tracer,@mapimages.size)
109
+ return @mapimages << img
110
+ end
111
+
112
+ def deleteMapImage(no)
113
+ if @mapimages[no]!=nil
114
+ @mapimages[no].del
115
+ end
116
+ @mapimages.delete_at(no)
117
+ end
118
+
119
+ def deleteAllMapImages
120
+ @mapimages.clear
121
+ end
122
+
123
+ def newWidget(widget)
124
+ return @guiWidgets << widget
125
+ end
126
+
127
+ def deleteWidget(widget)
128
+ id=widget.id
129
+ @guiWidgets.delete_at(id)
130
+ end
131
+
132
+ def deleteAllWidgets
133
+ @guiWidgets.each {|widget| widget.del}
134
+ @guiWidgets.clear
135
+ @focused=nil
136
+ @stickfocused=nil
137
+ self.text_input=nil
138
+ end
139
+
140
+ def createWidgets
141
+ self.text_input=nil
142
+ @focused=nil
143
+ @stickfocused=nil
144
+ end
145
+
146
+ def setTextInput(field)
147
+ self.text_input=field
148
+ end
149
+
150
+ def setFocus(object)
151
+ if @focused!=nil and not @focused.sleeping? #dont blur the object if it is the window or if it is sleeping
152
+ @focused.blur
153
+ end
154
+ if object==nil
155
+ @focused=nil
156
+ else
157
+ @focused=@guiWidgets[object]
158
+ end
159
+ end
160
+
161
+ def setStickyFocus(object)
162
+ if @stickfocused!=nil
163
+ @stickfocused.onStickyBlur
164
+ end
165
+ @stickfocused=object
166
+ if @stickfocused!=nil
167
+ @stickfocused.onStickyFocus
168
+ end
169
+ end
170
+
171
+ def hasFocus
172
+ return @focused
173
+ end
174
+
175
+ def hasStickyFocus
176
+ return @stickfocused
177
+ end
178
+
179
+ def update
180
+ checkFocus
181
+
182
+ if @leftdrag.starting
183
+ if(Gosu::distance(@leftdrag.start_x, @leftdrag.start_y, mouse_x, mouse_y) > 5)
184
+ @leftdrag.confirmStart
185
+ end
186
+ elsif @rightdrag.starting
187
+ if(Gosu::distance(@rightdrag.start_x, @rightdrag.start_y, mouse_x, mouse_y) > 5)
188
+ @rightdrag.confirmStart
189
+ end
190
+ end
191
+
192
+ if @timer>100
193
+ @timer=0
194
+ else
195
+ @timer+=1
196
+ end
197
+
198
+ @state.update
199
+ @framedrawn = false
200
+ end
201
+
202
+ def draw
203
+ @cursor.draw
204
+ @images.each {|img| img.draw}
205
+ @guiWidgets.each {|widget| widget.intDraw}
206
+ @background_image.draw(0, 0, ZOrder::Background)
207
+ @state.draw
208
+ @framedrawn=true
209
+ end
210
+
211
+ private
212
+ def widgetDownProc(id)
213
+ char=button_id_to_char(id)
214
+ setStickyFocus(nil) if (id==Gosu::Button::MsLeft or id==Gosu::Button::MsRight) and @stickfocused!=nil #and not @stickfocused.contains?(mouse_x, mouse_y)
215
+ if @stickfocused!=nil and not @stickfocused.sleeping? #only sticky focused widgets recieve text input
216
+ if id==Gosu::Button::MsLeft
217
+ @leftdrag.start
218
+ @focused.event
219
+ elsif id==Gosu::Button::MsRight
220
+ @rightdrag.start
221
+ @focused.event
222
+ elsif char!=nil
223
+ if button_down?(Gosu::Button::KbLeftShift) or button_down?(Gosu::Button::KbRightShift)
224
+ if char=~/[A-Z]/i
225
+ char=char.upcase!
226
+ else
227
+ capschar=WidgetTextCaps[char]
228
+ if capschar!=nil
229
+ char=capschar
230
+ end
231
+ end
232
+ end
233
+ @stickfocused.feedText(char)
234
+ end
235
+ end
236
+ if @focused!=nil and not @focused.sleeping? and (@stickfocused==nil or @focused.id != @stickfocused.id) #normally focused widgets only recieve click input
237
+ if id==Gosu::Button::MsLeft
238
+ @focused.downevent(WidgetEvent::MsLeft)
239
+ elsif id==Gosu::Button::MsRight
240
+ @focused.downevent(WidgetEvent::MsRight)
241
+ end
242
+ end
243
+ end
244
+
245
+ def widgetUpProc(id)
246
+ char=button_id_to_char(id)
247
+ setStickyFocus(nil) if (id==Gosu::Button::MsLeft or id==Gosu::Button::MsRight) and @stickfocused!=nil #and not @stickfocused.contains?(mouse_x, mouse_y)
248
+ if @stickfocused!=nil and not @stickfocused.sleeping? #only sticky focused widgets recieve text input
249
+ if id==Gosu::Button::MsLeft
250
+ if @leftdrag.inprogress
251
+ @leftdrag.end
252
+ @stickfocused.event(WidgetEvent::MsLeftDrag)
253
+ else
254
+ @leftdrag.terminate
255
+ @stickfocused.event(WidgetEvent::MsLeft)
256
+ end
257
+ elsif id==Gosu::Button::MsRight
258
+ if @rightdrag.inprogress
259
+ @rightdrag.end
260
+ @stickfocused.event(WidgetEvent::MsRightDrag)
261
+ else
262
+ @rightdrag.terminate
263
+ @stickfocused.event(WidgetEvent::MsRight)
264
+ end
265
+ elsif id==Gosu::Button::KbUp or id==Gosu::Button::GpUp
266
+ @stickfocused.event(WidgetEvent::KeyUp)
267
+ elsif id==Gosu::Button::KbDown or id==Gosu::Button::GpDown
268
+ @stickfocused.event(WidgetEvent::KeyDown)
269
+ elsif id==Gosu::Button::KbLeft or id==Gosu::Button::GpLeft
270
+ @stickfocused.event(WidgetEvent::KeyLeft)
271
+ elsif id==Gosu::Button::KbRight or id==Gosu::Button::GpRight
272
+ @stickfocused.event(WidgetEvent::KeyRight)
273
+ elsif id==Gosu::Button::KbRight or id==Gosu::Button::GpRight
274
+ @stickfocused.event(WidgetEvent::KeyRight)
275
+ elsif id==Gosu::Button::KbBackspace or id==Gosu::Button::KbDelete
276
+ @stickfocused.event(WidgetEvent::KeyDelete)
277
+ elsif id==Gosu::Button::KbEscape or id==Gosu::Button::GpButton7
278
+ @stickfocused.event(WidgetEvent::KeyEscape)
279
+ elsif id==Gosu::Button::KbEnter or id==Gosu::Button::GpButton2 or id==28 #strange Gosu bug, KbEnter!=Enter code
280
+ @stickfocused.event(WidgetEvent::KeyEnter)
281
+ elsif id==Gosu::Button::KbLeftAlt or id==Gosu::Button::KbRightAlt or id==Gosu::Button::GpButton5
282
+ @stickfocused.event(WidgetEvent::KeyAlt)
283
+ elsif id==Gosu::Button::KbLeftControl or id==Gosu::Button::KbRightControl or id==Gosu::Button::GpButton3
284
+ @stickfocused.event(WidgetEvent::KeyControl)
285
+ elsif id==Gosu::Button::KbLeftShift or id==Gosu::Button::KbRightShift or id==Gosu::Button::GpButton6
286
+ @stickfocused.event(WidgetEvent::KeyShift)
287
+ elsif id==Gosu::Button::KbSpace or id==Gosu::Button::KbSpace or id==Gosu::Button::GpButton4
288
+ @stickfocused.event(WidgetEvent::KeySpace)
289
+ elsif id==Gosu::Button::GpButton0
290
+ @stickfocused.event(WidgetEvent::GpEnter)
291
+ elsif id==Gosu::Button::GpButton1
292
+ @stickfocused.event(WidgetEvent::GpCancel)
293
+ end
294
+ end
295
+ if @focused!=nil and not @focused.sleeping? and (@stickfocused==nil or @focused.id != @stickfocused.id) #normally focused widgets only recieve click input
296
+ if id==Gosu::Button::MsLeft
297
+ @focused.event(WidgetEvent::MsLeft)
298
+ elsif id==Gosu::Button::MsRight
299
+ @focused.event(WidgetEvent::MsRight)
300
+ elsif id==Gosu::Button::GpButton0
301
+ @focused.event(WidgetEvent::GpEnter)
302
+ end
303
+ end
304
+ end
305
+
306
+ def checkFocus
307
+ if @focused==nil
308
+ oldfocus=nil
309
+ else
310
+ oldfocus=@focused.id
311
+ end
312
+ newfocus=nil
313
+ focusFlag=false
314
+ @guiWidgets.each { |widget|
315
+ if (@cursor.visible and widget.over?(mouse_x,mouse_y)) and not widget.sleeping?
316
+ if not focusFlag
317
+ newfocus=widget.id
318
+ focusFlag=true
319
+ elsif widget.zfocus >= @guiWidgets[newfocus].zfocus #give focus to the widget with the highest focus zorder, or in the event of a tie, give focus to the new object
320
+ newfocus=widget.id
321
+ end
322
+ else
323
+ end
324
+ }
325
+ if newfocus!=nil and newfocus!=oldfocus
326
+ @guiWidgets[newfocus].focus
327
+ elsif newfocus==nil and oldfocus!=nil
328
+ setFocus(nil)
329
+ end
330
+ end
331
+ end
332
+
333
+ end #module GGLib