support for group layer of Tiled (excludes 'start' layer)
This commit is contained in:
parent
f0d277af32
commit
9b6be3466b
3 changed files with 46 additions and 22 deletions
|
@ -1,4 +1,4 @@
|
|||
import {ITiledMap} from "../Map/ITiledMap";
|
||||
import {ITiledMap, ITiledMapLayer} from "../Map/ITiledMap";
|
||||
|
||||
export type PropertyChangeCallback = (newValue: string | number | boolean | undefined, oldValue: string | number | boolean | undefined, allProps: Map<string, string | boolean | number>) => void;
|
||||
|
||||
|
@ -52,10 +52,15 @@ export class GameMap {
|
|||
return this.lastProperties;
|
||||
}
|
||||
|
||||
private getProperties(key: number): Map<string, string|boolean|number> {
|
||||
const properties = new Map<string, string|boolean|number>();
|
||||
// helper for recursive group layer support
|
||||
private getPropertiesHelper(key: number, layers: ITiledMapLayer[], properties: Map<string, string|boolean|number>): Map<string, string|boolean|number> {
|
||||
|
||||
for (const layer of layers) {
|
||||
if (layer.type === 'group') {
|
||||
this.getPropertiesHelper(key, layer.layers, properties);
|
||||
continue;
|
||||
}
|
||||
|
||||
for (const layer of this.map.layers) {
|
||||
if (layer.type !== 'tilelayer') {
|
||||
continue;
|
||||
}
|
||||
|
@ -77,6 +82,11 @@ export class GameMap {
|
|||
return properties;
|
||||
}
|
||||
|
||||
private getProperties(key: number): Map<string, string|boolean|number> {
|
||||
const properties = new Map<string, string|boolean|number>();
|
||||
return this.getPropertiesHelper(key, this.map.layers, properties);
|
||||
}
|
||||
|
||||
private trigger(propName: string, oldValue: string | number | boolean | undefined, newValue: string | number | boolean | undefined, allProps: Map<string, string | boolean | number>) {
|
||||
const callbacksArray = this.callbacks.get(propName);
|
||||
if (callbacksArray !== undefined) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue