MenuMain.java 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. package com.darkdimension.ritle_run;
  2. import android.content.res.Resources;
  3. import android.graphics.Canvas;
  4. public class MenuMain extends Menu
  5. {
  6. //Environment
  7. private Ground ground;
  8. private DiPoint tree0, tree1;
  9. //UI
  10. private DiPoint title;
  11. private DiPoint buttonStart;
  12. private DiPoint buttonExtra;
  13. private String textStart, textExtra;
  14. //Mute Button
  15. private DiPoint buttonMute;
  16. //Hard Start
  17. private boolean hardStart;
  18. //Tutorial
  19. private DiPoint buttonTutorial;
  20. private DiAnimation aTutorial;
  21. private int tutorial;
  22. private String sTutorial;
  23. private String purpose0, purpose1, jump0, jump1;
  24. private DiPoint tutCrystal;
  25. private String tutSCrystal0, tutSCrystal1;
  26. private DiPoint tutMana;
  27. private String tutSMana0, tutSMana1, tutSMana2, tutSMana3;
  28. private DiPoint tutDoubleScore;
  29. private String tutSDoubleScore0, tutSDoubleScore1;
  30. private DiPoint tutShield;
  31. private String tutSShield;
  32. private DiPoint tutSpike;
  33. private String tutSSpike0, tutSSpike1;
  34. private String tutDiff0, tutDiff1, tutTouchAnywhere;
  35. public MenuMain(Resources resources, boolean gHardStart)
  36. {
  37. //Super Constructor
  38. super();
  39. //Current Ground
  40. ground = new Ground();
  41. ground.setWidth(GameSurface.width /ground.getWidth() +2);
  42. ground.setCenterX(GameSurface.width/2);
  43. ground.setBottom(GameSurface.height);
  44. //Trees
  45. tree0 = new DiPoint(5);
  46. tree0.setCenterX(GameSurface.width /4);
  47. tree0.setBottom (ground.getGroundLevel());
  48. tree1 = new DiPoint(6);
  49. tree1.setCenterX(GameSurface.width *5/6);
  50. tree1.setBottom (ground.getGroundLevel());
  51. //Title
  52. title = new DiPoint(7);
  53. title.setCenterX(GameSurface.width /2);
  54. title.setCenterY(GameSurface.height/4);
  55. //Buttons
  56. buttonStart = new DiPoint(8);
  57. buttonStart.setCenterX(GameSurface.width /3);
  58. buttonStart.setCenterY(GameSurface.height *2/3);
  59. buttonExtra = new DiPoint(8);
  60. buttonExtra.setCenterX(GameSurface.width *2/3);
  61. buttonExtra.setCenterY(GameSurface.height *2/3);
  62. //Button Strings
  63. textStart = resources.getString(R.string.button_start);
  64. textExtra = resources.getString(R.string.button_extra);
  65. //Mute
  66. buttonMute = new DiPoint(GameSurface.bSound ? 26 : 27);
  67. buttonMute.setRight (GameSurface.width -buttonMute.getWidth ()/2);
  68. buttonMute.setBottom(GameSurface.height -buttonMute.getHeight()/2);
  69. //Hard Start
  70. hardStart = gHardStart;
  71. //Tutorial
  72. buttonTutorial = new DiPoint(8);
  73. buttonTutorial.setLeft(buttonTutorial.getWidth()/2);
  74. buttonTutorial.setBottom(GameSurface.height -buttonTutorial.getHeight()/2);
  75. aTutorial = new DiAnimation(10);
  76. tutorial = -1;
  77. sTutorial = resources.getString(R.string.tutorial);
  78. purpose0 = resources.getString(R.string.tutorial_purpose_0);
  79. purpose1 = resources.getString(R.string.tutorial_purpose_1);
  80. jump0 = resources.getString(R.string.tutorial_jump_0);
  81. jump1 = resources.getString(R.string.tutorial_jump_1);
  82. tutCrystal = new DiPoint(21);
  83. tutCrystal.setCenterX(GameSurface.width/2);
  84. tutCrystal.setCenterY(GameSurface.height/3);
  85. tutSCrystal0 = resources.getString(R.string.tutorial_crystal_0);
  86. tutSCrystal1 =resources.getString(R.string.tutorial_crystal_1);
  87. tutMana = new DiPoint(22);
  88. tutMana.setCenterX(GameSurface.width/2);
  89. tutMana.setCenterY(GameSurface.height/3);
  90. tutSMana0 = resources.getString(R.string.tutorial_mana_0);
  91. tutSMana1 = resources.getString(R.string.tutorial_mana_1);
  92. tutSMana2 = resources.getString(R.string.tutorial_mana_2);
  93. tutSMana3 = resources.getString(R.string.tutorial_mana_3);
  94. tutDoubleScore = new DiPoint(24);
  95. tutDoubleScore.setCenterX(GameSurface.width/2);
  96. tutDoubleScore.setCenterY(GameSurface.height/3);
  97. tutSDoubleScore0 = resources.getString(R.string.tutorial_double_score_0);
  98. tutSDoubleScore1 = resources.getString(R.string.tutorial_double_score_1);
  99. tutShield = new DiPoint(23);
  100. tutShield.setCenterX(GameSurface.width/2);
  101. tutShield.setCenterY(GameSurface.height/3);
  102. tutSShield = resources.getString(R.string.tutorial_shield);
  103. tutSpike = new DiPoint(25);
  104. tutSpike.setCenterX(GameSurface.width / 2);
  105. tutSpike.setCenterY(GameSurface.height/3);
  106. tutSSpike0 = resources.getString(R.string.tutorial_spikes_0);
  107. tutSSpike1 = resources.getString(R.string.tutorial_spikes_1);
  108. tutDiff0 = resources.getString(R.string.tutorial_end_0);
  109. tutDiff1 = resources.getString(R.string.tutorial_end_1);
  110. tutTouchAnywhere = resources.getString(R.string.touch_anywhere);
  111. }
  112. public Action update()
  113. {
  114. //Super Update!
  115. super.update();
  116. //Process input
  117. if (bTouched)
  118. {
  119. //Cancel Input
  120. bTouched = false;
  121. //Touch Button
  122. if (tutorial > -1)
  123. {
  124. tutorial--;
  125. if (tutorial == -1)
  126. aTutorial.startFromEnd();
  127. } else
  128. if (buttonStart.isTouched(touchX, touchY))
  129. destroy(Action.TO_GAME); else
  130. if (buttonExtra.isTouched(touchX, touchY))
  131. destroy(Action.TO_EXTRA); else
  132. if (buttonMute.isTouched(touchX, touchY))
  133. {
  134. if (GameSurface.bSound)
  135. {
  136. GameSurface.bSound = false;
  137. buttonMute.setFrame(27);
  138. }
  139. else
  140. {
  141. GameSurface.bSound = true;
  142. buttonMute.setFrame(26);
  143. }
  144. } else
  145. if (buttonTutorial.isTouched(touchX, touchY))
  146. aTutorial.startFromBeginning();
  147. }
  148. //Move Background
  149. if (Background.animate(null, 0))
  150. bDraw = true;
  151. //If it's destroyed, return next action
  152. if (aBasic.isAtStart() && !aBasic.isPositive())
  153. return nMenu;
  154. //Tutorial animation
  155. if (aTutorial.update())
  156. {
  157. invisible.setAlpha(255 -aTutorial.getDistance(255));
  158. if (aTutorial.isAtEnd())
  159. tutorial = 7;
  160. bDraw = true;
  161. }
  162. //Return Nothing
  163. return Action.NO_ACTION;
  164. }
  165. public void draw(Canvas canvas)
  166. {
  167. //Super draw
  168. super.draw(canvas);
  169. //Background
  170. Background.Draw(canvas, 0);
  171. //Hard Start
  172. if (aBasic.isPositive() && hardStart)
  173. {
  174. //Ground
  175. ground.draw(canvas, 0, 0, invisible);
  176. //Trees
  177. tree0.draw(canvas, invisible);
  178. tree1.draw(canvas, invisible);
  179. if (aBasic.isAtEnd()) hardStart = false;
  180. }
  181. else
  182. {
  183. //Ground
  184. ground.draw(canvas, 0, 0, null);
  185. //Trees
  186. tree0.draw(canvas);
  187. tree1.draw(canvas);
  188. }
  189. //UI
  190. if (tutorial == -1)
  191. {
  192. //Title
  193. title.draw(canvas, invisible);
  194. //Buttons
  195. buttonStart.draw(canvas, invisible);
  196. canvas.drawText(textStart, buttonStart.getCenterX(), buttonStart.getCenterY() + (10 * GameSurface.density), GameSurface.font);
  197. buttonExtra.draw(canvas, invisible);
  198. canvas.drawText(textExtra, buttonExtra.getCenterX(), buttonExtra.getCenterY() +(10 *GameSurface.density), GameSurface.font);
  199. buttonMute.draw(canvas, invisible);
  200. buttonTutorial.draw(canvas, invisible);
  201. canvas.drawText(sTutorial, buttonTutorial.getCenterX(), buttonTutorial.getCenterY() +(10 *GameSurface.density), GameSurface.font);
  202. }
  203. //Tutorial
  204. else
  205. {
  206. switch (tutorial)
  207. {
  208. case 7:
  209. canvas.drawText(purpose0, GameSurface.width/2, GameSurface.height/2, GameSurface.font);
  210. canvas.drawText(purpose1, GameSurface.width/2, GameSurface.height/2 +(20 *GameSurface.density), GameSurface.font);
  211. break;
  212. case 6:
  213. canvas.drawText(jump0, GameSurface.width/2, GameSurface.height/2, GameSurface.font);
  214. canvas.drawText(jump1, GameSurface.width/2, GameSurface.height/2 +(20 *GameSurface.density), GameSurface.font);
  215. break;
  216. case 5:
  217. tutCrystal.draw(canvas);
  218. canvas.drawText(tutSCrystal0, GameSurface.width/2, GameSurface.height/2, GameSurface.font);
  219. canvas.drawText(tutSCrystal1, GameSurface.width/2, GameSurface.height/2 +(20 *GameSurface.density), GameSurface.font);
  220. break;
  221. case 4:
  222. tutMana.draw(canvas);
  223. canvas.drawText(tutSMana0, GameSurface.width/2, GameSurface.height/2, GameSurface.font);
  224. canvas.drawText(tutSMana1, GameSurface.width/2, GameSurface.height/2 +(20 *GameSurface.density), GameSurface.font);
  225. canvas.drawText(tutSMana2, GameSurface.width/2, GameSurface.height/2 +(20 *GameSurface.density)*2, GameSurface.font);
  226. canvas.drawText(tutSMana3, GameSurface.width/2, GameSurface.height/2 +(20 *GameSurface.density)*3, GameSurface.font);
  227. break;
  228. case 3:
  229. tutDoubleScore.draw(canvas);
  230. canvas.drawText(tutSDoubleScore0, GameSurface.width/2, GameSurface.height/2, GameSurface.font);
  231. canvas.drawText(tutSDoubleScore1, GameSurface.width/2, GameSurface.height/2 +(20 *GameSurface.density), GameSurface.font);
  232. break;
  233. case 2:
  234. tutShield.draw(canvas);
  235. canvas.drawText(tutSShield, GameSurface.width/2, GameSurface.height/2, GameSurface.font);
  236. break;
  237. case 1:
  238. tutSpike.draw(canvas);
  239. canvas.drawText(tutSSpike0, GameSurface.width/2, GameSurface.height/2, GameSurface.font);
  240. canvas.drawText(tutSSpike1, GameSurface.width/2, GameSurface.height/2 +(20 *GameSurface.density), GameSurface.font);
  241. break;
  242. case 0:
  243. canvas.drawText(tutDiff0, GameSurface.width/2, GameSurface.height/2, GameSurface.font);
  244. canvas.drawText(tutDiff1, GameSurface.width/2, GameSurface.height/2 +(20 *GameSurface.density)*2, GameSurface.font);
  245. break;
  246. }
  247. canvas.drawText(tutTouchAnywhere, GameSurface.width / 2, GameSurface.height - (20 * GameSurface.density), GameSurface.font);
  248. }
  249. }
  250. }