156 lines
5.3 KiB
TypeScript
156 lines
5.3 KiB
TypeScript
import "jasmine";
|
|
import { Room } from "../../../src/Connexion/Room";
|
|
import { flattenGroupLayersMap } from "../../../src/Phaser/Map/LayersFlattener";
|
|
import type { ITiledMapLayer } from "../../../src/Phaser/Map/ITiledMap";
|
|
|
|
describe("Layers flattener", () => {
|
|
it("should iterate maps with no group", () => {
|
|
let flatLayers: ITiledMapLayer[] = [];
|
|
flatLayers = flattenGroupLayersMap({
|
|
compressionlevel: -1,
|
|
height: 2,
|
|
infinite: false,
|
|
layers: [
|
|
{
|
|
data: [0, 0, 0, 0],
|
|
height: 2,
|
|
id: 1,
|
|
name: "Tile Layer 1",
|
|
opacity: 1,
|
|
type: "tilelayer",
|
|
visible: true,
|
|
width: 2,
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
{
|
|
data: [0, 0, 0, 0],
|
|
height: 2,
|
|
id: 1,
|
|
name: "Tile Layer 2",
|
|
opacity: 1,
|
|
type: "tilelayer",
|
|
visible: true,
|
|
width: 2,
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
],
|
|
nextlayerid: 2,
|
|
nextobjectid: 1,
|
|
orientation: "orthogonal",
|
|
renderorder: "right-down",
|
|
tiledversion: "2021.03.23",
|
|
tileheight: 32,
|
|
tilesets: [],
|
|
tilewidth: 32,
|
|
type: "map",
|
|
version: 1.5,
|
|
width: 2,
|
|
});
|
|
|
|
const layers = [];
|
|
for (const layer of flatLayers) {
|
|
layers.push(layer.name);
|
|
}
|
|
expect(layers).toEqual(["Tile Layer 1", "Tile Layer 2"]);
|
|
});
|
|
|
|
it("should iterate maps with recursive groups", () => {
|
|
let flatLayers: ITiledMapLayer[] = [];
|
|
flatLayers = flattenGroupLayersMap({
|
|
compressionlevel: -1,
|
|
height: 2,
|
|
infinite: false,
|
|
layers: [
|
|
{
|
|
id: 6,
|
|
layers: [
|
|
{
|
|
id: 5,
|
|
layers: [
|
|
{
|
|
data: [0, 0, 0, 0],
|
|
height: 2,
|
|
id: 10,
|
|
name: "Tile3",
|
|
opacity: 1,
|
|
type: "tilelayer",
|
|
visible: true,
|
|
width: 2,
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
{
|
|
data: [0, 0, 0, 0],
|
|
height: 2,
|
|
id: 9,
|
|
name: "Tile2",
|
|
opacity: 1,
|
|
type: "tilelayer",
|
|
visible: true,
|
|
width: 2,
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
],
|
|
name: "Group 3",
|
|
opacity: 1,
|
|
type: "group",
|
|
visible: true,
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
{
|
|
id: 7,
|
|
layers: [
|
|
{
|
|
data: [0, 0, 0, 0],
|
|
height: 2,
|
|
id: 8,
|
|
name: "Tile1",
|
|
opacity: 1,
|
|
type: "tilelayer",
|
|
visible: true,
|
|
width: 2,
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
],
|
|
name: "Group 2",
|
|
opacity: 1,
|
|
type: "group",
|
|
visible: true,
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
],
|
|
name: "Group 1",
|
|
opacity: 1,
|
|
type: "group",
|
|
visible: true,
|
|
x: 0,
|
|
y: 0,
|
|
},
|
|
],
|
|
nextlayerid: 11,
|
|
nextobjectid: 1,
|
|
orientation: "orthogonal",
|
|
renderorder: "right-down",
|
|
tiledversion: "2021.03.23",
|
|
tileheight: 32,
|
|
tilesets: [],
|
|
tilewidth: 32,
|
|
type: "map",
|
|
version: 1.5,
|
|
width: 2,
|
|
});
|
|
|
|
const layers = [];
|
|
for (const layer of flatLayers) {
|
|
layers.push(layer.name);
|
|
}
|
|
expect(layers).toEqual(["Group 1/Group 3/Tile3", "Group 1/Group 3/Tile2", "Group 1/Group 2/Tile1"]);
|
|
});
|
|
});
|