Skip to content

Commit 2b08daf

Browse files
committed
Tilemap: modularize empty map generators & add createBlankDynamicLayer
1 parent a62d8a0 commit 2b08daf

4 files changed

Lines changed: 79 additions & 18 deletions

File tree

v3/src/gameobjects/tilemap/Tilemap.js

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
var Class = require('../../utils/Class');
2-
var GenerateEmptyMapData = require('./GenerateEmptyMapData');
2+
var GenerateEmptyMapData = require('./emptymap/GenerateEmptyMapData');
3+
var GenerateEmptyMapLayer = require('./emptymap/GenerateEmptyMapLayer');
34
var StaticTilemapLayer = require('./staticlayer/StaticTilemapLayer.js');
45
var DynamicTilemapLayer = require('./dynamiclayer/DynamicTilemapLayer.js');
56
var Tileset = require('./Tileset');
67
var Formats = require('./Formats');
78
var TilemapComponents = require('./components');
9+
var Tile = require('./Tile');
810

911
var Tilemap = new Class({
1012

@@ -91,6 +93,47 @@ var Tilemap = new Class({
9193
return tileset;
9294
},
9395

96+
// Creates & selects
97+
createBlankDynamicLayer: function (name, tileset, x, y, width, height, tileWidth, tileHeight) {
98+
if (tileWidth === undefined) { tileWidth = this.tileWidth; }
99+
if (tileHeight === undefined) { tileHeight = this.tileHeight; }
100+
if (width === undefined) { width = this.width; }
101+
if (height === undefined) { height = this.height; }
102+
if (x === undefined) { x = 0; }
103+
if (y === undefined) { y = 0; }
104+
105+
var index = this.getLayerIndex(name);
106+
107+
if (index !== null)
108+
{
109+
console.warn('Cannot create blank layer: layer with matching name already exists ' + name);
110+
return;
111+
}
112+
113+
var layer = GenerateEmptyMapLayer(name, tileWidth, tileHeight, width, height);
114+
115+
var row;
116+
for (var tileY = 0; tileY < height; tileY++)
117+
{
118+
row = [];
119+
for (var tileX = 0; tileX < width; tileX++)
120+
{
121+
row.push(new Tile(layer, -1, tileX, tileY, tileWidth, tileHeight));
122+
}
123+
layer.data.push(row);
124+
}
125+
126+
this.layers.push(layer);
127+
this.currentLayerIndex = this.layers.length - 1;
128+
129+
// TODO: decide about v2 trimming to game width/height
130+
131+
var dynamicLayer = new DynamicTilemapLayer(this.scene, this, this.currentLayerIndex, tileset, x, y);
132+
this.scene.sys.displayList.add(dynamicLayer);
133+
return dynamicLayer;
134+
},
135+
136+
// Creates & selects
94137
createStaticLayer: function (layerID, tileset, x, y)
95138
{
96139
var index = this.getLayerIndex(layerID);
@@ -104,11 +147,14 @@ var Tilemap = new Class({
104147
// TODO: new feature, allow multiple CSV layers
105148
// TODO: display dimension
106149

150+
this.currentLayerIndex = index;
151+
107152
var layer = new StaticTilemapLayer(this.scene, this, index, tileset, x, y);
108153
this.scene.sys.displayList.add(layer);
109154
return layer;
110155
},
111156

157+
// Creates & selects
112158
createDynamicLayer: function (layerID, tileset, x, y)
113159
{
114160
var index = this.getLayerIndex(layerID);
@@ -122,6 +168,8 @@ var Tilemap = new Class({
122168
// TODO: new feature, allow multiple CSV layers
123169
// TODO: display dimension
124170

171+
this.currentLayerIndex = index;
172+
125173
var layer = new DynamicTilemapLayer(this.scene, this, index, tileset, x, y);
126174
this.scene.sys.displayList.add(layer);
127175
return layer;

v3/src/gameobjects/tilemap/GenerateEmptyMapData.js renamed to v3/src/gameobjects/tilemap/emptymap/GenerateEmptyMapData.js

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
var GenerateEmptyMapLayer = require('./GenerateEmptyMapLayer');
2+
13
var GenerateEmptyMapData = function (format, name, tileWidth, tileHeight, width, height)
24
{
35
return {
@@ -13,22 +15,7 @@ var GenerateEmptyMapData = function (format, name, tileWidth, tileHeight, width,
1315
widthInPixels: 0,
1416
heightInPixels: 0,
1517
layers: [
16-
{
17-
name: 'layer',
18-
x: 0,
19-
y: 0,
20-
width: 0,
21-
height: 0,
22-
widthInPixels: 0,
23-
heightInPixels: 0,
24-
alpha: 1,
25-
visible: true,
26-
properties: {},
27-
indexes: [],
28-
callbacks: [],
29-
bodies: [],
30-
data: []
31-
}
18+
GenerateEmptyMapLayer('layer', tileWidth, tileHeight, width, height)
3219
],
3320
images: [],
3421
objects: {},
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
var GenerateEmptyMapLayer = function (name, tileWidth, tileHeight, width, height)
2+
{
3+
if (width === undefined) { width = 0; }
4+
if (height === undefined) { height = 0; }
5+
if (tileWidth === undefined) { tileWidth = 0; }
6+
if (tileHeight === undefined) { tileHeight = 0; }
7+
8+
return {
9+
name: name !== undefined ? name : 'layer',
10+
x: 0,
11+
y: 0,
12+
width: width,
13+
height: height,
14+
widthInPixels: width * tileWidth,
15+
heightInPixels: height * tileHeight,
16+
alpha: 1,
17+
visible: true,
18+
properties: {},
19+
indexes: [],
20+
callbacks: [],
21+
bodies: [],
22+
data: []
23+
};
24+
};
25+
26+
module.exports = GenerateEmptyMapLayer;

v3/src/gameobjects/tilemap/parsers/Parse2DArray.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var GenerateEmptyMapData = require('../GenerateEmptyMapData');
1+
var GenerateEmptyMapData = require('../emptymap/GenerateEmptyMapData');
22
var Formats = require('../Formats');
33
var Tile = require('../Tile');
44

0 commit comments

Comments
 (0)