tmxDirectory

This commit is contained in:
yhh
2020-08-17 19:40:44 +08:00
parent f7ee2c8d1c
commit 66ef4c6597
8 changed files with 131 additions and 139 deletions
+5 -5
View File
@@ -1775,9 +1775,9 @@ declare module es {
class TiledMapLoader { class TiledMapLoader {
static loadTmxMap(map: TmxMap, filePath: string): Promise<TmxMap>; static loadTmxMap(map: TmxMap, filePath: string): Promise<TmxMap>;
static loadTmxMapData(map: TmxMap, xMap: any): Promise<TmxMap>; static loadTmxMapData(map: TmxMap, xMap: any): Promise<TmxMap>;
static parseLayers(container: any, xEle: any, map: TmxMap, width: number, height: number): Promise<void>; static parseLayers(container: any, xEle: any, map: TmxMap, width: number, height: number, tmxDirectory: string): Promise<void>;
static loadTmxGroup(group: TmxGroup, map: TmxMap, xGroup: any, width: number, height: number): TmxGroup; static loadTmxGroup(group: TmxGroup, map: TmxMap, xGroup: any, width: number, height: number, tmxDirectory: string): Promise<TmxGroup>;
static loadTmxImageLayer(layer: TmxImageLayer, map: TmxMap, xImageLayer: any): Promise<TmxImageLayer>; static loadTmxImageLayer(layer: TmxImageLayer, map: TmxMap, xImageLayer: any, tmxDirectory: string): Promise<TmxImageLayer>;
static loadTmxLayer(layer: TmxLayer, map: TmxMap, xLayer: any, width: number, height: number): TmxLayer; static loadTmxLayer(layer: TmxLayer, map: TmxMap, xLayer: any, width: number, height: number): TmxLayer;
private static updateMaxTileSizes; private static updateMaxTileSizes;
static parseOrientationType(type: string): OrientationType; static parseOrientationType(type: string): OrientationType;
@@ -1787,7 +1787,7 @@ declare module es {
static parsePropertyDict(prop: any): Map<string, string>; static parsePropertyDict(prop: any): Map<string, string>;
static parseTmxTileset(map: TmxMap, xTileset: any): Promise<TmxTileset>; static parseTmxTileset(map: TmxMap, xTileset: any): Promise<TmxTileset>;
static loadTmxTileset(tileset: TmxTileset, map: TmxMap, xTileset: any, firstGid: number): Promise<TmxTileset>; static loadTmxTileset(tileset: TmxTileset, map: TmxMap, xTileset: any, firstGid: number): Promise<TmxTileset>;
static loadTmxTilesetTile(tile: TmxTilesetTile, tileset: TmxTileset, xTile: any, terrains: TmxTerrain[]): Promise<TmxTilesetTile>; static loadTmxTilesetTile(tile: TmxTilesetTile, tileset: TmxTileset, xTile: any, terrains: TmxTerrain[], tmxDirectory: string): Promise<TmxTilesetTile>;
static loadTmxAnimationFrame(frame: TmxAnimationFrame, xFrame: any): TmxAnimationFrame; static loadTmxAnimationFrame(frame: TmxAnimationFrame, xFrame: any): TmxAnimationFrame;
static loadTmxObjectGroup(group: TmxObjectGroup, map: TmxMap, xObjectGroup: any): TmxObjectGroup; static loadTmxObjectGroup(group: TmxObjectGroup, map: TmxMap, xObjectGroup: any): TmxObjectGroup;
static loadTmxObject(obj: TmxObject, map: TmxMap, xObject: any): TmxObject; static loadTmxObject(obj: TmxObject, map: TmxMap, xObject: any): TmxObject;
@@ -1800,7 +1800,7 @@ declare module es {
}): Vector2; }): Vector2;
static parseTmxTerrain(xTerrain: any): TmxTerrain; static parseTmxTerrain(xTerrain: any): TmxTerrain;
static parseTmxTileOffset(xTileOffset: any): TmxTileOffset; static parseTmxTileOffset(xTileOffset: any): TmxTileOffset;
static loadTmxImage(image: TmxImage, xImage: any): Promise<TmxImage>; static loadTmxImage(image: TmxImage, xImage: any, tmxDirectory: string): Promise<TmxImage>;
} }
} }
declare module es { declare module es {
+51 -41
View File
@@ -7641,7 +7641,7 @@ var es;
(function (es) { (function (es) {
var TmxDocument = (function () { var TmxDocument = (function () {
function TmxDocument() { function TmxDocument() {
this.tmxDirectory = ""; this.tmxDirectory = "resource/assets/";
} }
return TmxDocument; return TmxDocument;
}()); }());
@@ -7867,13 +7867,13 @@ var es;
map.objectGroups = []; map.objectGroups = [];
map.imageLayers = []; map.imageLayers = [];
map.groups = []; map.groups = [];
this.parseLayers(map, xMap, map, map.width, map.height); this.parseLayers(map, xMap, map, map.width, map.height, map.tmxDirectory);
return [2, map]; return [2, map];
} }
}); });
}); });
}; };
TiledMapLoader.parseLayers = function (container, xEle, map, width, height) { TiledMapLoader.parseLayers = function (container, xEle, map, width, height, tmxDirectory) {
return __awaiter(this, void 0, void 0, function () { return __awaiter(this, void 0, void 0, function () {
var _i, _a, e, layer, _b, tileLayer, objectgroup, imagelayer, newGroup; var _i, _a, e, layer, _b, tileLayer, objectgroup, imagelayer, newGroup;
return __generator(this, function (_c) { return __generator(this, function (_c) {
@@ -7884,7 +7884,7 @@ var es;
}); });
_c.label = 1; _c.label = 1;
case 1: case 1:
if (!(_i < _a.length)) return [3, 10]; if (!(_i < _a.length)) return [3, 11];
e = _a[_i]; e = _a[_i];
layer = void 0; layer = void 0;
_b = e.type; _b = e.type;
@@ -7894,62 +7894,72 @@ var es;
case "imagelayer": return [3, 4]; case "imagelayer": return [3, 4];
case "group": return [3, 6]; case "group": return [3, 6];
} }
return [3, 7]; return [3, 8];
case 2: case 2:
tileLayer = this.loadTmxLayer(new es.TmxLayer(), map, e, width, height); tileLayer = this.loadTmxLayer(new es.TmxLayer(), map, e, width, height);
layer = tileLayer; layer = tileLayer;
if (container instanceof es.TmxMap || container instanceof es.TmxGroup) if (container instanceof es.TmxMap || container instanceof es.TmxGroup)
container.tileLayers.push(tileLayer); container.tileLayers.push(tileLayer);
return [3, 8]; return [3, 9];
case 3: case 3:
objectgroup = this.loadTmxObjectGroup(new es.TmxObjectGroup(), map, e); objectgroup = this.loadTmxObjectGroup(new es.TmxObjectGroup(), map, e);
layer = objectgroup; layer = objectgroup;
if (container instanceof es.TmxMap || container instanceof es.TmxGroup) if (container instanceof es.TmxMap || container instanceof es.TmxGroup)
container.objectGroups.push(objectgroup); container.objectGroups.push(objectgroup);
return [3, 8]; return [3, 9];
case 4: return [4, this.loadTmxImageLayer(new es.TmxImageLayer(), map, e)]; case 4: return [4, this.loadTmxImageLayer(new es.TmxImageLayer(), map, e, tmxDirectory)];
case 5: case 5:
imagelayer = _c.sent(); imagelayer = _c.sent();
layer = imagelayer; layer = imagelayer;
if (container instanceof es.TmxMap || container instanceof es.TmxGroup) if (container instanceof es.TmxMap || container instanceof es.TmxGroup)
container.imageLayers.push(imagelayer); container.imageLayers.push(imagelayer);
return [3, 8]; return [3, 9];
case 6: case 6: return [4, this.loadTmxGroup(new es.TmxGroup(), map, e, width, height, tmxDirectory)];
newGroup = this.loadTmxGroup(new es.TmxGroup(), map, e, width, height); case 7:
newGroup = _c.sent();
layer = newGroup; layer = newGroup;
if (container instanceof es.TmxMap || container instanceof es.TmxGroup) if (container instanceof es.TmxMap || container instanceof es.TmxGroup)
container.groups.push(newGroup); container.groups.push(newGroup);
return [3, 8]; return [3, 9];
case 7: throw new Error("无效的操作"); case 8: throw new Error("无效的操作");
case 8: case 9:
if (container instanceof es.TmxMap || container instanceof es.TmxGroup) if (container instanceof es.TmxMap || container instanceof es.TmxGroup)
container.layers.push(layer); container.layers.push(layer);
_c.label = 9; _c.label = 10;
case 9: case 10:
_i++; _i++;
return [3, 1]; return [3, 1];
case 10: return [2]; case 11: return [2];
} }
}); });
}); });
}; };
TiledMapLoader.loadTmxGroup = function (group, map, xGroup, width, height) { TiledMapLoader.loadTmxGroup = function (group, map, xGroup, width, height, tmxDirectory) {
group.map = map; return __awaiter(this, void 0, void 0, function () {
group.name = xGroup["name"] != undefined ? xGroup["name"] : ""; return __generator(this, function (_a) {
group.opacity = xGroup["opacity"] != undefined ? xGroup["opacity"] : 1; switch (_a.label) {
group.visible = xGroup["visible"] != undefined ? xGroup["visible"] : true; case 0:
group.offsetX = xGroup["offsetx"] != undefined ? xGroup["offsetx"] : 0; group.map = map;
group.offsetY = xGroup["offsety"] != undefined ? xGroup["offsety"] : 0; group.name = xGroup["name"] != undefined ? xGroup["name"] : "";
group.properties = this.parsePropertyDict(xGroup["properties"]); group.opacity = xGroup["opacity"] != undefined ? xGroup["opacity"] : 1;
group.layers = []; group.visible = xGroup["visible"] != undefined ? xGroup["visible"] : true;
group.tileLayers = []; group.offsetX = xGroup["offsetx"] != undefined ? xGroup["offsetx"] : 0;
group.objectGroups = []; group.offsetY = xGroup["offsety"] != undefined ? xGroup["offsety"] : 0;
group.imageLayers = []; group.properties = this.parsePropertyDict(xGroup["properties"]);
group.groups = []; group.layers = [];
this.parseLayers(group, xGroup, map, width, height); group.tileLayers = [];
return group; group.objectGroups = [];
group.imageLayers = [];
group.groups = [];
return [4, this.parseLayers(group, xGroup, map, width, height, tmxDirectory)];
case 1:
_a.sent();
return [2, group];
}
});
});
}; };
TiledMapLoader.loadTmxImageLayer = function (layer, map, xImageLayer) { TiledMapLoader.loadTmxImageLayer = function (layer, map, xImageLayer, tmxDirectory) {
return __awaiter(this, void 0, void 0, function () { return __awaiter(this, void 0, void 0, function () {
var xImage, _a; var xImage, _a;
return __generator(this, function (_b) { return __generator(this, function (_b) {
@@ -7966,7 +7976,7 @@ var es;
xImage = xImageLayer["image"]; xImage = xImageLayer["image"];
if (!xImage) return [3, 2]; if (!xImage) return [3, 2];
_a = layer; _a = layer;
return [4, this.loadTmxImage(new es.TmxImage(), xImage)]; return [4, this.loadTmxImage(new es.TmxImage(), xImage, tmxDirectory)];
case 1: case 1:
_a.image = _b.sent(); _a.image = _b.sent();
_b.label = 2; _b.label = 2;
@@ -8100,7 +8110,7 @@ var es;
firstGid = xFirstGid; firstGid = xFirstGid;
source = xTileset["image"]; source = xTileset["image"];
if (!!source) return [3, 2]; if (!!source) return [3, 2];
source = "resource/assets/" + source; source = map.tmxDirectory + source;
return [4, RES.getResByUrl(source, null, this, RES.ResourceItem.TYPE_IMAGE)]; return [4, RES.getResByUrl(source, null, this, RES.ResourceItem.TYPE_IMAGE)];
case 1: case 1:
xDocTileset = _a.sent(); xDocTileset = _a.sent();
@@ -8130,7 +8140,7 @@ var es;
xImage = xTileset["image"]; xImage = xTileset["image"];
if (!xImage) return [3, 2]; if (!xImage) return [3, 2];
_a = tileset; _a = tileset;
return [4, this.loadTmxImage(new es.TmxImage(), xTileset)]; return [4, this.loadTmxImage(new es.TmxImage(), xTileset, map.tmxDirectory)];
case 1: case 1:
_a.image = _e.sent(); _a.image = _e.sent();
_e.label = 2; _e.label = 2;
@@ -8147,7 +8157,7 @@ var es;
case 3: case 3:
if (!(_c < _d.length)) return [3, 6]; if (!(_c < _d.length)) return [3, 6];
xTile = _d[_c]; xTile = _d[_c];
return [4, this.loadTmxTilesetTile(new es.TmxTilesetTile(), tileset, xTile, tileset.terrains)]; return [4, this.loadTmxTilesetTile(new es.TmxTilesetTile(), tileset, xTile, tileset.terrains, map.tmxDirectory)];
case 4: case 4:
tile = _e.sent(); tile = _e.sent();
tileset.tiles.set(tile.id, tile); tileset.tiles.set(tile.id, tile);
@@ -8179,7 +8189,7 @@ var es;
}); });
}); });
}; };
TiledMapLoader.loadTmxTilesetTile = function (tile, tileset, xTile, terrains) { TiledMapLoader.loadTmxTilesetTile = function (tile, tileset, xTile, terrains, tmxDirectory) {
return __awaiter(this, void 0, void 0, function () { return __awaiter(this, void 0, void 0, function () {
var strTerrain, index, _i, strTerrain_1, v, edge, xImage, _a, _b, _c, e, _d, _e, e; var strTerrain, index, _i, strTerrain_1, v, edge, xImage, _a, _b, _c, e, _d, _e, e;
return __generator(this, function (_f) { return __generator(this, function (_f) {
@@ -8202,7 +8212,7 @@ var es;
xImage = xTile["image"]; xImage = xTile["image"];
if (!xImage) return [3, 2]; if (!xImage) return [3, 2];
_a = tile; _a = tile;
return [4, this.loadTmxImage(new es.TmxImage(), xImage)]; return [4, this.loadTmxImage(new es.TmxImage(), xImage, tmxDirectory)];
case 1: case 1:
_a.image = _f.sent(); _a.image = _f.sent();
_f.label = 2; _f.label = 2;
@@ -8356,7 +8366,7 @@ var es;
tmxTileOffset.y = xTileOffset["y"]; tmxTileOffset.y = xTileOffset["y"];
return tmxTileOffset; return tmxTileOffset;
}; };
TiledMapLoader.loadTmxImage = function (image, xImage) { TiledMapLoader.loadTmxImage = function (image, xImage, tmxDirectory) {
return __awaiter(this, void 0, void 0, function () { return __awaiter(this, void 0, void 0, function () {
var xSource, _a, _b, _c, xData; var xSource, _a, _b, _c, xData;
return __generator(this, function (_d) { return __generator(this, function (_d) {
@@ -8364,7 +8374,7 @@ var es;
case 0: case 0:
xSource = xImage["image"]; xSource = xImage["image"];
if (!xSource) return [3, 2]; if (!xSource) return [3, 2];
image.source = "resource/assets/" + xSource; image.source = tmxDirectory + xSource;
_a = image; _a = image;
_c = (_b = egret.SpriteSheet).bind; _c = (_b = egret.SpriteSheet).bind;
return [4, RES.getResByUrl(image.source, null, this, RES.ResourceItem.TYPE_IMAGE)]; return [4, RES.getResByUrl(image.source, null, this, RES.ResourceItem.TYPE_IMAGE)];
File diff suppressed because one or more lines are too long
+5 -5
View File
@@ -1775,9 +1775,9 @@ declare module es {
class TiledMapLoader { class TiledMapLoader {
static loadTmxMap(map: TmxMap, filePath: string): Promise<TmxMap>; static loadTmxMap(map: TmxMap, filePath: string): Promise<TmxMap>;
static loadTmxMapData(map: TmxMap, xMap: any): Promise<TmxMap>; static loadTmxMapData(map: TmxMap, xMap: any): Promise<TmxMap>;
static parseLayers(container: any, xEle: any, map: TmxMap, width: number, height: number): Promise<void>; static parseLayers(container: any, xEle: any, map: TmxMap, width: number, height: number, tmxDirectory: string): Promise<void>;
static loadTmxGroup(group: TmxGroup, map: TmxMap, xGroup: any, width: number, height: number): TmxGroup; static loadTmxGroup(group: TmxGroup, map: TmxMap, xGroup: any, width: number, height: number, tmxDirectory: string): Promise<TmxGroup>;
static loadTmxImageLayer(layer: TmxImageLayer, map: TmxMap, xImageLayer: any): Promise<TmxImageLayer>; static loadTmxImageLayer(layer: TmxImageLayer, map: TmxMap, xImageLayer: any, tmxDirectory: string): Promise<TmxImageLayer>;
static loadTmxLayer(layer: TmxLayer, map: TmxMap, xLayer: any, width: number, height: number): TmxLayer; static loadTmxLayer(layer: TmxLayer, map: TmxMap, xLayer: any, width: number, height: number): TmxLayer;
private static updateMaxTileSizes; private static updateMaxTileSizes;
static parseOrientationType(type: string): OrientationType; static parseOrientationType(type: string): OrientationType;
@@ -1787,7 +1787,7 @@ declare module es {
static parsePropertyDict(prop: any): Map<string, string>; static parsePropertyDict(prop: any): Map<string, string>;
static parseTmxTileset(map: TmxMap, xTileset: any): Promise<TmxTileset>; static parseTmxTileset(map: TmxMap, xTileset: any): Promise<TmxTileset>;
static loadTmxTileset(tileset: TmxTileset, map: TmxMap, xTileset: any, firstGid: number): Promise<TmxTileset>; static loadTmxTileset(tileset: TmxTileset, map: TmxMap, xTileset: any, firstGid: number): Promise<TmxTileset>;
static loadTmxTilesetTile(tile: TmxTilesetTile, tileset: TmxTileset, xTile: any, terrains: TmxTerrain[]): Promise<TmxTilesetTile>; static loadTmxTilesetTile(tile: TmxTilesetTile, tileset: TmxTileset, xTile: any, terrains: TmxTerrain[], tmxDirectory: string): Promise<TmxTilesetTile>;
static loadTmxAnimationFrame(frame: TmxAnimationFrame, xFrame: any): TmxAnimationFrame; static loadTmxAnimationFrame(frame: TmxAnimationFrame, xFrame: any): TmxAnimationFrame;
static loadTmxObjectGroup(group: TmxObjectGroup, map: TmxMap, xObjectGroup: any): TmxObjectGroup; static loadTmxObjectGroup(group: TmxObjectGroup, map: TmxMap, xObjectGroup: any): TmxObjectGroup;
static loadTmxObject(obj: TmxObject, map: TmxMap, xObject: any): TmxObject; static loadTmxObject(obj: TmxObject, map: TmxMap, xObject: any): TmxObject;
@@ -1800,7 +1800,7 @@ declare module es {
}): Vector2; }): Vector2;
static parseTmxTerrain(xTerrain: any): TmxTerrain; static parseTmxTerrain(xTerrain: any): TmxTerrain;
static parseTmxTileOffset(xTileOffset: any): TmxTileOffset; static parseTmxTileOffset(xTileOffset: any): TmxTileOffset;
static loadTmxImage(image: TmxImage, xImage: any): Promise<TmxImage>; static loadTmxImage(image: TmxImage, xImage: any, tmxDirectory: string): Promise<TmxImage>;
} }
} }
declare module es { declare module es {
+51 -41
View File
@@ -7641,7 +7641,7 @@ var es;
(function (es) { (function (es) {
var TmxDocument = (function () { var TmxDocument = (function () {
function TmxDocument() { function TmxDocument() {
this.tmxDirectory = ""; this.tmxDirectory = "resource/assets/";
} }
return TmxDocument; return TmxDocument;
}()); }());
@@ -7867,13 +7867,13 @@ var es;
map.objectGroups = []; map.objectGroups = [];
map.imageLayers = []; map.imageLayers = [];
map.groups = []; map.groups = [];
this.parseLayers(map, xMap, map, map.width, map.height); this.parseLayers(map, xMap, map, map.width, map.height, map.tmxDirectory);
return [2, map]; return [2, map];
} }
}); });
}); });
}; };
TiledMapLoader.parseLayers = function (container, xEle, map, width, height) { TiledMapLoader.parseLayers = function (container, xEle, map, width, height, tmxDirectory) {
return __awaiter(this, void 0, void 0, function () { return __awaiter(this, void 0, void 0, function () {
var _i, _a, e, layer, _b, tileLayer, objectgroup, imagelayer, newGroup; var _i, _a, e, layer, _b, tileLayer, objectgroup, imagelayer, newGroup;
return __generator(this, function (_c) { return __generator(this, function (_c) {
@@ -7884,7 +7884,7 @@ var es;
}); });
_c.label = 1; _c.label = 1;
case 1: case 1:
if (!(_i < _a.length)) return [3, 10]; if (!(_i < _a.length)) return [3, 11];
e = _a[_i]; e = _a[_i];
layer = void 0; layer = void 0;
_b = e.type; _b = e.type;
@@ -7894,62 +7894,72 @@ var es;
case "imagelayer": return [3, 4]; case "imagelayer": return [3, 4];
case "group": return [3, 6]; case "group": return [3, 6];
} }
return [3, 7]; return [3, 8];
case 2: case 2:
tileLayer = this.loadTmxLayer(new es.TmxLayer(), map, e, width, height); tileLayer = this.loadTmxLayer(new es.TmxLayer(), map, e, width, height);
layer = tileLayer; layer = tileLayer;
if (container instanceof es.TmxMap || container instanceof es.TmxGroup) if (container instanceof es.TmxMap || container instanceof es.TmxGroup)
container.tileLayers.push(tileLayer); container.tileLayers.push(tileLayer);
return [3, 8]; return [3, 9];
case 3: case 3:
objectgroup = this.loadTmxObjectGroup(new es.TmxObjectGroup(), map, e); objectgroup = this.loadTmxObjectGroup(new es.TmxObjectGroup(), map, e);
layer = objectgroup; layer = objectgroup;
if (container instanceof es.TmxMap || container instanceof es.TmxGroup) if (container instanceof es.TmxMap || container instanceof es.TmxGroup)
container.objectGroups.push(objectgroup); container.objectGroups.push(objectgroup);
return [3, 8]; return [3, 9];
case 4: return [4, this.loadTmxImageLayer(new es.TmxImageLayer(), map, e)]; case 4: return [4, this.loadTmxImageLayer(new es.TmxImageLayer(), map, e, tmxDirectory)];
case 5: case 5:
imagelayer = _c.sent(); imagelayer = _c.sent();
layer = imagelayer; layer = imagelayer;
if (container instanceof es.TmxMap || container instanceof es.TmxGroup) if (container instanceof es.TmxMap || container instanceof es.TmxGroup)
container.imageLayers.push(imagelayer); container.imageLayers.push(imagelayer);
return [3, 8]; return [3, 9];
case 6: case 6: return [4, this.loadTmxGroup(new es.TmxGroup(), map, e, width, height, tmxDirectory)];
newGroup = this.loadTmxGroup(new es.TmxGroup(), map, e, width, height); case 7:
newGroup = _c.sent();
layer = newGroup; layer = newGroup;
if (container instanceof es.TmxMap || container instanceof es.TmxGroup) if (container instanceof es.TmxMap || container instanceof es.TmxGroup)
container.groups.push(newGroup); container.groups.push(newGroup);
return [3, 8]; return [3, 9];
case 7: throw new Error("无效的操作"); case 8: throw new Error("无效的操作");
case 8: case 9:
if (container instanceof es.TmxMap || container instanceof es.TmxGroup) if (container instanceof es.TmxMap || container instanceof es.TmxGroup)
container.layers.push(layer); container.layers.push(layer);
_c.label = 9; _c.label = 10;
case 9: case 10:
_i++; _i++;
return [3, 1]; return [3, 1];
case 10: return [2]; case 11: return [2];
} }
}); });
}); });
}; };
TiledMapLoader.loadTmxGroup = function (group, map, xGroup, width, height) { TiledMapLoader.loadTmxGroup = function (group, map, xGroup, width, height, tmxDirectory) {
group.map = map; return __awaiter(this, void 0, void 0, function () {
group.name = xGroup["name"] != undefined ? xGroup["name"] : ""; return __generator(this, function (_a) {
group.opacity = xGroup["opacity"] != undefined ? xGroup["opacity"] : 1; switch (_a.label) {
group.visible = xGroup["visible"] != undefined ? xGroup["visible"] : true; case 0:
group.offsetX = xGroup["offsetx"] != undefined ? xGroup["offsetx"] : 0; group.map = map;
group.offsetY = xGroup["offsety"] != undefined ? xGroup["offsety"] : 0; group.name = xGroup["name"] != undefined ? xGroup["name"] : "";
group.properties = this.parsePropertyDict(xGroup["properties"]); group.opacity = xGroup["opacity"] != undefined ? xGroup["opacity"] : 1;
group.layers = []; group.visible = xGroup["visible"] != undefined ? xGroup["visible"] : true;
group.tileLayers = []; group.offsetX = xGroup["offsetx"] != undefined ? xGroup["offsetx"] : 0;
group.objectGroups = []; group.offsetY = xGroup["offsety"] != undefined ? xGroup["offsety"] : 0;
group.imageLayers = []; group.properties = this.parsePropertyDict(xGroup["properties"]);
group.groups = []; group.layers = [];
this.parseLayers(group, xGroup, map, width, height); group.tileLayers = [];
return group; group.objectGroups = [];
group.imageLayers = [];
group.groups = [];
return [4, this.parseLayers(group, xGroup, map, width, height, tmxDirectory)];
case 1:
_a.sent();
return [2, group];
}
});
});
}; };
TiledMapLoader.loadTmxImageLayer = function (layer, map, xImageLayer) { TiledMapLoader.loadTmxImageLayer = function (layer, map, xImageLayer, tmxDirectory) {
return __awaiter(this, void 0, void 0, function () { return __awaiter(this, void 0, void 0, function () {
var xImage, _a; var xImage, _a;
return __generator(this, function (_b) { return __generator(this, function (_b) {
@@ -7966,7 +7976,7 @@ var es;
xImage = xImageLayer["image"]; xImage = xImageLayer["image"];
if (!xImage) return [3, 2]; if (!xImage) return [3, 2];
_a = layer; _a = layer;
return [4, this.loadTmxImage(new es.TmxImage(), xImage)]; return [4, this.loadTmxImage(new es.TmxImage(), xImage, tmxDirectory)];
case 1: case 1:
_a.image = _b.sent(); _a.image = _b.sent();
_b.label = 2; _b.label = 2;
@@ -8100,7 +8110,7 @@ var es;
firstGid = xFirstGid; firstGid = xFirstGid;
source = xTileset["image"]; source = xTileset["image"];
if (!!source) return [3, 2]; if (!!source) return [3, 2];
source = "resource/assets/" + source; source = map.tmxDirectory + source;
return [4, RES.getResByUrl(source, null, this, RES.ResourceItem.TYPE_IMAGE)]; return [4, RES.getResByUrl(source, null, this, RES.ResourceItem.TYPE_IMAGE)];
case 1: case 1:
xDocTileset = _a.sent(); xDocTileset = _a.sent();
@@ -8130,7 +8140,7 @@ var es;
xImage = xTileset["image"]; xImage = xTileset["image"];
if (!xImage) return [3, 2]; if (!xImage) return [3, 2];
_a = tileset; _a = tileset;
return [4, this.loadTmxImage(new es.TmxImage(), xTileset)]; return [4, this.loadTmxImage(new es.TmxImage(), xTileset, map.tmxDirectory)];
case 1: case 1:
_a.image = _e.sent(); _a.image = _e.sent();
_e.label = 2; _e.label = 2;
@@ -8147,7 +8157,7 @@ var es;
case 3: case 3:
if (!(_c < _d.length)) return [3, 6]; if (!(_c < _d.length)) return [3, 6];
xTile = _d[_c]; xTile = _d[_c];
return [4, this.loadTmxTilesetTile(new es.TmxTilesetTile(), tileset, xTile, tileset.terrains)]; return [4, this.loadTmxTilesetTile(new es.TmxTilesetTile(), tileset, xTile, tileset.terrains, map.tmxDirectory)];
case 4: case 4:
tile = _e.sent(); tile = _e.sent();
tileset.tiles.set(tile.id, tile); tileset.tiles.set(tile.id, tile);
@@ -8179,7 +8189,7 @@ var es;
}); });
}); });
}; };
TiledMapLoader.loadTmxTilesetTile = function (tile, tileset, xTile, terrains) { TiledMapLoader.loadTmxTilesetTile = function (tile, tileset, xTile, terrains, tmxDirectory) {
return __awaiter(this, void 0, void 0, function () { return __awaiter(this, void 0, void 0, function () {
var strTerrain, index, _i, strTerrain_1, v, edge, xImage, _a, _b, _c, e, _d, _e, e; var strTerrain, index, _i, strTerrain_1, v, edge, xImage, _a, _b, _c, e, _d, _e, e;
return __generator(this, function (_f) { return __generator(this, function (_f) {
@@ -8202,7 +8212,7 @@ var es;
xImage = xTile["image"]; xImage = xTile["image"];
if (!xImage) return [3, 2]; if (!xImage) return [3, 2];
_a = tile; _a = tile;
return [4, this.loadTmxImage(new es.TmxImage(), xImage)]; return [4, this.loadTmxImage(new es.TmxImage(), xImage, tmxDirectory)];
case 1: case 1:
_a.image = _f.sent(); _a.image = _f.sent();
_f.label = 2; _f.label = 2;
@@ -8356,7 +8366,7 @@ var es;
tmxTileOffset.y = xTileOffset["y"]; tmxTileOffset.y = xTileOffset["y"];
return tmxTileOffset; return tmxTileOffset;
}; };
TiledMapLoader.loadTmxImage = function (image, xImage) { TiledMapLoader.loadTmxImage = function (image, xImage, tmxDirectory) {
return __awaiter(this, void 0, void 0, function () { return __awaiter(this, void 0, void 0, function () {
var xSource, _a, _b, _c, xData; var xSource, _a, _b, _c, xData;
return __generator(this, function (_d) { return __generator(this, function (_d) {
@@ -8364,7 +8374,7 @@ var es;
case 0: case 0:
xSource = xImage["image"]; xSource = xImage["image"];
if (!xSource) return [3, 2]; if (!xSource) return [3, 2];
image.source = "resource/assets/" + xSource; image.source = tmxDirectory + xSource;
_a = image; _a = image;
_c = (_b = egret.SpriteSheet).bind; _c = (_b = egret.SpriteSheet).bind;
return [4, RES.getResByUrl(image.source, null, this, RES.ResourceItem.TYPE_IMAGE)]; return [4, RES.getResByUrl(image.source, null, this, RES.ResourceItem.TYPE_IMAGE)];
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -30
View File
@@ -2,7 +2,7 @@ module es {
export class TmxDocument { export class TmxDocument {
public tmxDirectory: string; public tmxDirectory: string;
constructor(){ constructor(){
this.tmxDirectory = ""; this.tmxDirectory = "resource/assets/";
} }
} }
@@ -10,35 +10,6 @@ module es {
name: string; name: string;
} }
// export class TmxList<T extends ITmxElement> extends Map<string, T>{
// public _nameCount: Map<string, number> = new Map<string, number>();
//
// public add(t: T){
// let tName = t.name;
//
// // 通过附加数字重命名重复的条目
// if (this.has(tName))
// this._nameCount.set(tName, this._nameCount.get(tName) + 1);
// else
// this._nameCount.set(tName, 0);
// }
//
// protected getKeyForItem(item: T): string {
// let name = item.name;
// let count = this._nameCount.get(name);
//
// let dupes = 0;
//
// // 对于重复的键,附加一个计数器。对于病理情况,插入下划线以确保唯一性
// while (this.has(name)){
// name = name + Enumerable.repeat("_", dupes).toString() + count.toString();
// dupes ++;
// }
//
// return name;
// }
// }
export class TmxImage { export class TmxImage {
public texture: egret.Bitmap; public texture: egret.Bitmap;
public bitmap: egret.SpriteSheet; public bitmap: egret.SpriteSheet;
+16 -15
View File
@@ -44,7 +44,7 @@ module es {
map.imageLayers = []; map.imageLayers = [];
map.groups = []; map.groups = [];
this.parseLayers(map, xMap, map, map.width, map.height); this.parseLayers(map, xMap, map, map.width, map.height, map.tmxDirectory);
return map; return map;
} }
@@ -56,8 +56,9 @@ module es {
* @param map * @param map
* @param width * @param width
* @param height * @param height
* @param tmxDirectory
*/ */
public static async parseLayers(container: any, xEle: any, map: TmxMap, width: number, height: number) { public static async parseLayers(container: any, xEle: any, map: TmxMap, width: number, height: number, tmxDirectory: string) {
for (let e of ObjectUtils.elements(xEle).where(x => { for (let e of ObjectUtils.elements(xEle).where(x => {
return x.type == "tilelayer" || x.type == "objectgroup" || x.type == "imagelayer" || x.type == "group" return x.type == "tilelayer" || x.type == "objectgroup" || x.type == "imagelayer" || x.type == "group"
})) { })) {
@@ -78,14 +79,14 @@ module es {
container.objectGroups.push(objectgroup); container.objectGroups.push(objectgroup);
break; break;
case "imagelayer": case "imagelayer":
let imagelayer = await this.loadTmxImageLayer(new TmxImageLayer(), map, e); let imagelayer = await this.loadTmxImageLayer(new TmxImageLayer(), map, e, tmxDirectory);
layer = imagelayer; layer = imagelayer;
if (container instanceof TmxMap || container instanceof TmxGroup) if (container instanceof TmxMap || container instanceof TmxGroup)
container.imageLayers.push(imagelayer); container.imageLayers.push(imagelayer);
break; break;
case "group": case "group":
let newGroup = this.loadTmxGroup(new TmxGroup(), map, e, width, height); let newGroup = await this.loadTmxGroup(new TmxGroup(), map, e, width, height, tmxDirectory);
layer = newGroup; layer = newGroup;
if (container instanceof TmxMap || container instanceof TmxGroup) if (container instanceof TmxMap || container instanceof TmxGroup)
@@ -100,7 +101,7 @@ module es {
} }
} }
public static loadTmxGroup(group: TmxGroup, map: TmxMap, xGroup: any, width: number, height: number) { public static async loadTmxGroup(group: TmxGroup, map: TmxMap, xGroup: any, width: number, height: number, tmxDirectory: string) {
group.map = map; group.map = map;
group.name = xGroup["name"] != undefined ? xGroup["name"] : ""; group.name = xGroup["name"] != undefined ? xGroup["name"] : "";
group.opacity = xGroup["opacity"] != undefined ? xGroup["opacity"] : 1; group.opacity = xGroup["opacity"] != undefined ? xGroup["opacity"] : 1;
@@ -114,11 +115,11 @@ module es {
group.imageLayers = []; group.imageLayers = [];
group.groups = []; group.groups = [];
this.parseLayers(group, xGroup, map, width, height); await this.parseLayers(group, xGroup, map, width, height, tmxDirectory);
return group; return group;
} }
public static async loadTmxImageLayer(layer: TmxImageLayer, map: TmxMap, xImageLayer: any) { public static async loadTmxImageLayer(layer: TmxImageLayer, map: TmxMap, xImageLayer: any, tmxDirectory: string) {
layer.map = map; layer.map = map;
layer.name = xImageLayer["name"]; layer.name = xImageLayer["name"];
layer.width = xImageLayer["width"]; layer.width = xImageLayer["width"];
@@ -130,7 +131,7 @@ module es {
let xImage = xImageLayer["image"]; let xImage = xImageLayer["image"];
if (xImage) { if (xImage) {
layer.image = await this.loadTmxImage(new TmxImage(), xImage); layer.image = await this.loadTmxImage(new TmxImage(), xImage, tmxDirectory);
} }
layer.properties = this.parsePropertyDict(xImageLayer["properties"]); layer.properties = this.parsePropertyDict(xImageLayer["properties"]);
return layer; return layer;
@@ -269,7 +270,7 @@ module es {
// 如果是嵌入式TmxTileset,即不是外部的,source将为null // 如果是嵌入式TmxTileset,即不是外部的,source将为null
if (!source) { if (!source) {
source = "resource/assets/" + source; source = map.tmxDirectory + source;
// 其他所有内容都在TSX文件中 // 其他所有内容都在TSX文件中
let xDocTileset = await RES.getResByUrl(source, null, this, RES.ResourceItem.TYPE_IMAGE); let xDocTileset = await RES.getResByUrl(source, null, this, RES.ResourceItem.TYPE_IMAGE);
let tileset = this.loadTmxTileset(new TmxTileset(), map, xDocTileset["tileset"], firstGid); let tileset = this.loadTmxTileset(new TmxTileset(), map, xDocTileset["tileset"], firstGid);
@@ -296,7 +297,7 @@ module es {
let xImage = xTileset["image"]; let xImage = xTileset["image"];
if (xImage) if (xImage)
tileset.image = await this.loadTmxImage(new TmxImage(), xTileset); tileset.image = await this.loadTmxImage(new TmxImage(), xTileset, map.tmxDirectory);
tileset.terrains = []; tileset.terrains = [];
if (xTileset["terrains"]) if (xTileset["terrains"])
@@ -305,7 +306,7 @@ module es {
tileset.tiles = new Map<number, TmxTilesetTile>(); tileset.tiles = new Map<number, TmxTilesetTile>();
for (let xTile of xTileset["tiles"]) { for (let xTile of xTileset["tiles"]) {
let tile = await this.loadTmxTilesetTile(new TmxTilesetTile(), tileset, xTile, tileset.terrains); let tile = await this.loadTmxTilesetTile(new TmxTilesetTile(), tileset, xTile, tileset.terrains, map.tmxDirectory);
tileset.tiles.set(tile.id, tile); tileset.tiles.set(tile.id, tile);
} }
@@ -334,7 +335,7 @@ module es {
return tileset; return tileset;
} }
public static async loadTmxTilesetTile(tile: TmxTilesetTile, tileset: TmxTileset, xTile: any, terrains: TmxTerrain[]) { public static async loadTmxTilesetTile(tile: TmxTilesetTile, tileset: TmxTileset, xTile: any, terrains: TmxTerrain[], tmxDirectory: string) {
tile.tileset = tileset; tile.tileset = tileset;
tile.id = xTile["id"]; tile.id = xTile["id"];
@@ -351,7 +352,7 @@ module es {
tile.type = xTile["type"]; tile.type = xTile["type"];
let xImage = xTile["image"]; let xImage = xTile["image"];
if (xImage) { if (xImage) {
tile.image = await this.loadTmxImage(new TmxImage(), xImage); tile.image = await this.loadTmxImage(new TmxImage(), xImage, tmxDirectory);
} }
tile.objectGroups = []; tile.objectGroups = [];
@@ -513,10 +514,10 @@ module es {
return tmxTileOffset; return tmxTileOffset;
} }
public static async loadTmxImage(image: TmxImage, xImage: any) { public static async loadTmxImage(image: TmxImage, xImage: any, tmxDirectory: string) {
let xSource = xImage["image"]; let xSource = xImage["image"];
if (xSource) { if (xSource) {
image.source = "resource/assets/" + xSource; image.source = tmxDirectory + xSource;
image.bitmap = new egret.SpriteSheet(await RES.getResByUrl(image.source, null, this, RES.ResourceItem.TYPE_IMAGE)); image.bitmap = new egret.SpriteSheet(await RES.getResByUrl(image.source, null, this, RES.ResourceItem.TYPE_IMAGE));
} else { } else {
image.format = xImage["format"]; image.format = xImage["format"];