1
0

wordfighters_multiplayer.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. WordFighter.notify_dual = function() {
  2. $.ajax({
  3. url: '/wordFighter/levelChoice',
  4. data: { level: WordFighter.level },
  5. success: function(data){
  6. $("#waitingGame").load('/wordFighter/ready', function() {
  7. console.log( "Current opponent : " + WordFighter.opponentLevel );
  8. console.log( data );
  9. $("#fighter1portrait").addClass( WordFighter.level );
  10. $("#fighter1portrait").css( "visibility", "visible");
  11. addFighter( WordFighter.get_fighter( WordFighter.level) );
  12. if( data.opponentLevel != "undefined" ) {
  13. WordFighter.opponentLevel = data.opponentLevel;
  14. }
  15. WordFighter.set_opponent();
  16. });
  17. }
  18. });
  19. }
  20. WordFighter.new_word = function() {
  21. if( WordFighter.started ) {
  22. return false;
  23. }
  24. WordFighter.combo = 0;
  25. $.ajax({
  26. url: '/wordFighter/newEnigma',
  27. data: {level: WordFighter.level, mode: WordFighter.mode },
  28. success: function(data){
  29. WordFighter.letters = data.letters;
  30. for( i = 1; i < WordFighter.letters.length + 1; i++ )
  31. {
  32. WordFighter.setLetter( i, data.letters[ i - 1 ] )
  33. }
  34. WordFighter.answers = data.words;
  35. var rest = 0;
  36. var total = 0;
  37. for( var i = 3; i < 8; i++ ) {
  38. total += $( "#valid" + i).length;
  39. rest += $( "#valid" + i).find( ":empty" ).length;
  40. }
  41. console.log( data.remaining_time + " seconds" );
  42. COUNTDOWN.setTime( data.remaining_time);
  43. for( i = data.minLength; i < data.maxLength +1; i++ )
  44. {
  45. $( "#valid" + i ).empty();
  46. var obj = data.words[i];
  47. var count = 0;
  48. if( obj != undefined ) {
  49. if( WordFighter.mode == "offline" )
  50. count = obj.length;
  51. else
  52. count = obj;
  53. }
  54. for( j = 0; j < count; j++ )
  55. {
  56. $( "#valid" + i ).append( "<li id=\"valid" + i + "-" + j + "\" style=\"background-color:yellow\"></li>");
  57. }
  58. }
  59. WordFighter.started = true;
  60. if( WordFighter.first ) {
  61. WordFighter.startDate = new Date();
  62. COUNTDOWN.start();
  63. display_text( game_start );
  64. setTimeout( function() {
  65. hide_text();
  66. }, 1500);
  67. WordFighter.first = false;
  68. }
  69. }
  70. });
  71. }
  72. WordFighter.check_word = function() {
  73. $.ajax({
  74. type: "POST",
  75. url: '/wordFighter/check',
  76. data: {suggested: WordFighter.word },
  77. success: function(data){
  78. if( data.valid )
  79. {
  80. WordFighter.combo++;
  81. if( ( WordFighter.combo % 3 ) == 0 )
  82. fighter1.kick();
  83. else
  84. fighter1.punch();
  85. WordFighter.activeKeypress = true;
  86. $("#valid" + WordFighter.word.length + "-" + data.position).append( WordFighter.word );
  87. WordFighter.change_score( data.score );
  88. fighter1.punch();
  89. WordFighter.hit_opponent(WordFighter.word.length );
  90. while(WordFighter.erase());
  91. WordFighter.activeKeypress = false;
  92. WordFighter.check_validated();
  93. } else {
  94. WordFighter.combo = 0;
  95. WordFighter.activeKeypress = true;
  96. while(WordFighter.erase());
  97. WordFighter.activeKeypress = false;
  98. }
  99. fighter1.health = data.fighter1;
  100. fighter2.health = data.fighter2;
  101. if( fighter1.health == 0 || fighter2.health == 0 )
  102. WordFighter.game_over();
  103. if( data.remaining_time )
  104. COUNTDOWN.setTime( data.remaining_time );
  105. }
  106. });
  107. }
  108. WordFighter.game_over = function() {
  109. COUNTDOWN.stop();
  110. WordFighter.activeKeypress = true;
  111. var highscore = true;
  112. var win = WordFighter.score > 0;
  113. $.ajax({
  114. url: '/wordFighter/answers',
  115. data: {action: "answers"},
  116. success: function(data){
  117. $("#modalDialog").prepend(data.modal).modal({backdrop: false, show: true});
  118. $(".replayButton").bind( "click", function() {
  119. if( WordFighter.mode!="dual")
  120. window.location.href = "/wordFighter/game";
  121. else
  122. window.location.href = "/wordFighter/invite/" + opponent;
  123. } );
  124. for( i = data.minLength; i < data.maxLength +1; i++ )
  125. {
  126. var words = data.answers[i];
  127. if( words != undefined )
  128. {
  129. for( j = 0; j < words.length; j++ )
  130. {
  131. var id = "#valid" + ( words[ j ].length ) + "-" + j;
  132. $( id ).empty();
  133. $( id ).append( words[ j ] );
  134. }
  135. }
  136. }
  137. WordFighter.answers = null;
  138. fighter1.health = data.fighter1;
  139. fighter2.health = data.fighter2;
  140. console.log( fighter1.health + " vs " + fighter2.health );
  141. switch( data.state ) {
  142. case "win" :
  143. fighter1.victory();
  144. fighter2.loose();
  145. display_text( game_win );
  146. break;
  147. case "loose" :
  148. fighter1.loose();
  149. fighter2.victory();
  150. display_text( game_loose );
  151. break;
  152. default :
  153. display_text( game_draw );
  154. }
  155. }
  156. });
  157. WordFighter.started = false;
  158. }
  159. WordFighter.callback = function(data) {
  160. if( data.id != WordFighter.id && data.action != "replay" )
  161. return;
  162. if( data.action != undefined ) {
  163. if( data.fighter1 != undefined )
  164. fighter1.health = data.fighter1;
  165. if( data.fighter2 != undefined )
  166. fighter2.health = data.fighter2;
  167. switch( data.action ) {
  168. case "start" :
  169. addHealthBars();
  170. $("#waitingGame").show();
  171. WordFighter.start_game();
  172. break;
  173. case "join" :
  174. break;
  175. case "opponentLevel" :
  176. WordFighter.opponentLevel = data.level;
  177. WordFighter.set_opponent();
  178. break;
  179. case "hit" :
  180. case "beat" :
  181. WordFighter.opponentCombo++;
  182. if( (WordFighter.opponentCombo % 3 ) == 0 )
  183. fighter2.kick();
  184. else
  185. fighter2.punch();
  186. fighter1.ouch();
  187. if( data.action == "beat" )
  188. WordFighter.game_over();
  189. break;
  190. case "timeout" :
  191. if( WordFighter.started ) {
  192. var endDate = new Date();
  193. console.log( WordFighter.startDate.toTimeString() + " - " + endDate.toTimeString() + " = Timeout in " + ( (endDate.getSeconds() - WordFighter.startDate.getSeconds())) + " / " + (endDate.getTime() - WordFighter.startDate.getTime()));
  194. WordFighter.game_over();
  195. }
  196. break;
  197. case "replay" :
  198. $(".replayButton").bind( "click", function() {
  199. window.location.href = '/wordFighter/game/' + data.id;
  200. })
  201. break;
  202. }
  203. }
  204. }