From 559b0b8d67d6b07eb2e757306355a175dbfe6a2d Mon Sep 17 00:00:00 2001 From: Michael Matuzak Date: Sun, 12 May 2013 13:01:35 -0700 Subject: [PATCH] pathfinding demo for issue #2 --- lib/game.js | 39 +++++++++++++++++++++++++++++++++++---- package.json | 3 ++- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/lib/game.js b/lib/game.js index bf789d2..3d9bf86 100644 --- a/lib/game.js +++ b/lib/game.js @@ -5,6 +5,7 @@ var domready = require('domready') , $qs = document.querySelector.bind(document) , iio = require('./vendor/iio-engine') , user = require('./user-input') + , PF = require('pathfinding') function resizeCanvas(c) { c.width = window.innerWidth @@ -24,8 +25,27 @@ domready(function(){ var hero , sprites + , grid + , gridPf + + // we should make 1 grid that io and PF can both use + gridPf = new PF.Grid(10, 10) + grid = io.addObj(new iio.ioGrid(0, 0, 10, 10, 64, 64) + .setStrokeStyle('black')) + + // for testing pathfinding + var finder = new PF.AStarFinder({ + allowDiagonal: true, + dontCrossCorners: true + }) + + gridPf.setWalkableAt(1, 1, false) // set the blocker in PF grid. + blocker = io.addObj(new iio.ioRect(new iio.ioVec(96,96), 64) + .setFillStyle('black')) // test blocker sprites = new iio.ioSpriteMap('/images/sprites/hero.png', 64, 64, function(){ + var blockerCell; + hero = new iio.ioRect(io.canvas.center, 64) .createWithAnim(sprites.getSprite(0, 0),'still') .enableKinematics() @@ -35,6 +55,8 @@ domready(function(){ hero.addAnim(sprites.getSprite(4, 5), 'walk-up') hero.addAnim(sprites.getSprite(0, 1), 'walk-down') + blockerCell = grid.getCellAt(blocker.right(), blocker.bottom()) + console.log(blockerCell) io.addObj(hero) }) @@ -77,6 +99,19 @@ domready(function(){ } }) + function onTap(x, y){ + console.log('tap', x, y) + var v = new iio.ioVec(x, y) + , toCell = grid.getCellAt(v) + , heroV = hero.pos + , fromCell = grid.getCellAt(heroV) + + // grid is modified after you findPath so we clone it + var gridBackup = gridPf.clone() + var path = finder.findPath(fromCell.x, fromCell.y, toCell.x, toCell.y, gridBackup); + console.log('path: ', path) + } + // var interactive = true // var stage = new PIXI.Stage(0x000000, interactive) // var renderer = PIXI.autoDetectRenderer(620, 400) @@ -97,10 +132,6 @@ domready(function(){ // }) }) -function onTap(x, y){ - console.log('tap', x, y) -} - function onHold(){ console.log('hold') } diff --git a/package.json b/package.json index f87f22c..ee29345 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,8 @@ "bunyan": "~0.21.1", "supertest": "~0.6.0", "rework": "~0.14.0", - "mousetrap": "0.0.1" + "mousetrap": "0.0.1", + "pathfinding": "~0.4.1" }, "devDependencies": { "mocha": "~1.4.0"