@canvasengine/tiled 2.0.0-beta.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/classes/Gid.d.ts +13 -0
  2. package/dist/classes/Layer.d.ts +26 -0
  3. package/dist/classes/Map.d.ts +232 -0
  4. package/dist/classes/Object.d.ts +8 -0
  5. package/dist/classes/Properties.d.ts +11 -0
  6. package/dist/classes/Tile.d.ts +19 -0
  7. package/dist/classes/Tileset.d.ts +13 -0
  8. package/dist/generate/tileset.d.ts +11 -0
  9. package/dist/generate/wangtile.d.ts +21 -0
  10. package/dist/index.d.ts +16 -0
  11. package/dist/index.js +6205 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/parser/open-file.d.ts +24 -0
  14. package/dist/parser/parser.d.ts +27 -0
  15. package/dist/types/Layer.d.ts +116 -0
  16. package/dist/types/Map.d.ts +72 -0
  17. package/dist/types/Objects.d.ts +57 -0
  18. package/dist/types/Text.d.ts +47 -0
  19. package/dist/types/Tile.d.ts +17 -0
  20. package/dist/types/Tileset.d.ts +92 -0
  21. package/dist/types/Types.d.ts +147 -0
  22. package/dist/types/WorldMaps.d.ts +12 -0
  23. package/dist/utils.d.ts +10 -0
  24. package/package.json +31 -0
  25. package/readme.md +1 -0
  26. package/src/classes/Gid.ts +46 -0
  27. package/src/classes/Layer.ts +135 -0
  28. package/src/classes/Map.ts +443 -0
  29. package/src/classes/Object.ts +16 -0
  30. package/src/classes/Properties.ts +30 -0
  31. package/src/classes/Tile.ts +22 -0
  32. package/src/classes/Tileset.ts +34 -0
  33. package/src/generate/tileset.ts +35 -0
  34. package/src/generate/wangtile.ts +166 -0
  35. package/src/index.ts +16 -0
  36. package/src/parser/open-file.ts +155 -0
  37. package/src/parser/parser.ts +309 -0
  38. package/src/types/Layer.ts +127 -0
  39. package/src/types/Map.ts +83 -0
  40. package/src/types/Objects.ts +64 -0
  41. package/src/types/Text.ts +47 -0
  42. package/src/types/Tile.ts +19 -0
  43. package/src/types/Tileset.ts +99 -0
  44. package/src/types/Types.ts +157 -0
  45. package/src/types/WorldMaps.ts +13 -0
  46. package/src/utils.ts +22 -0
  47. package/tests/class.spec.ts +88 -0
  48. package/tests/data.ts +5440 -0
  49. package/tests/parser.spec.ts +112 -0
  50. package/tests/tile-properties.spec.ts +99 -0
  51. package/tests/tiledmap-multi-layers.spec.ts +99 -0
  52. package/tests/tiledmap.spec.ts +223 -0
  53. package/tsconfig.json +28 -0
  54. package/vite.config.ts +21 -0
