gglib 1.1.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
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