+++ /dev/null
-
-Y(Game.prototype).extend({
-
- initMap : function initMap(){
- // var self = this;
-
- this.byId = {};
- this.units = new Y.YArray();
- this.bullets = new Y.YArray();
- this.blockers = new Y.YArray();
-
- this.pathmap = new PathMap(0,0, COLUMNS*REF_SIZE, ROWS*REF_SIZE, CAPACITY);
-
- var root =
- this.root =
- this.grid =
- new Grid(COLUMNS,ROWS, CELL_SIZE)
- .appendTo(this.viewport);
- this.level =
- new Level(this, root.layerWidth, root.layerHeight )
- .appendTo(this.root);
-
- // Agent.addEventListener('create', function(evt){
- // self.addAgent(evt.instance);
- // });
- // Agent.addEventListener('destroy', function(evt){
- // self.killAgent(evt.instance);
- // });
- },
-
-
- // *** Path Map Management *** //
-
- addBlocker : function addBlocker(agent){
- var bb = agent.boundingBox;
- if (agent.blocking && bb)
- agent.region = this.pathmap.set(bb.x1,bb.y1, bb.x2,bb.y2, agent);
- return agent;
- },
-
- removeBlocker : function removeBlocker(agent){
- if (agent.region)
- this.pathmap.remove(agent.region);
- return agent;
- },
-
- updateBlocker : function updateBlocker(agent){
- this.removeBlocker(agent);
- this.addBlocker(agent);
- },
-
-
- // *** Agent Management *** //
-
- addUnit : function addUnit(unit, col,row){
- unit.game = this;
-
- if (col !== undefined) {
- // Center unit in square
- var sqX = (col || 0) * REF_SIZE
- , sqY = (row || 0) * REF_SIZE
- , x = sqX + (REF_SIZE-unit.width) /2
- , y = sqY + (REF_SIZE-unit.height)/2 ;
-
- unit.setLocation(x,y);
- unit.render( this.level );
- }
-
- this.addBlocker(unit);
-
- if ( !this.byId[unit.id] ) {
- this.byId[unit.id] = unit;
- this.units.push(unit);
- }
-
- return unit;
- },
-
- addAgent : function addAgent(agent){
- agent.game = this;
- if (agent.id === undefined) return agent;
-
- this.addBlocker(agent);
-
- if ( !this.byId[agent.id] ) {
- this.byId[agent.id] = agent;
- if (agent instanceof Ability)
- this.abilities.push(agent);
- else
- this.units.push(agent);
- }
-
- return agent;
- },
-
- killAgent : function killAgent(agent){
- delete this.byId[agent.id];
- if (agent instanceof Ability)
- this.abilities.remove(agent);
- else
- this.units.remove(agent);
-
- this.removeBlocker(agent);
- return agent;
- },
-
- moveAgentTo : function moveAgentTo(agent, x,y){
- this.removeBlocker(agent);
- agent.setLocation(x,y);
- this.addBlocker(agent);
- return agent;
- },
-
- getUnitAt : function getUnitAt(x,y){
- return this.grid.get(x,y);
- },
-
- getUnitsAt : function getUnitsAt(x1,y1, x2,y2){
- return this.grid.get(x1,y1, x2,y2);
- }
-
-});
-
-Y(Game.prototype).extend({
-
- resize : function resize(){
- var ratio = COLUMNS / ROWS
- , el = this.el
- , p = el.parent()
- , pw = p.width(), ph = p.height()
- , pRatio = pw / ph
- ;
-
- if ( ratio > pRatio )
- CELL_SIZE = Math.floor((pw-GRID_OFFSET*2) / COLUMNS);
- else
- CELL_SIZE = Math.floor((ph-GRID_OFFSET*2) / ROWS);
-
- SCALE = CELL_SIZE/REF_SIZE;
-
- var w = COLUMNS*CELL_SIZE
- , h = ROWS*CELL_SIZE
- , canvas = this.canvas[0];
-
- this.el.width(w).height(h);
- this.canvas.width(w).height(h);
- canvas.width = w;
- canvas.height = h;
-
- this.el.offset({
- top : (ph - h) / 2,
- left : (pw - w) / 2
- });
-
- this.ctx.scale(SCALE,SCALE);
- }
-
-});
+++ /dev/null
-// Set up UI listeners
-function setupUI(){
- spark = LBT.loop.spark = new FpsSparkline(LBT.loop, '.fps-sparkline', 0,0);
-
- // Draw grid, initial units
- LBT.root.draw();
-
- setInterval(updateInfo, 1000);
- updateInfo();
-
- // Start button (click or return key)
- $(document).bind('keydown', 'return', toggleGame);
- $(document).bind('keydown', 'ctrl+o', toggleOverlay);
-
- // Fix grid-size on resize
- // $(window).bind('resize', resizeGame);
-}
-
-// Update performance info periodically
-function updateInfo(){
- var loop = LBT.loop
- , fps = loop.fps()
- , n_units = LBT.units.size()
- , n_projs = LBT.bullets.size()
- ;
-
- $('#info [name=fps]').val( fps.toFixed(2) + " / " + loop.framerate );
- $('#info [name=frame]').val( loop.frametime().toFixed(3)+" ms" );
- $('#info #state').text( loop.running ? 'Running!' : ('Paused (tick '+TICKS+')') );
-
- $('#info [name=objects]').val( n_units+n_projs );
- $('#info [name=units]').val( n_units );
- $('#info [name=bullets]').val( n_projs );
-
- spark.drawTimes();
-
- return false;
-}
-
-function toggleGame(evt){
- if (LBT.loop.running)
- LBT.stop();
- else
- LBT.start();
-
- updateInfo();
-}
-
-function toggleOverlay(evt){
- LBT.showOverlay = !(LBT.showOverlay);
-}
-
-function resizeGame(evt){
- LBT.resize(evt);
-
- if (!LBT.loop.running) {
- LBT.start();
- LBT.stop();
- }
-}
-