preMenu.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. /*
  2. var langState = {
  3. create: function(){},
  4. --------------------------------------- end of phaser functions
  5. func_setLang: function(){} //calls loadState
  6. };
  7. var loadState = {
  8. preload: function(){},
  9. create: function(){} //calls nameState
  10. -------------------------------------- end of phaser functions
  11. };
  12. var nameState = {
  13. create: function(){},
  14. ------------------------------------------------ end of phaser functions
  15. func_checkEmptyName: function(){}
  16. func_savename: function(){} //calls menu.js -> menuState
  17. };
  18. var buttonSettings = {
  19. func_addButtons: function(_,_,_,_,_,_,_,_,_){},
  20. loadState: function(){}
  21. };
  22. */
  23. // "choose language" screen
  24. var langState = {
  25. create: function() {
  26. // AUX
  27. var style = { font: '28px Arial', fill: '#00804d', align: 'center' };
  28. //AUDIO
  29. beepSound = game.add.audio('sound_beep'); // game sound
  30. okSound = game.add.audio('sound_ok'); // correct answer sound
  31. errorSound = game.add.audio('sound_error'); // wrong answer sound
  32. //BACKGROUND
  33. game.stage.backgroundColor = '#cce5ff';
  34. // LANGUAGES
  35. //pt_BR
  36. var titlePT = game.add.text(this.game.world.centerX - 220, this.game.world.centerY - 180, 'FRAÇÕES ', style);
  37. titlePT.anchor.setTo(1, 0.5);
  38. var flagPT = game.add.sprite(this.game.world.centerX - 120, this.game.world.centerY - 180, 'flag_BR');
  39. flagPT.anchor.setTo(0.5, 0.5);
  40. flagPT.inputEnabled = true;
  41. flagPT.input.useHandCursor = true;
  42. flagPT.events.onInputDown.add(this.func_setLang,{lang:'pt_BR'});
  43. flagPT.events.onInputOver.add(function(){ flagPT.scale.setTo(1.05) });
  44. flagPT.events.onInputOut.add(function(){ flagPT.scale.setTo(1) });
  45. //it IT
  46. var titleIT = game.add.text(this.game.world.centerX - 220, this.game.world.centerY, 'FRAZIONI ', style);
  47. titleIT.anchor.setTo(1, 0.5);
  48. var flagIT = game.add.sprite(this.game.world.centerX - 120, this.game.world.centerY, 'flag_IT');
  49. flagIT.anchor.setTo(0.5, 0.5);
  50. flagIT.inputEnabled = true;
  51. flagIT.input.useHandCursor = true;
  52. flagIT.events.onInputDown.add(this.func_setLang,{lang:'it_IT'});
  53. flagIT.events.onInputOver.add(function(){ flagIT.scale.setTo(1.05) });
  54. flagIT.events.onInputOut.add(function(){ flagIT.scale.setTo(1) });
  55. //en_US
  56. var titleEN = game.add.text(this.game.world.centerX - 220, this.game.world.centerY + 180, 'FRACTIONS ', style);
  57. titleEN.anchor.setTo(1, 0.5);
  58. var flagEN = game.add.sprite(this.game.world.centerX - 120, this.game.world.centerY + 180, 'flag_US');
  59. flagEN.anchor.setTo(0.5, 0.5);
  60. flagEN.inputEnabled = true;
  61. flagEN.input.useHandCursor = true;
  62. flagEN.events.onInputDown.add(this.func_setLang,{lang:'en_US'});
  63. flagEN.events.onInputOver.add(function(){ flagEN.scale.setTo(1.05) });
  64. flagEN.events.onInputOut.add(function(){ flagEN.scale.setTo(1) });
  65. //es_PE
  66. var titleES = game.add.text(this.game.world.centerX + 200, this.game.world.centerY - 100, 'FRACCIONES ', style);
  67. titleES.anchor.setTo(1, 0.5);
  68. var flagES = game.add.sprite(this.game.world.centerX + 300, this.game.world.centerY - 100, 'flag_PE');
  69. flagES.anchor.setTo(0.5, 0.5);
  70. flagES.inputEnabled = true;
  71. flagES.input.useHandCursor = true;
  72. flagES.events.onInputDown.add(this.func_setLang,{lang:'es_PE'});
  73. flagES.events.onInputOver.add(function(){ flagES.scale.setTo(1.05) });
  74. flagES.events.onInputOut.add(function(){ flagES.scale.setTo(1) });
  75. //fr_FR
  76. var titleFR = game.add.text(this.game.world.centerX + 200, this.game.world.centerY + 100, 'FRACTIONS ', style);
  77. titleFR.anchor.setTo(1, 0.5);
  78. var flagFR = game.add.sprite(this.game.world.centerX + 300, this.game.world.centerY + 100, 'flag_FR');
  79. flagFR.anchor.setTo(0.5, 0.5);
  80. flagFR.inputEnabled = true;
  81. flagFR.input.useHandCursor = true;
  82. flagFR.events.onInputDown.add(this.func_setLang,{lang:'fr_FR'});
  83. flagFR.events.onInputOver.add(function(){ flagFR.scale.setTo(1.05) });
  84. flagFR.events.onInputOut.add(function(){ flagFR.scale.setTo(1) });
  85. },
  86. func_setLang: function(){
  87. //set language
  88. lang = this.lang;
  89. //start resource loading
  90. game.state.start('load');
  91. }
  92. };
  93. // "loading" screen and load json dictionary
  94. var loadState = {
  95. preload: function() {
  96. // Displaying the progress bar
  97. var progressBar = game.add.sprite(game.world.centerX, game.world.centerY, 'progressBar');
  98. progressBar.anchor.setTo(0.5, 0.5);
  99. game.load.setPreloadSprite(progressBar);
  100. // Loading dictionary
  101. game.load.json('dictionary', 'assets/languages/'+lang+'.json');
  102. },
  103. create: function() {
  104. // gets selected language from json
  105. lang = game.cache.getJSON('dictionary');
  106. if(firstTime==true){ // select language screen - first time opening ifractions
  107. firstTime = false;
  108. game.state.start('name'); // go to select name screen, then menu
  109. }else{ // changing language during the game
  110. game.state.start('menu'); // go to menu
  111. }
  112. }
  113. };
  114. // "username" screen
  115. var nameState = {
  116. create: function() {
  117. // AUX
  118. var style = { font: '30px Arial', fill: '#00804d', align: 'center' };
  119. var styleName = { font: '44px Arial', fill: '#000000', align: 'center' };
  120. // title
  121. var title = game.add.text(this.game.world.centerX, this.game.world.centerY - 100, lang.insert_name, style);
  122. title.anchor.setTo(0.5);
  123. var errorEmptyName = game.add.text(this.game.world.centerX, this.game.world.centerY - 70, "", {font: '18px Arial', fill: '#330000', align: 'center'});
  124. errorEmptyName.anchor.setTo(0.5);
  125. // "READY" button
  126. var btn = game.add.graphics(this.game.world.centerX - 84, this.game.world.centerY + 70);
  127. btn.lineStyle(1, 0x293d3d);
  128. btn.beginFill(0x3d5c5c);
  129. btn.drawRect(0, 0, 168, 60);
  130. btn.alpha = 0.5;
  131. btn.endFill();
  132. btn.inputEnabled = true;
  133. btn.input.useHandCursor = true;
  134. btn.events.onInputDown.add(this.func_checkEmptyName,{errorEmptyName: errorEmptyName});
  135. btn.events.onInputOver.add(function(){ btn.alpha=0.4 });
  136. btn.events.onInputOut.add(function(){ btn.alpha=0.5 });
  137. var ready = game.add.text(this.game.world.centerX + 1, this.game.world.centerY + 102, lang.ready, { font: '34px Arial', fill: '#f0f5f5', align: 'center' });
  138. ready.anchor.setTo(0.5);
  139. document.getElementById("text-field-div").style.visibility = "visible";
  140. document.getElementById("name_id").addEventListener('keypress', function(e){
  141. var keycode = e.keycode ? e.keycode : e.which;
  142. //se apertar enter vai para ready, assim como o botão
  143. if(keycode == 13){
  144. nameState["func_checkEmptyName"]();
  145. }
  146. });
  147. },
  148. func_checkEmptyName: function() {
  149. if(document.getElementById("name_id").value!=""){
  150. nameState["func_savename"]();
  151. this.errorEmptyName.setText("");
  152. }else{
  153. this.errorEmptyName.setText(lang.empty_name);
  154. }
  155. },
  156. func_savename: function() {
  157. // saves the typed name on username variable
  158. username = document.getElementById("name_id").value;
  159. if(debugMode) console.log("user is" + username);
  160. document.getElementById("text-field-div").style.visibility = "hidden";
  161. //clears the text field again
  162. document.getElementById("name_id").value = "";
  163. if(audioStatus){
  164. beepSound.play();
  165. }
  166. game.state.start('menu');
  167. }
  168. };
  169. var buttonSettings = {
  170. func_addButtons: function(left, right, b0Esq, b1Esq, b2Esq, b0Dir, b1Dir, phase, helpBtn){
  171. var m_info_right, m_info_left;
  172. var m_world, m_menu, m_back, m_help, m_audio;
  173. var xEsq = 10;
  174. var xDir = (game.world.width - 50 - 10);
  175. if(left == 1){
  176. m_info_left = game.add.text(xEsq, 53, "", { font: "20px Arial", fill: "#330000", align: "center" });
  177. }
  178. if(right == 1){
  179. m_info_right = game.add.text(xDir+50, 53, "", { font: "20px Arial", fill: "#330000", align: "right" });
  180. m_info_right.anchor.setTo(1,0.02);
  181. }
  182. //left buttons
  183. if(b0Esq == 1){
  184. // Return to diffculty
  185. m_back = game.add.sprite(xEsq, 10, 'back');
  186. m_back.inputEnabled = true;
  187. m_back.input.useHandCursor = true;
  188. m_back.events.onInputDown.add(this.loadState, {state: phase, beep: beepSound});
  189. m_back.events.onInputOver.add(function(){ m_info_left.text = lang.menu_back});
  190. m_back.events.onInputOut.add(function(){ m_info_left.text = ""});
  191. xEsq+=50;
  192. }
  193. if(b1Esq == 1){
  194. // Return to menu button
  195. m_list = game.add.sprite(xEsq, 10, 'list');
  196. m_list.inputEnabled = true;
  197. m_list.input.useHandCursor = true;
  198. m_list.events.onInputDown.add(this.loadState, {state: "menu", beep: beepSound});
  199. m_list.events.onInputOver.add(function(){ m_info_left.text = lang.menu_list});
  200. m_list.events.onInputOut.add(function(){ m_info_left.text = ""});
  201. xEsq+=50;
  202. }
  203. if(b2Esq == 1){
  204. // Help button
  205. m_help = game.add.sprite(xEsq, 10, 'help');
  206. m_help.inputEnabled = true;
  207. m_help.input.useHandCursor = true;
  208. m_help.events.onInputDown.add(helpBtn, {beep: beepSound});
  209. m_help.events.onInputOver.add(function(){ m_info_left.text = lang.menu_help});
  210. m_help.events.onInputOut.add(function(){ m_info_left.text = ""});
  211. xEsq+=50;
  212. }
  213. //rightButtons
  214. if(b0Dir == 1){
  215. m_audio = game.add.sprite(xDir, 10, 'audio');
  216. audioStatus ? m_audio.frame = 0 : m_audio.frame = 1;
  217. m_audio.inputEnabled = true;
  218. m_audio.input.useHandCursor = true;
  219. m_audio.events.onInputDown.add(function(){ if(audioStatus){ audioStatus=false; m_audio.frame = 1; }else{ audioStatus=true; m_audio.frame = 0; }});
  220. m_audio.events.onInputOver.add(function(){ m_info_right.text = lang.audio });
  221. m_audio.events.onInputOut.add(function(){ m_info_right.text = "" });
  222. xDir-=50;
  223. }
  224. if(b1Dir == 1){
  225. // Return to language button
  226. m_world = game.add.sprite(xDir, 10, 'world');
  227. m_world.inputEnabled = true;
  228. m_world.input.useHandCursor = true;
  229. m_world.events.onInputDown.add(this.loadState, {state: "language", beep: beepSound});
  230. m_world.events.onInputOver.add(function(){ m_info_right.text = lang.menu_world });
  231. m_world.events.onInputOut.add(function(){ m_info_right.text = "" });
  232. xDir-=50;
  233. }
  234. },
  235. loadState: function(){
  236. if(audioStatus){
  237. this.beep.play();
  238. }
  239. game.state.start(this.state);
  240. }
  241. };