@@ -0,0 +1,13 @@
1
+ import { TiledProperties } from './Properties';
2
+ export declare class TileGid extends TiledProperties {
3
+ obj?: any;
4
+ private _gid;
5
+ constructor(obj?: any);
6
+ static getRealGid(gid: number): number;
7
+ get horizontalFlip(): boolean;
8
+ get verticalFlip(): boolean;
9
+ get diagonalFlip(): boolean;
10
+ get rotatedHex120(): boolean;
11
+ get gid(): number;
12
+ set gid(val: number);
13
+ }
@@ -0,0 +1,26 @@
1
+ import { TiledLayer } from '../types/Layer';
2
+ import { TiledObjectClass } from './Object';
3
+ import { TiledProperties } from './Properties';
4
+ import { Tile } from './Tile';
5
+ import { Tileset } from './Tileset';
6
+ export declare class Layer extends TiledProperties {
7
+ private tilesets;
8
+ private parent?;
9
+ cacheTiles: boolean;
10
+ tiles: (Tile | undefined)[];
11
+ objects: TiledObjectClass[];
12
+ get size(): number;
13
+ constructor(layer: TiledLayer, tilesets: Tileset[], parent?: Layer | undefined);
14
+ createTile(gid: number, tileIndex: number, layerIndex?: number): Tile | undefined;
15
+ private mergePropertiesWithParent;
16
+ private propertiesTiles;
17
+ private mapObjects;
18
+ getTileByIndex(tileIndex: number): Tile | undefined;
19
+ static findTileSet(gid: number, tileSets: Tileset[]): Tileset | undefined;
20
+ getLayerParent(): Layer | undefined;
21
+ tilesForEach(cb: (tile: Tile | undefined, index: number) => void): void;
22
+ setData(tileIndex: number, gid: number): void;
23
+ }
24
+ export interface Layer extends TiledLayer {
25
+ objects: TiledObjectClass[];
26
+ }
@@ -0,0 +1,232 @@
1
+ import { TiledLayer } from '../types/Layer';
2
+ import { TiledMap } from '../types/Map';
3
+ import { TiledTileset } from '../types/Tileset';
4
+ import { Layer } from './Layer';
5
+ import { TiledObjectClass } from './Object';
6
+ import { TiledProperties } from './Properties';
7
+ import { Tile } from './Tile';
8
+ import { Tileset } from './Tileset';
9
+ export interface TileInfo {
10
+ tiles: Tile[];
11
+ hasCollision: boolean | undefined;
12
+ isClimbable?: boolean | undefined;
13
+ isOverlay: boolean | undefined;
14
+ objectGroups: TiledObjectClass[];
15
+ tileIndex: number;
16
+ }
17
+ export interface GetTileOptions {
18
+ populateTiles?: boolean;
19
+ }
20
+ export declare let bufferTilesets: {};
21
+ export declare class MapClass extends TiledProperties {
22
+ /**
23
+ * @title Data of map
24
+ * @prop {object} [data]
25
+ * @readonly
26
+ * @memberof Map
27
+ * @memberof RpgSceneMap
28
+ * */
29
+ data: TiledMap;
30
+ tilesets: Tileset[];
31
+ layers: Layer[];
32
+ private tmpLayers;
33
+ private tilesIndex;
34
+ /**
35
+ * Allows to define the size of ArrayBuffer to keep in memory the tiles of the map
36
+ */
37
+ private allocateMemory;
38
+ /**
39
+ * If set to true, the memory allocation will take only one tile (the tile of the last layer)
40
+ */
41
+ private lowMemory;
42
+ constructor(map?: TiledMap);
43
+ load(map: TiledMap): void;
44
+ /**
45
+ * @title Width of the map in pixels
46
+ * @prop {number} [widthPx]
47
+ * @readonly
48
+ * @memberof Map
49
+ * @memberof RpgSceneMap
50
+ * */
51
+ get widthPx(): number;
52
+ /**
53
+ * @title Height of the map in pixels
54
+ * @prop {number} [heightPx]
55
+ * @readonly
56
+ * @memberof Map
57
+ * @memberof RpgSceneMap
58
+ * */
59
+ get heightPx(): number;
60
+ /**
61
+ * @title The depth of the map in pixels (this is the height of a tile ;))
62
+ * @prop {number} map.zTileHeight
63
+ * @readonly
64
+ * @memberof Map
65
+ * @memberof RpgSceneMap
66
+ * */
67
+ get zTileHeight(): number;
68
+ /**
69
+ * Find a layer by name. Returns `undefined` is the layer is not found
70
+
71
+ * @title Get Layer by name
72
+ * @method map.getLayerByName(name)
73
+ * @param {string} name layer name
74
+ * @returns {LayerInfo | undefined}
75
+ * @example
76
+ * ```ts
77
+ * const tiles = map.getLayerByName(0, 0)
78
+ * ```
79
+ * @memberof Map
80
+ * @memberof RpgSceneMap
81
+ */
82
+ getLayerByName(name: string): TiledLayer | undefined;
83
+ /**
84
+ * Get the tile index on the tileset
85
+ *
86
+ * @title Get index of tile
87
+ * @method map.getTileIndex(x,y)
88
+ * @param {number} x Position X
89
+ * @param {number} x Position Y
90
+ * @returns {number}
91
+ * @memberof Map
92
+ * @memberof RpgSceneMap
93
+ */
94
+ getTileIndex(x: number, y: number, [z]?: [number]): number;
95
+ getTilePosition(index: number): {
96
+ x: number;
97
+ y: number;
98
+ };
99
+ /**
100
+ * Find the point of origin (top left) of a tile. Of course, its position depends on the size of the tile
101
+
102
+ * @title Get origin position of tile
103
+ * @method map.getTileOriginPosition(x,y)
104
+ * @param {number} x Position X
105
+ * @param {number} x Position Y
106
+ * @returns { {x: number, y: number }}
107
+ * @example
108
+ * ```ts
109
+ * // If the size of a tile is 32x32px
110
+ * const position = map.getTileOriginPosition(35, 12)
111
+ * console.log(position) // { x: 32, y: 0 }
112
+ * ```
113
+ * @memberof Map
114
+ * @memberof RpgSceneMap
115
+ */
116
+ getTileOriginPosition(x: number, y: number): {
117
+ x: number;
118
+ y: number;
119
+ };
120
+ /**
121
+ * Recover tiles according to a position
122
+
123
+ * @title Get tile by position
124
+ * @method map.getTileByPosition(x,y)
125
+ * @param {number} x Position X
126
+ * @param {number} x Position Y
127
+ * @returns {TileInfo}
128
+ * @example
129
+ * ```ts
130
+ * const tiles = map.getTileByPosition(0, 0)
131
+ * ```
132
+ * @memberof Map
133
+ * @memberof RpgSceneMap
134
+ */
135
+ getTileByPosition(x: number, y: number, z?: [number, number], options?: GetTileOptions): TileInfo;
136
+ /**
137
+ * Retrieves tiles according to its index
138
+
139
+ * @title Get tile by index
140
+ * @method map.getTileByIndex(tileIndex)
141
+ * @param {number} tileIndex tile index
142
+ * @returns {TileInfo}
143
+ * @example
144
+ * ```ts
145
+ * const index = map.getTileIndex(0, 0)
146
+ * const tiles = map.getTileByIndex(index)
147
+ * ```
148
+ * @memberof Map
149
+ * @memberof RpgSceneMap
150
+ */
151
+ getTileByIndex(tileIndex: number, zPlayer?: [number, number], options?: GetTileOptions): TileInfo;
152
+ getAllObjects(): TiledObjectClass[];
153
+ getData(): {
154
+ layers: Layer[];
155
+ type: "map";
156
+ version: number;
157
+ width: number;
158
+ height: number;
159
+ hexsidelength: number;
160
+ tileheight: number;
161
+ tilewidth: number;
162
+ backgroundcolor: string;
163
+ compressionlevel: number;
164
+ infinite: boolean;
165
+ nextlayerid: number;
166
+ nextobjectid: number;
167
+ orientation: "orthogonal" | "isometric" | "staggered" | "hexagonal";
168
+ properties: {
169
+ [key: string]: any;
170
+ };
171
+ tilesets: TiledTileset[];
172
+ renderorder: "right-down" | "right-up" | "left-down" | "left-up";
173
+ staggeraxis: "x" | "y";
174
+ staggerindex: "odd" | "even";
175
+ tiledversion: string;
176
+ class: string;
177
+ };
178
+ setTile(x: number, y: number, layerFilter: string | ((layer: any) => boolean), tileInfo: any): {
179
+ x: number;
180
+ y: number;
181
+ tiles: {
182
+ [tileIndex: number]: Tile;
183
+ };
184
+ } | never;
185
+ removeCacheTileset(name: string): void;
186
+ clearCacheTilesets(): void;
187
+ private mapTilesets;
188
+ private mapLayers;
189
+ private setTileIndex;
190
+ /**
191
+ * We multiply by 2 because 2 entries are stored for a tile: its GID and the Layer Index
192
+ *
193
+ * Example If I have 3 layers, The array will have the following form
194
+ *
195
+ * [
196
+ * GID of Layer 3,
197
+ * Layer Index of Layer 3,
198
+ * GID of Layer 2,
199
+ * Layer Index of Layer 2,
200
+ * GID of Layer 1,
201
+ * Layer Index of Layer 1,
202
+ * ... others tiles
203
+ * ]
204
+ *
205
+ * The size in memory of the map is therefore:
206
+ *
207
+ * `(map width * map height * number of layers * 4) bytes`
208
+ *
209
+ * > We multiply by 4, because an element takes 2 bytes and has 2 elements for a tile is 4 bytes in all
210
+ *
211
+ * Example (a 100x100 map with 5 layers)
212
+ *
213
+ * `100 * 100 * 5 * 4 = 200000 bytes = ~195 Kb`
214
+ *
215
+ * If we define on lowMemory then the calculation is the following
216
+ *
217
+ * `(map width * map height * 4) bytes`
218
+ *
219
+ * Example
220
+ *
221
+ * `100 * 100 * 4 = 40000 bytes = ~39 Kb`
222
+ */
223
+ private get realAllocateMemory();
224
+ /**
225
+ * We keep each tile in memory classified by z value. The values are ordered from the end to the beginning so that the first element of the array (when retrieved with getTileByIndex() is the tile on the highest layer. This way, the tile search is very fast for collisions
226
+ *
227
+ */
228
+ private addTileIndex;
229
+ private setTilesIndex;
230
+ }
231
+ export interface MapClass extends TiledMap {
232
+ }
@@ -0,0 +1,8 @@
1
+ import { TiledObject } from '../types/Objects';
2
+ import { TileGid } from './Gid';
3
+ export declare class TiledObjectClass extends TileGid {
4
+ layerName?: string;
5
+ constructor(object?: TiledObject);
6
+ }
7
+ export interface TiledObjectClass extends TiledObject {
8
+ }
@@ -0,0 +1,11 @@
1
+ export declare class TiledProperties {
2
+ properties: {
3
+ [key: string]: any;
4
+ };
5
+ class: string;
6
+ constructor(data?: any);
7
+ getProperty<P, D = undefined>(name: string, defaultValue?: D): P | D;
8
+ hasProperty(name: string): boolean;
9
+ setProperty<T>(name: string, value: T): void;
10
+ getType(): string;
11
+ }
@@ -0,0 +1,19 @@
1
+ import { TilesetTile } from '../types/Tile';
2
+ import { TileGid } from './Gid';
3
+ type TileInfo = TilesetTile & {
4
+ gid?: number;
5
+ index: number;
6
+ layerIndex?: number;
7
+ };
8
+ export declare class Tile extends TileGid {
9
+ tile: TileInfo | {
10
+ gid: number;
11
+ };
12
+ index: number;
13
+ constructor(tile: TileInfo | {
14
+ gid: number;
15
+ });
16
+ }
17
+ export interface Tile extends TileInfo {
18
+ }
19
+ export {};
@@ -0,0 +1,13 @@
1
+ import { TilesetTile } from '../types/Tile';
2
+ import { TiledTileset } from '../types/Tileset';
3
+ import { TiledProperties } from './Properties';
4
+ import { Tile } from './Tile';
5
+ export declare class Tileset extends TiledProperties {
6
+ private tileset;
7
+ private cacheTileId;
8
+ constructor(tileset: TiledTileset);
9
+ addTile(tileObj: TilesetTile): Tile;
10
+ getTile(id: number): Tile | undefined;
11
+ }
12
+ export interface Tileset extends TiledTileset {
13
+ }
@@ -0,0 +1,11 @@
1
+ import { default as builder } from 'xmlbuilder';
2
+ export declare class Tileset {
3
+ protected nbTilesWidth: number;
4
+ protected nbTilesHeight: number;
5
+ constructor(nbTilesWidth: number, nbTilesHeight: number);
6
+ generate(attr: {
7
+ root: any;
8
+ image: any;
9
+ }): builder.XMLElement;
10
+ createTile(id: number, properties: any): builder.XMLElement;
11
+ }
@@ -0,0 +1,21 @@
1
+ import { default as builder } from 'xmlbuilder';
2
+ import { Tileset } from './tileset';
3
+ export declare class Autotile extends Tileset {
4
+ private nbGroupTilesWidth;
5
+ private nbGroupTilesHeight;
6
+ private nbAnimation;
7
+ static readonly HEIGHT_TILES: number;
8
+ static readonly WIDTH_TILES: number;
9
+ constructor(nbGroupTilesWidth: number, nbGroupTilesHeight: number, nbAnimation?: number);
10
+ static getWangTiles(id: number): [number, number, number, number, number, number, number, number][];
11
+ static getRandomColor(): string;
12
+ get hasAnimation(): boolean;
13
+ getIndex(x: number, y: number): number;
14
+ generate(attr: {
15
+ root: any;
16
+ image: any;
17
+ tile: any;
18
+ }): builder.XMLElement;
19
+ generateAnimationTile(tileId: number): builder.XMLElement;
20
+ generateWangTiles(tileId?: number, name?: string): builder.XMLElement;
21
+ }
@@ -0,0 +1,16 @@
1
+ export type { TiledWorld, TiledWorldMap } from './types/WorldMaps';
2
+ export type { TiledTileset } from './types/Tileset';
3
+ export type { TiledObject } from './types/Objects';
4
+ export type { TiledImage } from './types/Types';
5
+ export { type TiledLayer, TiledLayerType } from './types/Layer';
6
+ export type { TiledText } from './types/Text';
7
+ export type { TiledMap } from './types/Map';
8
+ export { isTiledFormat } from './utils';
9
+ export { TiledParser } from './parser/parser';
10
+ export { TiledProperties } from './classes/Properties';
11
+ export { Tile } from './classes/Tile';
12
+ export { Layer } from './classes/Layer';
13
+ export { Tileset } from './classes/Tileset';
14
+ export { TiledObjectClass } from './classes/Object';
15
+ export { TiledParserFile } from './parser/open-file';
16
+ export { MapClass } from './classes/Map';