wip/grid-drag

 
var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, update: update, render: render });

function preload() {

    game.load.image('block', 'assets/sprites/block.png');

}

var grid = [];
var currentTile = new Phaser.Point();

function create() {

	//	The block.png is 95x95, so for this we'll create a little grid or it won't fit:

	for (var y = 0; y < 5; y++)
	{
		grid[y] = [];

		for (var x = 0; x < 5; x++)
		{
			// grid[y][x] = game.add.sprite(x * 95, y * 95, 'block');
			//	coz the grid is empty like
			grid[y][x] = null;
		}
	}

	var block1 = game.add.sprite(600, 100, 'block');
	block1.name = 'block1';
	block1.inputEnabled = true;
	block1.input.enableDrag(true);
	block1.events.onDragStop.add(dropBlock, this);

	var block2 = game.add.sprite(600, 300, 'block');
	block2.name = 'block2';
	block2.inputEnabled = true;
	block2.input.enableDrag(true);
	block2.events.onDragStop.add(dropBlock, this);

}

function dropBlock(sprite, pointer) {

	//	Convert the pointer into a grid location
    var x = this.game.math.snapToFloor(pointer.x, 95) / 95;
    var y = this.game.math.snapToFloor(pointer.y, 95) / 95;

	//	Bounds check it
	if (x >= 0 && x <= 4 && y >= 0 && y <= 4)
	{
		//	something in there already?
		if (grid[y][x] !== null)
		{
			//	This is very hacky - what you SHOULD do is have a Pipe object which has properties startX and startY or something, and snap back to those.
			if (sprite.name === 'block1')
			{
				game.add.tween(sprite).to( { x: 600, y: 100 }, 1000, Phaser.Easing.Linear.None, true);
			}
			else
			{
				game.add.tween(sprite).to( { x: 600, y: 300 }, 1000, Phaser.Easing.Linear.None, true);
			}
		}
		else
		{
			grid[y][x] = sprite;
			sprite.inputEnabled = false;
		}
	}

}

function update() {

	//	95 = width and height of the block.png
    currentTile.x = this.game.math.snapToFloor(game.input.x, 95) / 95;
    currentTile.y = this.game.math.snapToFloor(game.input.y, 95) / 95;

}

function render() {

	game.debug.text('Tile X: ' + currentTile.x + ' Y: ' + currentTile.y, 32, 32);
	
}