Merge pull request #149 from thecodingmachine/multiple_start_positions_in_layer
Allowing several start positions in a given start layer
This commit is contained in:
commit
82e2c0d985
@ -146,7 +146,9 @@ export class GameScene extends Phaser.Scene {
|
||||
this.loadNextGame(layer, this.map.width, this.map.tilewidth, this.map.tileheight);
|
||||
}
|
||||
if (layer.type === 'tilelayer' && layer.name === "start") {
|
||||
this.startUser(layer);
|
||||
let startPosition = this.startUser(layer);
|
||||
this.startX = startPosition.x;
|
||||
this.startY = startPosition.y;
|
||||
}
|
||||
if (layer.type === 'objectgroup' && layer.name === 'floorLayer') {
|
||||
depth = 10000;
|
||||
@ -262,14 +264,18 @@ export class GameScene extends Phaser.Scene {
|
||||
/**
|
||||
* @param layer
|
||||
*/
|
||||
private startUser(layer: ITiledMapLayer): void {
|
||||
private startUser(layer: ITiledMapLayer): PositionInterface {
|
||||
if (this.initPosition !== undefined) {
|
||||
this.startX = this.initPosition.x;
|
||||
this.startY = this.initPosition.y;
|
||||
return;
|
||||
return {
|
||||
x: this.initPosition.x,
|
||||
y: this.initPosition.y
|
||||
};
|
||||
}
|
||||
|
||||
let tiles : any = layer.data;
|
||||
let possibleStartPositions : PositionInterface[] = [];
|
||||
tiles.forEach((objectKey : number, key: number) => {
|
||||
if(objectKey === 0){
|
||||
return;
|
||||
@ -277,9 +283,18 @@ export class GameScene extends Phaser.Scene {
|
||||
let y = Math.floor(key / layer.width);
|
||||
let x = key % layer.width;
|
||||
|
||||
this.startX = (x * 32);
|
||||
this.startY = (y * 32);
|
||||
possibleStartPositions.push({x: x*32, y: y*32});
|
||||
});
|
||||
// Get a value at random amongst allowed values
|
||||
if (possibleStartPositions.length === 0) {
|
||||
console.warn('The start layer "'+layer.name+'" for this map is empty.');
|
||||
return {
|
||||
x: 0,
|
||||
y: 0
|
||||
};
|
||||
}
|
||||
// Choose one of the available start positions at random amongst the list of available start positions.
|
||||
return possibleStartPositions[Math.floor(Math.random() * possibleStartPositions.length)];
|
||||
}
|
||||
|
||||
//todo: in a dedicated class/function?
|
||||
|
Loading…
Reference in New Issue
Block a user