var SOUND_ACTIVATED = false;
var WIDTH_TILE_COUNT = 28;
var HEIGHT_TILE_COUNT = 34;
var TILE_SIZE = 16;
var HALF_TILE_SIZE = 8;
var ACTOR_SIZE = 32;
var PLAYGROUND_WIDTH = WIDTH_TILE_COUNT * TILE_SIZE;
var PLAYGROUND_HEIGHT = HEIGHT_TILE_COUNT * TILE_SIZE;
var ACTOR_SPEED = 4;
var LOOP_COUNT_REFRESH = 66;
var loopCount = 0;
var REFRESH_RATE = 15;
//1: up, 2: left, 3:down, 4: right
var UP = 1;
var LEFT = 2;
var DOWN = 3;
var RIGHT = 4;
var BONUS_TILE = 77;
var eatenBonus = new Array();
var INFINITY = 9999999999;
$(function(){
//Playground Sprites
$("#playground").playground({height: PLAYGROUND_HEIGHT, width: PLAYGROUND_WIDTH, keyTracker: true});
Sound.init(function(){
$.playground().startGame( function() {
Game.init();
});
});
$.playground({refreshRate: 60}).addGroup("background", {posx: 0, posy: 0, width: PLAYGROUND_WIDTH, height: PLAYGROUND_HEIGHT})
.end()
.addGroup("dots", {width: PLAYGROUND_WIDTH, height: PLAYGROUND_HEIGHT})
.end()
.addGroup("actors", {width: PLAYGROUND_WIDTH, height: PLAYGROUND_HEIGHT})
.end()
.addGroup( "hud", {width: PLAYGROUND_WIDTH, height: PLAYGROUND_HEIGHT})
.end();
var hud = $("#hud");
hud.append("
");
hud.append("");
hud.append("");
hud.append("'");
hud.append("'");
hud.append("'");
GUI.updateLevel( "Level" );
var background = $("#background");
var dotsGroup = $("#dots");
var maze = Game.maze.structure;
for( var i = 0; i < maze.length; i++ ) {
var clazz = "";
switch( maze[i]) {
case -2:
clazz = "bigDot";
Game.dots[i] = "bigDot";
break;
case -1:
clazz = "dot";
Game.dots[i] = "dot";
break;
case 1:
clazz = "corner1";
break;
case 2:
clazz = "corner2";
break;
case 3:
clazz = "corner3";
break;
case 4:
clazz = "corner4";
break;
case 5:
clazz = "squareCornerTopLeft";
break;
case 6:
clazz = "squareCornerTopRight";
break;
case 7:
clazz = "squareCornerBottomLeft";
break;
case 8:
clazz = "squareCornerBottomRight";
break;
case 9:
clazz = "horizontalMidDown";
break;
case 10:
clazz = "verticalMidLeft";
break;
case 11:
clazz = "verticalMidRight";
break;
case 12:
clazz = "gate";
break;
}
background.append('');
if(i % 28 == 27 ) {
background.append('');
}
}
// this is the function that control most of the game logic
$.playground().registerCallback(function(){
if(jQuery.gameQuery.keyTracker[37]){ //this is left! (a)
Game.hero.left();
}
if(jQuery.gameQuery.keyTracker[38]){ //this is up! (w)
Game.hero.up();
}
if(jQuery.gameQuery.keyTracker[39]){ //this is right! (d)
Game.hero.right();
}
if(jQuery.gameQuery.keyTracker[40]){ //this is down! (s)
Game.hero.down();
}
$.each(Game.actors, function(index, actor ) {
actor.move();
});
for( var i = Math.max(0, eatenBonus.length - 6), j = 0; i < eatenBonus.length; i++, j++) {
$("#" +( BONUS_TILE + j)).removeClass().addClass("tile").addClass( eatenBonus[i] );
}
}, REFRESH_RATE);
});
var Sound = {
soundList : [],
init : function(callback) {
if( SOUND_ACTIVATED ) {
soundManager.setup({
url: 'swf/'
});
Sound.soundList = {
opening : new $.gameQuery.SoundWrapper('sound/opening.mp3', false),
waka : new $.gameQuery.SoundWrapper('sound/wakawaka.mp3', false),
fruit : new $.gameQuery.SoundWrapper('sound/eatingfruit.mp3', false),
ghost : new $.gameQuery.SoundWrapper('sound/eatingghost.mp3', false),
dies : new $.gameQuery.SoundWrapper('sound/dies.mp3', false)
};
soundManager.onready( callback );
} else
callback();
},
play: function( sound ) {
if( SOUND_ACTIVATED )
Sound.soundList[sound].play();
},
stop: function( sound ) {
if( SOUND_ACTIVATED )
Sound.soundList[sound].stop();
},
}
var GUI = {
updateMessage : function( message ) {
GUI.drawText( $("#message"), message, true );
},
updateScoreMessage : function( message ) {
GUI.drawText( $("#scoreMessage"), message, false, "red" );
},
updateLevel : function( message ) {
GUI.drawText( $("#level"), message, false );
},
updateLevelNumber: function( message ) {
GUI.drawText( $("#levelNumber"), message + "", false, "", true );
},
drawText : function( divHTML, message, center, customClazz, forceSmall) {
var html = "";
var clazz = "clock";
var letterSize = 32;
if( typeof customClazz !== "undefined" ) {
clazz = " clock " + customClazz;
}
var count = 0;
var width = 0;
var height = 0;
for( var i = 0; i < message.length; i++ ) {
var letter = message[i];
var iLetter = (message.charCodeAt(i) - 97);
if( letter == " " ) {
html += "";
width += 16;
count++;
} else if( letter.charCodeAt(0) > 47 && letter.charCodeAt(0) < 58 ) {
var letterSize = 32;
if( forceSmall ) {
letterSize = 16;
}
html += "";
count++;
} else if( ( letter.charCodeAt(0) >= 'a'.charCodeAt(0) && letter.charCodeAt(0) <= 'z'.charCodeAt(0)) ) {
if( height < 16 )
height = 16;
width += 16;
var lineSize = 20;
var x = (iLetter % lineSize) * 16;
var y = Math.floor(iLetter / lineSize) * 16 + 144;
html += "";
count++;
} else if( letter.charCodeAt(0) >= 'A'.charCodeAt(0) && letter.charCodeAt(0) <= 'Z'.charCodeAt(0)) {
iLetter = letter.charCodeAt(0) - 'A'.charCodeAt(0);
if( height < 32 )
height = 32;
width += 32;
var lineSize = 10;
var x = (iLetter % lineSize) * 32;
var y = Math.floor(iLetter / lineSize) * 32 + 32;
html += "";
count++;
}
}
divHTML.empty();
divHTML.css( "width", width + "px");
divHTML.css( "height", height + "px");
if( center )
divHTML.css( "margin-left", "-" + (message.length * letterSize / 2) + "px");
divHTML.append( html );
}
}