| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440 |
- var DURATION = 60;
- var WordFighter = {
- id: null,
- word: "",
- started: false,
- activeKeypress: false,
- level: 'E',
- answers: null,
- letters: null,
- score: 0,
- combo: 0,
- opponentCombo: 0,
- first: true,
- opponentLevel: null,
- startDate: null,
-
- toggle_howto: function() {
- $('#howto').slideToggle();
- },
-
- change_level: function( chosenLevel ) {
- WordFighter.level = chosenLevel;
-
- switch( chosenLevel ) {
- case 'E' :
- $("#valid3header").show();
- $("#valid3column").show();
- $("#valid7header").show();
- $("#valid7column").show();
- break;
- case 'M' :
- $("#valid3header").show();
- $("#valid3column").show();
- $("#valid7header").hide();
- $("#valid7column").hide();
- break;
- case 'H' :
- $("#valid3header").hide();
- $("#valid3column").hide();
- $("#valid7header").show();
- $("#valid7column").show();
- break;
- case 'X' :
- $("#valid3header").show();
- $("#valid3column").show();
- $("#valid7header").hide();
- $("#valid7column").hide();
- break;
- }
- },
-
- notify_dual: function() {
- $.ajax({
- url: '/wordFighter/levelChoice',
- data: { level: WordFighter.level },
- success: function(data){
- $("#waitingGame").load('/wordFighter/get_ready', function() {
- console.log( "Current opponent : " + WordFighter.opponentLevel );
- console.log( data );
- display_text('versus', '#howToPlay', 1, false);
- $("#fighter1portrait").addClass( WordFighter.level );
- $("#fighter1portrait").css( "visibility", "visible");
- addFighter( WordFighter.get_fighter( WordFighter.level) );
- addScoreBoard();
- WordFighter.opponentLevel = WordFighter.get_random_fighter();
- setTimeout( function() {
- WordFighter.start_game();
- }, 3000 );
- WordFighter.set_opponent();
- });
- }
- });
- },
-
- get_fighter : function(level) {
- switch( level ) {
- case 'E' :
- return new Sakura();
- case 'M' :
- return new Ryu();
- case 'H' :
- return new Felicia();
- case 'X' :
- return new Akuma();
- }
- },
-
- get_random_fighter : function() {
- var levels = new Array();
- levels[ 0 ] = 'E';
- levels[ 1 ] = 'M';
- levels[ 2 ] = 'H';
- levels[ 3 ] = 'X';
- return levels[ Math.floor(Math.random() * 4) ];
- },
- set_opponent: function() {
- var fighter2Div = $("#fighter2portrait");
- if( fighter2Div != "undefined" && WordFighter.opponentLevel != null ){
- fighter2Div.addClass(WordFighter.opponentLevel);
- fighter2Div.css( "visibility", "visible");
- addFighter2( WordFighter.get_fighter( WordFighter.opponentLevel ) );
- }
- },
-
- hit_opponent: function( hit ) {
- fighter2.ouch();
- fighter2.health = fighter2.health - hit;
- },
-
- start_game: function() {
-
- $("#waitingGame").hide();
- $("#gamePanel").show();
- $("#start").attr("disabled","disabled");
- $("#level").attr("disabled","disabled");
-
- fighter1.start();
- fighter2.start();
-
- display_text(game_waiting_ready);
-
- WordFighter.activeKeypress = false;
- WordFighter.clean();
- WordFighter.first = true;
- WordFighter.init_score();
- COUNTDOWN.init(0, DURATION);
- SCOREBOARD.init();
-
- setTimeout( function() {
- WordFighter.new_word();
- COUNTDOWN.callback = function() {
- $('#start').removeAttr('disabled');
- $('#level').removeAttr('disabled');
- WordFighter.game_over();
- };
- }, 3000)
- },
-
- setLetter: function( index, character ) {
- $( "#letter" + index ).removeClass();
- $( "#letter" + index ).addClass( "letter" );
- $( "#letter" + index ).addClass( character );
- },
-
- keypressedHandler: function( event ) {
- if( WordFighter.activeKeypress )
- return false;
-
- WordFighter.activeKeypress = true;
-
- if( event.which == 32 && WordFighter.level != 'X' ) { // space
- while( WordFighter.erase() );
- WordFighter.started = false;
- WordFighter.new_word();
- WordFighter.activeKeypress = false;
- return true;
- }
-
- if( event.which == 13 ) { // enter
- WordFighter.check_word();
- WordFighter.activeKeypress = false;
- return true;
- }
-
- if( event.which == 8 && !$.browser.safari) { // backspace
- if( WordFighter.word.length > 0 ) {
- WordFighter.erase();
- WordFighter.activeKeypress = false;
- }
- return false;
- }
-
- var character = String.fromCharCode(event.which);
-
- for( var index = 1; index < 8; index++ )
- {
- if( WordFighter.process( index, character, "hide" ) ) {
- $( "#typed" + (WordFighter.word.length + 1) ).show();
- $( "#typed" + (WordFighter.word.length + 1) ).addClass( character );
- WordFighter.word += character;
- WordFighter.activeKeypress = false;
- return true;
- }
- }
-
- WordFighter.activeKeypress = false;
-
- return true;
- },
- // Hack for Chrome
- prevent_backspace: function( event ) {
- if( event.which == 8 ) { // backspace
- if( WordFighter.word.length > 0 ) {
- WordFighter.erase();
- WordFighter.activeKeypress = false;
- }
- return false;
- }
- },
- clean: function() {
- for( var index = 1; index < 8; index++ ) {
- var character = WordFighter.word.charAt( index );
- $( "#typed" + WordFighter.word.length ).removeClass( character );
- $( "#letter" + index ).removeClass();
- $( "#letter" + index ).addClass( "letter" );
- }
- },
-
- erase: function() {
- var character = WordFighter.word.charAt( WordFighter.word.length - 1);
- for( var index = 1; index < 8; index++ )
- {
- if( WordFighter.process( index, character, "show" ) ) {
- $( "#typed" + WordFighter.word.length ).hide();
- $( "#typed" + WordFighter.word.length ).removeClass( character );
- WordFighter.word = WordFighter.word.substring(0, WordFighter.word.length - 1);
- return true;
- }
- }
-
- return false;
- },
-
- process: function( index, character, visibility ) {
- if( $( "#letter" + index ).hasClass( character ) )
- {
- if( ( visibility === "hide" && $( "#letter" + index ).hasClass( "hideLetter" ) )
- || ( visibility === "show" && $( "#letter" + index ).hasClass( "showLetter" ) ) ) {
- return false;
- }
-
- $( "#letter" + index ).addClass( visibility + "Letter");
- $( "#letter" + index ).removeClass( visibility === "show" ? "hideLetter" : "showLetter" );
- return true;
- }
-
- return false;
- },
-
- new_word: function() {
-
- if( WordFighter.started ) {
- return false;
- }
-
- WordFighter.combo = 0;
- $.ajax({
- url: '/wordFighter/newEnigma',
- data: {level: WordFighter.level},
- success: function(data){
- console.log("Ajax : ");
- console.log(data);
- WordFighter.letters = data.letters;
-
- for( i = 1; i < WordFighter.letters.length + 1; i++ )
- {
- WordFighter.setLetter( i, data.letters[ i - 1 ] )
- }
-
- WordFighter.answers = data.words;
- var rest = 0;
- var total = 0;
- for( var i = 3; i < 8; i++ ) {
- total += $( "#valid" + i).length;
- rest += $( "#valid" + i).find( ":empty" ).length;
- }
- if( !WordFighter.first ) {
- if( rest == 0) {
- COUNTDOWN.add( total * 5 );
- WordFighter.change_score( WordFighter.score + total * 5 );
- } else {
- if( rest / total < 0.5 )
- fighter2.kick();
- else
- fighter2.punch();
- fighter1.ouch();
- WordFighter.change_score( Math.max( 0, WordFighter.score -5 * rest ) );
- }
- }
-
- for( i = data.minLength; i < data.maxLength +1; i++ )
- {
- $( "#valid" + i ).empty();
- var obj = data.words[i];
- var count = 0;
- if( obj != undefined )
- count = obj.length;
- for( j = 0; j < count; j++ )
- {
- $( "#valid" + i ).append( "<li id=\"valid" + i + "-" + j + "\" style=\"background-color:yellow\"></li>");
- }
- }
-
-
- WordFighter.started = true;
- if( WordFighter.first ) {
- WordFighter.startDate = new Date();
- COUNTDOWN.start();
-
- display_text( game_start );
- setTimeout( function() {
- hide_text();
- }, 1500);
- WordFighter.first = false;
- }
- }
- });
- },
-
- check_word: function() {
- var lAnswers = WordFighter.answers[ WordFighter.word.length ];
- var position = -1;
- if( lAnswers )
- position = lAnswers.indexOf( WordFighter.word );
- if( position == -1 ) {
- WordFighter.combo = 0;
- WordFighter.activeKeypress = true;
- while(WordFighter.erase());
- WordFighter.activeKeypress = false;
- return false;
- }
- else {
- WordFighter.activeKeypress = true;
- if( $("#valid" + WordFighter.word.length + "-" + position).text().length == 0 ) {
- WordFighter.combo++;
- if( ( WordFighter.combo % 3 ) == 0 )
- fighter1.kick();
- else
- fighter1.punch();
- WordFighter.hit_opponent( WordFighter.word.length );
- $("#valid" + WordFighter.word.length + "-" + position).append( WordFighter.word );
- WordFighter.change_score( WordFighter.score + 10 * WordFighter.word.length );
- WordFighter.check_validated();
- }
- }
-
- while(WordFighter.erase());
- WordFighter.activeKeypress = false;
- },
-
- check_validated: function() {
- var rest = 0;
- for( var i = 3; i < 8; i++ ) {
- rest += $( "#valid" + i).find( ":empty" ).length;
- }
- if( rest == 0 ) {
- while( WordFighter.erase() );
- WordFighter.started = false;
- WordFighter.new_word();
- WordFighter.activeKeypress = false;
- }
- },
-
- game_over: function() {
- COUNTDOWN.stop();
- WordFighter.show_game_over();
- WordFighter.activeKeypress = true;
- var highscore = true;
- var win = WordFighter.score > 0;
-
- for( i = 3; i < 8; i++ )
- {
- var words = WordFighter.answers[i];
- if( words != undefined )
- {
- for( j = 0; j < words.length; j++ )
- {
- var id = "#valid" + ( words[ j ].length ) + "-" + j;
- $( id ).empty();
- $( id ).append( words[ j ] );
- }
- }
- }
- WordFighter.started = false;
- },
-
- show_game_over: function() {
- $('.button').show();
- /*
- $.ajax({
- url: "/wordFighter/gameOver",
- data: {level: WordFighter.level},
- success: function(data){
- $("#modalDialog").prepend(data).modal({backdrop: false, show: true});
-
- $(".replayButton").bind( "click", function() {
- if( WordFighter.mode!="dual")
- window.location.href = "/wordFighter/game";
- else
- window.location.href = "/wordFighter/invite/" + opponent;
- } );
- }
- });
- */
- },
-
- init_score: function() {
- WordFighter.score = 0;
- SCOREBOARD.init();
- },
-
- change_score: function(score) {
- WordFighter.score = score;
- SCOREBOARD.set_score( WordFighter.score );
- }
- };
- function drawText( divHTML, message ) {
- var html = "";
-
- for( var i = 0; i < message.length; i++ ) {
- var letter = message[i];
- var x = ((97 - message.charCodeAt(i)) * 16);
- if( letter == " " )
- html += "<div class='blank'></div>";
- else if( letter == "!" )
- html += "<div class='clock' style='background-position: -416px -16px'></div>";
- else
- html += "<div class='clock' style='background-position: " + x + "px -16px'></div>";
- }
-
- divHTML.css( "width", (message.length * 16) + "px");
- divHTML.css( "margin-left", "-" + (message.length * 8) + "px");
- divHTML.css( "margin-top", "20px");
- divHTML.css( "position", "relative");
- divHTML.css( "left", "50%");
- divHTML.css( "top", "50%");
- divHTML.append( html );
- };
|