var PLAYGROUND_WIDTH = 384; var PLAYGROUND_HEIGHT = 96; var FIGHTER_STD_WIDTH = 82; var FIGHTER_EXT_WIDTH = 126; var FIGHTER_EXT_WIDTH_2 = 136; var FIGHTER_EXT_WIDTH_3 = 95; var FIGHTER_EXT_WIDTH_4 = 105; var FIGHTER_EXT_WIDTH_5 = 86; var FIGHTER1_POSX = PLAYGROUND_WIDTH / 2 - (FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH) / 2 - FIGHTER_STD_WIDTH; var FIGHTER2_POSX = PLAYGROUND_WIDTH / 2 + (FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH) / 2; var COUNTDOWN_WIDTH = 48; var COUNTDOWN_POSX = (PLAYGROUND_WIDTH - COUNTDOWN_WIDTH) / 2; var HEALTH_REFRESH_RATE = 15; var FIGHTER_HEALTH = 60; var LOOP_COUNT_REFRESH = 66; var fighter1 = null; var fighter2 = null; var loopCount = 0; var fighters = new Array(); $(function(){ //Playground Sprites var background = new $.gameQuery.Animation({imageURL: "images/background.png", offsety: PLAYGROUND_HEIGHT * Math.floor(Math.random()*11)}); $("#playground").playground({height: PLAYGROUND_HEIGHT, width: PLAYGROUND_WIDTH, keyTracker: true}); $.playground().addGroup("background", {width: PLAYGROUND_WIDTH, height: PLAYGROUND_HEIGHT}) .addSprite( "background1", {posx: 0, posy: 0, height: PLAYGROUND_HEIGHT, width: PLAYGROUND_WIDTH, animation: background}) .end() .addGroup("fighters", {width: PLAYGROUND_WIDTH, height: PLAYGROUND_HEIGHT}) .end() .addGroup( "hud", {width: PLAYGROUND_WIDTH, height: PLAYGROUND_HEIGHT}) .end(); $("#hud").append("
"); $("#hud").append("
"); $.playground().registerCallback(function(){ if( fighter1 ) updateHealth( $("#player1_health_level"), fighter1.health / fighter1.maxHealth ); if( fighter2 ) { updateHealth( $("#player2_health_level"), fighter2.health / fighter2.maxHealth ); //$("#player2_health_level").css( "margin-left", ( 100 - (fighter2.health / fighter2.maxHealth) * 100) ); } loopCount++; if( loopCount == LOOP_COUNT_REFRESH ) { loopCount = 0; var fighter = fighters[ "fighter1" ]; if( fighter && fighter.isIdle() ) { fighter.node.width( FIGHTER_STD_WIDTH ); fighter.node.x( FIGHTER1_POSX ); } fighter = fighters[ "fighter2" ]; if( fighter && fighter.isIdle() ) { fighter.node.width( FIGHTER_STD_WIDTH ); fighter.node.x( FIGHTER2_POSX ); } } }, HEALTH_REFRESH_RATE); $.playground().startGame( function() {}); addFighter = function( fighter) { $("#fighters").addSprite("fighter1", {animation: fighter.animations["idle"], posx:FIGHTER1_POSX, posy: 15, width: FIGHTER_STD_WIDTH, height: FIGHTER_STD_WIDTH}); fighter.node = $("#fighter1"); fighter1 = fighter; fighters[ "fighter1" ] = fighter; }; addFighter2 = function( fighter ) { $("#fighters").addSprite("fighter2", {animation: fighter.animations["idle"], posx:FIGHTER2_POSX, posy: 15, width: FIGHTER_STD_WIDTH, height: FIGHTER_STD_WIDTH}); fighter.node = $("#fighter2"); $("#fighter2").fliph(true); fighter2 = fighter; fighters[ "fighter2" ] = fighter; }; addScoreBoard = function() { $("#hud").append("
"); }; addHealthBars = function() { $("#hud").append("
"); $("#hud").append("
"); }; updateHealth = function( HTMLDiv, health ) { HTMLDiv.removeClass(); HTMLDiv.addClass("health_level"); if( health > 2/3) HTMLDiv.addClass("good"); else if( health > 1/3) HTMLDiv.addClass("middle"); else HTMLDiv.addClass("bad"); HTMLDiv.width( (health * 100) + "%" ); }; display_text = function( text, divId = "#step_title", offset = 1, changePosition = true ) { var message = text.toLowerCase(); var divHTML = $(divId); var html = ""; var yPos = offset * 16; for( var i = 0; i < message.length; i++ ) { var letter = message[i]; var x = ((97 - message.charCodeAt(i)) * 16); if( letter == " " ) html += "
"; else if( letter == "!" ) html += "
"; else html += "
"; } divHTML.empty(); divHTML.width( (text.length * 16) + "px"); if( changePosition ) { divHTML.css( "margin-left", "-" + (text.length * 8) + "px"); } divHTML.append( html ); }; hide_text = function() { $("#step_title").empty(); }; }); //Game objects: function Fighter(){ this.node = null; this.animations = new Array(); this.maxHealth = FIGHTER_HEALTH; this.health = FIGHTER_HEALTH; this.idle_state = false; this.isIdle = function() { return this.idle_state; }; this.setIdle = function( state ) { this.idle_state = state; }; this.start = function() { this.node.setAnimation(this.animations["start"], function(node) { fighters[ node.id ].idle(); }); }; this.idle = function() { this.node.setAnimation(this.animations["idle"]); this.setIdle( true ); }; this.punch = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.setAnimation(this.animations["punch"], function(node) { fighters[ node.id ].idle(); }); }; this.kick = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.setAnimation(this.animations["kick"], function(node) { fighters[ node.id ].idle(); }); }; this.special = function() {}; this.victory = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.setAnimation(this.animations["victory"]); }; this.loose = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.setAnimation(this.animations["loose"]); }; this.ouch = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.setAnimation(this.animations["ouch"], function(node) { fighters[ node.id ].idle(); }); }; this.laught = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.setAnimation(this.animations["laught"], function(node) { fighters[ node.id ].idle(); }); }; }; function Ryu(){ this.animations["start"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 8, offsety: 0, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["victory"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 7, offsety: 82, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["victory2"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 4, offsety: 82, offsetx: 246, delta: FIGHTER_STD_WIDTH, rate: 200, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["idle"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 6, offsety: 164, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL}); this.animations["punch"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 6, offsety: 246, delta: FIGHTER_EXT_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["kick"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 7, offsety: 328, delta: FIGHTER_EXT_WIDTH_2, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["ouch"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 4, offsety: 410, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["laught"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 7, offsety: 492, delta: FIGHTER_EXT_WIDTH_3, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["loose"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 9, offsety: 574, delta: FIGHTER_EXT_WIDTH_4, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["loose2"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 6, offsety: 656, delta: FIGHTER_EXT_WIDTH_4, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE}); }; Ryu.prototype = new Fighter(); Ryu.prototype.punch = function() { this.node.width( FIGHTER_EXT_WIDTH ); if( this.node.fliph() ) { this.node.x( -(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH), true); } this.node.setAnimation(this.animations["punch"], function(node) { var HTMLnode = fighters[ node.id ].node; HTMLnode.width( FIGHTER_STD_WIDTH ); if( HTMLnode.fliph() ) { HTMLnode.x(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH, true); } fighters[ node.id ].idle(); }); } Ryu.prototype.kick = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.width( FIGHTER_EXT_WIDTH_2 ); if( this.node.fliph() ) { this.node.x( -(FIGHTER_EXT_WIDTH_2 - FIGHTER_STD_WIDTH), true); } this.node.setAnimation(this.animations["kick"], function(node) { var HTMLnode = fighters[ node.id ].node; HTMLnode.width( FIGHTER_STD_WIDTH ); if( HTMLnode.fliph() ) { HTMLnode.x( FIGHTER_EXT_WIDTH_2 - FIGHTER_STD_WIDTH, true); } fighters[ node.id ].idle(); }); } Ryu.prototype.laught = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.width( FIGHTER_EXT_WIDTH_3 ); if( this.node.fliph() ) { this.node.x( -(FIGHTER_EXT_WIDTH_3 - FIGHTER_STD_WIDTH),true); } this.node.setAnimation(this.animations["laught"], function(node) { var HTMLnode = fighters[ node.id ].node; HTMLnode.width( FIGHTER_STD_WIDTH ); if( HTMLnode.fliph() ) { HTMLnode.x(FIGHTER_EXT_WIDTH_3 - FIGHTER_STD_WIDTH, true); } fighters[ node.id ].idle(); }); } Ryu.prototype.loose = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.width( FIGHTER_EXT_WIDTH_4 ); if( this.node.fliph() ) { this.node.x( -(FIGHTER_EXT_WIDTH_4 - FIGHTER_STD_WIDTH), true); } this.node.setAnimation(this.animations["loose"], function(node) { fighters[ node.id ].node.setAnimation(fighters[ node.id ].animations["loose2"]); }); } Ryu.prototype.victory = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.setAnimation(this.animations["victory"], function(node) { fighters[ node.id ].node.setAnimation(fighters[ node.id ].animations["victory2"]); }); } function Sakura(){ this.animations["start"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 9, offsety: 334, delta: FIGHTER_EXT_WIDTH_3, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["victory"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 7, offsety: 82, delta: FIGHTER_EXT_WIDTH_5, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["victory2"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 4, offsety: 82, offsetx: 258, delta: FIGHTER_EXT_WIDTH_5, rate: 200, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["idle"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 5, offsety: 0, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL}); this.animations["punch"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 5, offsety: 166, delta: FIGHTER_EXT_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["kick"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 6, offsety: 252, delta: FIGHTER_EXT_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["ouch"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 4, offsetx: 492, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); // this.animations["laught"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 7, offsety: 492, delta: FIGHTER_EXT_WIDTH_3, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["loose"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 10, offsety: 412, delta: FIGHTER_EXT_WIDTH_4, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE }); // this.animations["loose2"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 6, offsety: 656, delta: FIGHTER_EXT_WIDTH_4, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE}); }; Sakura.prototype = new Fighter(); Sakura.prototype.victory = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.setAnimation(this.animations["victory"], function(node) { fighters[ node.id ].node.setAnimation(fighters[ node.id ].animations["victory2"]); }); } Sakura.prototype.punch = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.width( FIGHTER_EXT_WIDTH ); if( this.node.fliph() ) { this.node.x( -(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH), true); } this.node.setAnimation(this.animations["punch"], function(node) { var HTMLnode = fighters[ node.id ].node; HTMLnode.width( FIGHTER_STD_WIDTH ); if( HTMLnode.fliph() ) { HTMLnode.x(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH, true); } fighters[ node.id ].idle(); }); } Sakura.prototype.kick = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.width( FIGHTER_EXT_WIDTH ); if( this.node.fliph() ) { this.node.x( -(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH), true); } this.node.setAnimation(this.animations["kick"], function(node) { var HTMLnode = fighters[ node.id ].node; HTMLnode.width( FIGHTER_STD_WIDTH ); if( HTMLnode.fliph() ) { HTMLnode.x(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH, true); } fighters[ node.id ].idle(); }); } Sakura.prototype.laught = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.width( FIGHTER_EXT_WIDTH_3 ); if( this.node.fliph() ) { this.node.x(-(FIGHTER_EXT_WIDTH_3 - FIGHTER_STD_WIDTH), true); } this.node.setAnimation(this.animations["start"], function(node) { var HTMLnode = fighters[ node.id ].node; HTMLnode.width( FIGHTER_STD_WIDTH ); if( HTMLnode.fliph() ) { HTMLnodex(FIGHTER_EXT_WIDTH_3 - FIGHTER_STD_WIDTH, true); } fighters[ node.id ].idle(); }); } Sakura.prototype.loose = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.width( FIGHTER_EXT_WIDTH_4 ); if( this.node.fliph() ) { this.node.x( -(FIGHTER_EXT_WIDTH_4 - FIGHTER_STD_WIDTH), true); } this.node.setAnimation(this.animations["loose"]); } function Akuma(){ this.animations["start"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 11, offsety: 82, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["victory"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 10, offsety: 328, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["victory2"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 8, offsety: 328, offsetx: 162, delta: FIGHTER_STD_WIDTH, rate: 200, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["idle"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 11, offsety: 0, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL}); this.animations["punch"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 5, offsety: 164, delta: FIGHTER_EXT_WIDTH_4, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["kick"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 7, offsety: 246, delta: FIGHTER_EXT_WIDTH_2, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["ouch"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 7, offsety: 576, delta: FIGHTER_EXT_WIDTH_4, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); // this.animations["laught"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 7, offsety: 492, delta: FIGHTER_EXT_WIDTH_3, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["loose"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 9, offsety: 412, delta: FIGHTER_EXT_WIDTH_4, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["loose2"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 3, offsety: 494, delta: FIGHTER_EXT_WIDTH_4, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE}); }; Akuma.prototype = new Fighter(); Akuma.prototype.punch = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.width( FIGHTER_EXT_WIDTH_4 ); if( this.node.fliph() ) { this.node.x( -(FIGHTER_EXT_WIDTH_4 - FIGHTER_STD_WIDTH), true); } this.node.setAnimation(this.animations["punch"], function(node) { var HTMLnode = fighters[ node.id ].node; HTMLnode.width( FIGHTER_STD_WIDTH ); if( HTMLnode.fliph() ) { HTMLnode.x(FIGHTER_EXT_WIDTH_4 - FIGHTER_STD_WIDTH, true); } fighters[ node.id ].idle(); }); } Akuma.prototype.kick = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.width( FIGHTER_EXT_WIDTH_2 ); if( this.node.fliph() ) { this.node.x( -(FIGHTER_EXT_WIDTH_2 - FIGHTER_STD_WIDTH), true); } this.node.setAnimation(this.animations["kick"], function(node) { var HTMLnode = fighters[ node.id ].node; HTMLnode.width( FIGHTER_STD_WIDTH ); if( HTMLnode.fliph() ) { HTMLnode.x(FIGHTER_EXT_WIDTH_2 - FIGHTER_STD_WIDTH, true); } fighters[ node.id ].idle(); }); } Akuma.prototype.victory = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.setAnimation(this.animations["victory"], function(node) { fighters[ node.id ].node.setAnimation(fighters[ node.id ].animations["victory2"]); }); } Akuma.prototype.loose = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.width( FIGHTER_EXT_WIDTH_4 ); if( this.node.fliph() ) { this.node.x( -(FIGHTER_EXT_WIDTH_4 - FIGHTER_STD_WIDTH), true); } this.node.setAnimation(this.animations["loose"], function(node) { fighters[ node.id ].node.setAnimation(fighters[ node.id ].animations["loose2"]); }); } Akuma.prototype.ouch = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.width( FIGHTER_EXT_WIDTH_4 ); if( this.node.fliph() ) { this.node.x(-(FIGHTER_EXT_WIDTH_4 - FIGHTER_STD_WIDTH), true); } this.node.setAnimation(this.animations["ouch"], function(node) { var HTMLnode = fighters[ node.id ].node; HTMLnode.width( FIGHTER_STD_WIDTH ); if( HTMLnode.fliph() ) { HTMLnode.x(FIGHTER_EXT_WIDTH_4 - FIGHTER_STD_WIDTH, true); } fighters[ node.id ].idle(); }); } function Felicia(){ this.animations["start"] = new $.gameQuery.Animation({imageURL: "images/felicia.png", numberOfFrame: 10, offsety: 82, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["victory"] = new $.gameQuery.Animation({imageURL: "images/felicia.png", numberOfFrame: 10, offsety: 328, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["victory2"] = new $.gameQuery.Animation({imageURL: "images/felicia.png", numberOfFrame: 5, offsety: 328, offsetx: 410, delta: FIGHTER_STD_WIDTH, rate: 200, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["idle"] = new $.gameQuery.Animation({imageURL: "images/felicia.png", numberOfFrame: 8, offsety: 0, delta: FIGHTER_STD_WIDTH, rate: 200, type: $.gameQuery.ANIMATION_HORIZONTAL}); this.animations["punch"] = new $.gameQuery.Animation({imageURL: "images/felicia.png", numberOfFrame: 6, offsety: 164, delta: FIGHTER_EXT_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["kick"] = new $.gameQuery.Animation({imageURL: "images/felicia.png", numberOfFrame: 7, offsety: 246, delta: FIGHTER_EXT_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["ouch"] = new $.gameQuery.Animation({imageURL: "images/felicia.png", numberOfFrame: 5, offsety: 492, delta: FIGHTER_EXT_WIDTH_4, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); // this.animations["laught"] = new $.gameQuery.Animation({imageURL: "images/felicia.png", numberOfFrame: 7, offsety: 492, delta: FIGHTER_EXT_WIDTH_3, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK}); this.animations["loose"] = new $.gameQuery.Animation({imageURL: "images/felicia.png", numberOfFrame: 6, offsety: 410, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE }); }; Felicia.prototype = new Fighter(); Felicia.prototype.punch = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.width( FIGHTER_EXT_WIDTH ); if( this.node.fliph() ) { this.node.x( -(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH), true); } this.node.setAnimation(this.animations["punch"], function(node) { var HTMLnode = fighters[ node.id ].node; HTMLnode.width( FIGHTER_STD_WIDTH ); if( HTMLnode.fliph() ) { HTMLnode.x(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH, true); } fighters[ node.id ].idle(); }); } Felicia.prototype.kick = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.width( FIGHTER_EXT_WIDTH ); if( this.node.fliph() ) { this.node.x(-(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH), true); } this.node.setAnimation(this.animations["kick"], function(node) { var HTMLnode = fighters[ node.id ].node; HTMLnode.width( FIGHTER_STD_WIDTH ); if( HTMLnode.fliph() ) { HTMLnode.x(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH, true); } fighters[ node.id ].idle(); }); } Felicia.prototype.victory = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.setAnimation(this.animations["victory"], function(node) { fighters[ node.id ].node.setAnimation(fighters[ node.id ].animations["victory2"]); }); } Felicia.prototype.ouch = function() { if( !this.isIdle() ) return; this.setIdle( false ); this.node.width( FIGHTER_EXT_WIDTH_4 ); if( this.node.fliph() ) { this.node.x( -(FIGHTER_EXT_WIDTH_4 - FIGHTER_STD_WIDTH), true); } this.node.setAnimation(this.animations["ouch"], function(node) { var HTMLnode = fighters[ node.id ].node; HTMLnode.width( FIGHTER_STD_WIDTH ); if( HTMLnode.fliph() ) { HTMLnode.x(FIGHTER_EXT_WIDTH_4 - FIGHTER_STD_WIDTH, true); } fighters[ node.id ].idle(); }); }