| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- /*global jQuery, console */
- var PLAYGROUND_WIDTH = 448,
- PLAYGROUND_HEIGHT = 544,
- REFRESH_RATE = 15,
- HUD_HEIGHT = 70,
- ROWS = 5,
- ALIENS = 11,
- ALIENS_WIDTH = 24,
- ALIENS_HEIGHT = 17,
- START_Y = 40,
- IMAGES_PREFIX = "images/";
- var SHIPS = {
- scout: {width: 30, height: 25},
- bomber: {width: 30, height: 25},
- cruser: {width: 30, height: 25}
- };
- var animations = {
- hero : {
- ship : {
- animation : new $.gameQuery.Animation({
- imageURL : IMAGES_PREFIX + "farm.png"
- }),
- width : 48,
- height : 24,
- posx : 0,
- posy : 17
- },
- /*cockpit : {
- animation : new $.gameQuery.Animation({
- imageURL : IMAGES_PREFIX + "farm.png",
- offsety : 24,
- offsetx : 20
- }),
- width : 20,
- height : 33,
- posx : 28,
- posy : 3
- },*/
- smallWheel : {
- animation : new $.gameQuery.Animation({
- imageURL : IMAGES_PREFIX + "farm.png",
- offsetx : 0,
- offsety : 24
- }),
- posx : 4,
- posy : 30,
- width: 14,
- height: 14
- },
- bigWheel : {
- animation : new $.gameQuery.Animation({
- imageURL : IMAGES_PREFIX + "farm.png",
- offsetx : 0,
- offsety : 38
- }),
- width : 19,
- height : 19,
- posx : 25,
- posy : 27
- }
- },
- alien : {
- animation : new $.gQ.Animation({
- imageURL : IMAGES_PREFIX + "invader.png",
- numberOfFrame : 2,
- delta : ALIENS_WIDTH,
- rate : 400,
- type : $.gQ.ANIMATION_HORIZONTAL
- }),
- width : ALIENS_WIDTH,
- height : ALIENS_HEIGHT
- },
- ufo : {
- animation: new $.gQ.Animation({imageURL: IMAGES_PREFIX + "ufo.png"}),
- width: 48,
- height: 32,
- posy: 10
- },
- life : {
- animation : new $.gameQuery.Animation({
- imageURL : IMAGES_PREFIX + "farm.png",
- offsetx : 14,
- offsety : 24
- }),
- width: 32,
- height: 16
- },
- weapons : {
- carot : {
- animation : new $.gameQuery.Animation({
- imageURL : IMAGES_PREFIX + "farm.png",
- offsetx : 19,
- offsety : 37
- }),
- width: 19,
- height: 19
- },
- corn : {
- animation : new $.gameQuery.Animation({
- imageURL : IMAGES_PREFIX + "farm.png",
- offsetx : 38,
- offsety : 37
- }),
- width: 19,
- height: 19
- },
- gun : {
- animation : new $.gameQuery.Animation({
- imageURL : IMAGES_PREFIX + "farm.png",
- offsetx : 57,
- offsety : 37
- }),
- width: 19,
- height: 19
- }
- },
- backgrounds : {
- farm: {
- background1 : {
- animation : new $.gQ.Animation({
- imageURL : IMAGES_PREFIX + "background.png"
- })
- },
- background2 : {
- animation : new $.gQ.Animation({
- imageURL : IMAGES_PREFIX + "background2.png"
- })
- }
- }
- }
- };
- function updateWeaponLoad( load ) {
- "use strict";
- var HTMLDiv = $("#weapon_load");
- HTMLDiv.removeClass().addClass("weapon_level");
- if( load > 2/3) {
- HTMLDiv.addClass("good");
- } else {
- if( load > 1/3) {
- HTMLDiv.addClass("middle");
- } else {
- HTMLDiv.addClass("bad");
- }
- }
- HTMLDiv.width( (load * 100) + "%" );
- }
- $(function(){
- "use strict";
-
- //Playground Sprites
- $("#playground").playground({height: PLAYGROUND_HEIGHT, width: PLAYGROUND_WIDTH, keyTracker: true});
-
- $.playground({refreshRate: 60})
- .addGroup("background", {posx: 0, posy: HUD_HEIGHT, width: PLAYGROUND_WIDTH, height: PLAYGROUND_HEIGHT - HUD_HEIGHT})
- .addSprite( "background1", {animation: animations.backgrounds.farm.background1.animation, width: PLAYGROUND_WIDTH, height: PLAYGROUND_HEIGHT - HUD_HEIGHT})
- .addSprite( "background2", {animation: animations.backgrounds.farm.background2.animation, width: PLAYGROUND_WIDTH, height: PLAYGROUND_HEIGHT - HUD_HEIGHT})
- .addSprite("ground", {posx: 0, posy : PLAYGROUND_HEIGHT - HUD_HEIGHT - 20, width: PLAYGROUND_WIDTH, height: 20})
- .end()
- .addGroup("actors", {posx: 0, posy: HUD_HEIGHT, width: PLAYGROUND_WIDTH, height: PLAYGROUND_HEIGHT - HUD_HEIGHT})
- .addGroup("hero", {
- width: 48,
- height: 60,
- posx: (PLAYGROUND_WIDTH - 48) / 2,
- posy: PLAYGROUND_HEIGHT - HUD_HEIGHT - 50
- })
- .end()
- .end()
- .addGroup( "shipShots", {posx: 0, posy: HUD_HEIGHT, width: PLAYGROUND_WIDTH, height: PLAYGROUND_HEIGHT - HUD_HEIGHT})
- .end()
- .addGroup( "aliensShots", {posx: 0, posy: HUD_HEIGHT, width: PLAYGROUND_WIDTH, height: PLAYGROUND_HEIGHT - HUD_HEIGHT})
- .end()
- .addGroup( "hud", {width: PLAYGROUND_WIDTH, height: HUD_HEIGHT, posx: 0, posy: 0})
- .addSprite( "current_weapon", $.extend({posx: 10, posy: 40}, animations.weapons.gun))
- .addGroup("weapon_bar", {
- posx : 50,
- posy : 40,
- width : 100,
- height : 10
- })
- .addSprite("weapon_load", {
- width : 100,
- height : 10
- })
- .end()
- .addGroup("scoreboard", {
- posx: 10,
- posy: 2,
- width: 6 * 32,
- height: 32
- })
- .addSprite( "subScoreboard", {
- width: 6 * 32,
- height: 32
- })
- .end()
- .addGroup("lives", {
- posx: PLAYGROUND_WIDTH - 100,
- posy: 32,
- width: 100,
- height: 32
- })
- .addSprite("life3", animations.life)
- .addSprite("life2", $.extend({posx: 32}, animations.life))
- .addSprite("life1", $.extend({posx: 64}, animations.life))
- .end()
- .addGroup("levelGrp", {
- posx: PLAYGROUND_WIDTH - 6 * 32 + 16,
- posy: 2,
- width: 32 + 5 * 16,
- height: 16
- })
- .addSprite("levelLbl", {
- width: 32 + 5 * 16
- })
- .addSprite("level", {
- width : 64,
- posx: 32 + 7 * 16,
- posy: 16,
- height: 16
- })
- .end()
- .addSprite( "carot", $.extend({posx: 210, posy: 40}, animations.weapons.carot))
- .addSprite( "corn", $.extend({posx: 230, posy: 40}, animations.weapons.corn))
- .end()
- ;
- $("#ground").css("background-color", "brown");
- $("#levelLbl").append("Level").lettering();
- $("#level").append("0").lettering();
- $("#scoreboard").addClass("scoreboard");
- $("#subScoreboard").addClass("subScoreboard");
- var hud = $("#hud");
- /*
- hud.append("<div id='scoreMessage'></div>");
- hud.append("<div id='message'></div>'");
- hud.append("<div id='level'></div>'");
- hud.append("<div id='levelNumber'></div>'");*/
- // Controls
- $.playground().registerCallback(Game.control, REFRESH_RATE);
- $.playground().registerCallback(Game.alienControl, REFRESH_RATE);
-
- // Collisions management
- $.playground().registerCallback(Game.heroShotCollision, REFRESH_RATE);
- $.playground().registerCallback(Game.alienShotCollision, REFRESH_RATE);
-
- // Refresh playground
- $.playground().registerCallback(function(){
- updateWeaponLoad(Game.ship.weapon.load / Game.ship.weapon.max_load);
- if( Game.running ) {
- Game.ship.move();
- }
- }, REFRESH_RATE);
- });
- $(document).ready(function () {
- Game.init();
- $.loadCallback(function(percent){
- $("#loadingBar").width(400*percent);
- });
- $.playground().startGame(
- function() {
- $("#welcomeScreen").remove();
- }
- );
- });
|