tilemap-parser 0.1.0

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 (191) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +53 -0
  3. package/dist/core/errors.d.ts +13 -0
  4. package/dist/core/errors.d.ts.map +1 -0
  5. package/dist/core/errors.js +13 -0
  6. package/dist/core/errors.js.map +1 -0
  7. package/dist/core/index.d.ts +7 -0
  8. package/dist/core/index.d.ts.map +1 -0
  9. package/dist/core/index.js +7 -0
  10. package/dist/core/index.js.map +1 -0
  11. package/dist/core/loaders.d.ts +19 -0
  12. package/dist/core/loaders.d.ts.map +1 -0
  13. package/dist/core/loaders.js +50 -0
  14. package/dist/core/loaders.js.map +1 -0
  15. package/dist/core/parser/animation.d.ts +35 -0
  16. package/dist/core/parser/animation.d.ts.map +1 -0
  17. package/dist/core/parser/animation.js +178 -0
  18. package/dist/core/parser/animation.js.map +1 -0
  19. package/dist/core/parser/coerce.d.ts +13 -0
  20. package/dist/core/parser/coerce.d.ts.map +1 -0
  21. package/dist/core/parser/coerce.js +109 -0
  22. package/dist/core/parser/coerce.js.map +1 -0
  23. package/dist/core/parser/collision.d.ts +98 -0
  24. package/dist/core/parser/collision.d.ts.map +1 -0
  25. package/dist/core/parser/collision.js +486 -0
  26. package/dist/core/parser/collision.js.map +1 -0
  27. package/dist/core/parser/index.d.ts +7 -0
  28. package/dist/core/parser/index.d.ts.map +1 -0
  29. package/dist/core/parser/index.js +7 -0
  30. package/dist/core/parser/index.js.map +1 -0
  31. package/dist/core/parser/map.d.ts +132 -0
  32. package/dist/core/parser/map.d.ts.map +1 -0
  33. package/dist/core/parser/map.js +416 -0
  34. package/dist/core/parser/map.js.map +1 -0
  35. package/dist/core/parser/node.d.ts +14 -0
  36. package/dist/core/parser/node.d.ts.map +1 -0
  37. package/dist/core/parser/node.js +40 -0
  38. package/dist/core/parser/node.js.map +1 -0
  39. package/dist/core/parser/particle.d.ts +68 -0
  40. package/dist/core/parser/particle.d.ts.map +1 -0
  41. package/dist/core/parser/particle.js +341 -0
  42. package/dist/core/parser/particle.js.map +1 -0
  43. package/dist/core/parser/tileanim.d.ts +31 -0
  44. package/dist/core/parser/tileanim.d.ts.map +1 -0
  45. package/dist/core/parser/tileanim.js +182 -0
  46. package/dist/core/parser/tileanim.js.map +1 -0
  47. package/dist/core/runtime/body.d.ts +27 -0
  48. package/dist/core/runtime/body.d.ts.map +1 -0
  49. package/dist/core/runtime/body.js +105 -0
  50. package/dist/core/runtime/body.js.map +1 -0
  51. package/dist/core/runtime/collision/hit.d.ts +19 -0
  52. package/dist/core/runtime/collision/hit.d.ts.map +1 -0
  53. package/dist/core/runtime/collision/hit.js +87 -0
  54. package/dist/core/runtime/collision/hit.js.map +1 -0
  55. package/dist/core/runtime/collision/index.d.ts +4 -0
  56. package/dist/core/runtime/collision/index.d.ts.map +1 -0
  57. package/dist/core/runtime/collision/index.js +4 -0
  58. package/dist/core/runtime/collision/index.js.map +1 -0
  59. package/dist/core/runtime/collision/manager.d.ts +20 -0
  60. package/dist/core/runtime/collision/manager.d.ts.map +1 -0
  61. package/dist/core/runtime/collision/manager.js +142 -0
  62. package/dist/core/runtime/collision/manager.js.map +1 -0
  63. package/dist/core/runtime/collision/shapes.d.ts +10 -0
  64. package/dist/core/runtime/collision/shapes.d.ts.map +1 -0
  65. package/dist/core/runtime/collision/shapes.js +193 -0
  66. package/dist/core/runtime/collision/shapes.js.map +1 -0
  67. package/dist/core/runtime/collision_cache.d.ts +17 -0
  68. package/dist/core/runtime/collision_cache.d.ts.map +1 -0
  69. package/dist/core/runtime/collision_cache.js +78 -0
  70. package/dist/core/runtime/collision_cache.js.map +1 -0
  71. package/dist/core/runtime/index.d.ts +9 -0
  72. package/dist/core/runtime/index.d.ts.map +1 -0
  73. package/dist/core/runtime/index.js +9 -0
  74. package/dist/core/runtime/index.js.map +1 -0
  75. package/dist/core/runtime/movement/grounded.d.ts +12 -0
  76. package/dist/core/runtime/movement/grounded.d.ts.map +1 -0
  77. package/dist/core/runtime/movement/grounded.js +97 -0
  78. package/dist/core/runtime/movement/grounded.js.map +1 -0
  79. package/dist/core/runtime/movement/index.d.ts +8 -0
  80. package/dist/core/runtime/movement/index.d.ts.map +1 -0
  81. package/dist/core/runtime/movement/index.js +8 -0
  82. package/dist/core/runtime/movement/index.js.map +1 -0
  83. package/dist/core/runtime/movement/platformer.d.ts +15 -0
  84. package/dist/core/runtime/movement/platformer.d.ts.map +1 -0
  85. package/dist/core/runtime/movement/platformer.js +419 -0
  86. package/dist/core/runtime/movement/platformer.js.map +1 -0
  87. package/dist/core/runtime/movement/queries.d.ts +21 -0
  88. package/dist/core/runtime/movement/queries.d.ts.map +1 -0
  89. package/dist/core/runtime/movement/queries.js +326 -0
  90. package/dist/core/runtime/movement/queries.js.map +1 -0
  91. package/dist/core/runtime/movement/rpg.d.ts +10 -0
  92. package/dist/core/runtime/movement/rpg.d.ts.map +1 -0
  93. package/dist/core/runtime/movement/rpg.js +47 -0
  94. package/dist/core/runtime/movement/rpg.js.map +1 -0
  95. package/dist/core/runtime/movement/runner.d.ts +52 -0
  96. package/dist/core/runtime/movement/runner.d.ts.map +1 -0
  97. package/dist/core/runtime/movement/runner.js +220 -0
  98. package/dist/core/runtime/movement/runner.js.map +1 -0
  99. package/dist/core/runtime/movement/slide.d.ts +12 -0
  100. package/dist/core/runtime/movement/slide.d.ts.map +1 -0
  101. package/dist/core/runtime/movement/slide.js +145 -0
  102. package/dist/core/runtime/movement/slide.js.map +1 -0
  103. package/dist/core/runtime/movement/types.d.ts +22 -0
  104. package/dist/core/runtime/movement/types.d.ts.map +1 -0
  105. package/dist/core/runtime/movement/types.js +21 -0
  106. package/dist/core/runtime/movement/types.js.map +1 -0
  107. package/dist/core/runtime/navigation/index.d.ts +4 -0
  108. package/dist/core/runtime/navigation/index.d.ts.map +1 -0
  109. package/dist/core/runtime/navigation/index.js +4 -0
  110. package/dist/core/runtime/navigation/index.js.map +1 -0
  111. package/dist/core/runtime/navigation/nav_grid.d.ts +36 -0
  112. package/dist/core/runtime/navigation/nav_grid.d.ts.map +1 -0
  113. package/dist/core/runtime/navigation/nav_grid.js +245 -0
  114. package/dist/core/runtime/navigation/nav_grid.js.map +1 -0
  115. package/dist/core/runtime/navigation/path_follower.d.ts +19 -0
  116. package/dist/core/runtime/navigation/path_follower.d.ts.map +1 -0
  117. package/dist/core/runtime/navigation/path_follower.js +59 -0
  118. package/dist/core/runtime/navigation/path_follower.js.map +1 -0
  119. package/dist/core/runtime/navigation/pathfinder.d.ts +8 -0
  120. package/dist/core/runtime/navigation/pathfinder.d.ts.map +1 -0
  121. package/dist/core/runtime/navigation/pathfinder.js +114 -0
  122. package/dist/core/runtime/navigation/pathfinder.js.map +1 -0
  123. package/dist/core/runtime/polygon_query.d.ts +13 -0
  124. package/dist/core/runtime/polygon_query.d.ts.map +1 -0
  125. package/dist/core/runtime/polygon_query.js +462 -0
  126. package/dist/core/runtime/polygon_query.js.map +1 -0
  127. package/dist/core/runtime/protocols.d.ts +15 -0
  128. package/dist/core/runtime/protocols.d.ts.map +1 -0
  129. package/dist/core/runtime/protocols.js +2 -0
  130. package/dist/core/runtime/protocols.js.map +1 -0
  131. package/dist/core/runtime/world.d.ts +47 -0
  132. package/dist/core/runtime/world.d.ts.map +1 -0
  133. package/dist/core/runtime/world.js +272 -0
  134. package/dist/core/runtime/world.js.map +1 -0
  135. package/dist/core/utils/geometry.d.ts +25 -0
  136. package/dist/core/utils/geometry.d.ts.map +1 -0
  137. package/dist/core/utils/geometry.js +485 -0
  138. package/dist/core/utils/geometry.js.map +1 -0
  139. package/dist/core/utils/index.d.ts +2 -0
  140. package/dist/core/utils/index.d.ts.map +1 -0
  141. package/dist/core/utils/index.js +2 -0
  142. package/dist/core/utils/index.js.map +1 -0
  143. package/dist/core/vec.d.ts +13 -0
  144. package/dist/core/vec.d.ts.map +1 -0
  145. package/dist/core/vec.js +20 -0
  146. package/dist/core/vec.js.map +1 -0
  147. package/dist/phaser/anim.d.ts +8 -0
  148. package/dist/phaser/anim.d.ts.map +1 -0
  149. package/dist/phaser/anim.js +24 -0
  150. package/dist/phaser/anim.js.map +1 -0
  151. package/dist/phaser/camera.d.ts +29 -0
  152. package/dist/phaser/camera.d.ts.map +1 -0
  153. package/dist/phaser/camera.js +19 -0
  154. package/dist/phaser/camera.js.map +1 -0
  155. package/dist/phaser/images.d.ts +13 -0
  156. package/dist/phaser/images.d.ts.map +1 -0
  157. package/dist/phaser/images.js +40 -0
  158. package/dist/phaser/images.js.map +1 -0
  159. package/dist/phaser/index.d.ts +12 -0
  160. package/dist/phaser/index.d.ts.map +1 -0
  161. package/dist/phaser/index.js +12 -0
  162. package/dist/phaser/index.js.map +1 -0
  163. package/dist/phaser/keys.d.ts +11 -0
  164. package/dist/phaser/keys.d.ts.map +1 -0
  165. package/dist/phaser/keys.js +29 -0
  166. package/dist/phaser/keys.js.map +1 -0
  167. package/dist/phaser/loader.d.ts +9 -0
  168. package/dist/phaser/loader.d.ts.map +1 -0
  169. package/dist/phaser/loader.js +23 -0
  170. package/dist/phaser/loader.js.map +1 -0
  171. package/dist/phaser/objects.d.ts +20 -0
  172. package/dist/phaser/objects.d.ts.map +1 -0
  173. package/dist/phaser/objects.js +56 -0
  174. package/dist/phaser/objects.js.map +1 -0
  175. package/dist/phaser/particles.d.ts +34 -0
  176. package/dist/phaser/particles.d.ts.map +1 -0
  177. package/dist/phaser/particles.js +24 -0
  178. package/dist/phaser/particles.js.map +1 -0
  179. package/dist/phaser/spawns.d.ts +8 -0
  180. package/dist/phaser/spawns.d.ts.map +1 -0
  181. package/dist/phaser/spawns.js +29 -0
  182. package/dist/phaser/spawns.js.map +1 -0
  183. package/dist/phaser/sprites.d.ts +23 -0
  184. package/dist/phaser/sprites.d.ts.map +1 -0
  185. package/dist/phaser/sprites.js +34 -0
  186. package/dist/phaser/sprites.js.map +1 -0
  187. package/dist/phaser/tiles.d.ts +16 -0
  188. package/dist/phaser/tiles.d.ts.map +1 -0
  189. package/dist/phaser/tiles.js +76 -0
  190. package/dist/phaser/tiles.js.map +1 -0
  191. package/package.json +79 -0
@@ -0,0 +1,245 @@
1
+ import { flippedData, iterCellEntries } from "../world.js";
2
+ import { TilesetCollision, } from "../../parser/collision.js";
3
+ import { tileKey } from "../../vec.js";
4
+ const identityIds = new WeakMap();
5
+ let nextIdentityId = 1;
6
+ function identityId(obj) {
7
+ const existing = identityIds.get(obj);
8
+ if (existing !== undefined)
9
+ return existing;
10
+ const id = nextIdentityId;
11
+ nextIdentityId += 1;
12
+ identityIds.set(obj, id);
13
+ return id;
14
+ }
15
+ export class NavGrid {
16
+ tileMap;
17
+ tilesetCollision;
18
+ tileSize;
19
+ collisionMask;
20
+ effTw;
21
+ effTh;
22
+ width;
23
+ height;
24
+ walkable;
25
+ gidResolver;
26
+ constructor(tileMap, tilesetCollision, tileSize, options = {}) {
27
+ const renderScale = options.renderScale ?? 1.0;
28
+ this.tileMap = tileMap;
29
+ this.tilesetCollision = tilesetCollision;
30
+ this.gidResolver = options.gidResolver ?? null;
31
+ this.collisionMask = options.collisionMask ?? 0xffffffff;
32
+ this.tileSize = tileSize;
33
+ this.effTw = tileSize[0] * renderScale;
34
+ this.effTh = tileSize[1] * renderScale;
35
+ if (options.mapSize !== null && options.mapSize !== undefined) {
36
+ this.width = options.mapSize[0];
37
+ this.height = options.mapSize[1];
38
+ }
39
+ else {
40
+ let w = 0;
41
+ let h = 0;
42
+ for (const key of tileMap.keys()) {
43
+ const sep = key.indexOf(";");
44
+ const tx = Number(key.slice(0, sep));
45
+ const ty = Number(key.slice(sep + 1));
46
+ if (tx >= w)
47
+ w = tx + 1;
48
+ if (ty >= h)
49
+ h = ty + 1;
50
+ }
51
+ this.width = w;
52
+ this.height = h;
53
+ }
54
+ this.walkable = [];
55
+ for (let y = 0; y < this.height; y += 1) {
56
+ const row = [];
57
+ for (let x = 0; x < this.width; x += 1) {
58
+ row.push(this.isTileWalkable(x, y));
59
+ }
60
+ this.walkable.push(row);
61
+ }
62
+ }
63
+ resolve(tileId) {
64
+ if (this.gidResolver !== null)
65
+ return this.gidResolver(tileId);
66
+ return this.tilesetCollision.tiles.get(tileId) ?? null;
67
+ }
68
+ *iterDatas(cell) {
69
+ for (const [gid, flags] of iterCellEntries(cell)) {
70
+ let data = this.resolve(gid);
71
+ if (data === null)
72
+ continue;
73
+ if (flags !== 0)
74
+ data = flippedData(data, flags, this.tileSize);
75
+ if ((this.collisionMask & data.collisionLayer) === 0)
76
+ continue;
77
+ yield data;
78
+ }
79
+ }
80
+ isTileWalkable(tx, ty) {
81
+ for (const tileData of this.iterDatas(this.tileMap.get(tileKey(tx, ty)))) {
82
+ for (const poly of tileData.shapes) {
83
+ if (poly.isValid() && !poly.oneWay)
84
+ return false;
85
+ }
86
+ }
87
+ return true;
88
+ }
89
+ inBounds(tx, ty) {
90
+ return tx >= 0 && tx < this.width && ty >= 0 && ty < this.height;
91
+ }
92
+ isSolid(tx, ty) {
93
+ if (!this.inBounds(tx, ty))
94
+ return true;
95
+ return !(this.walkable[ty]?.[tx] ?? false);
96
+ }
97
+ isWalkable(tx, ty) {
98
+ if (!this.inBounds(tx, ty))
99
+ return false;
100
+ return this.walkable[ty]?.[tx] ?? false;
101
+ }
102
+ isOneWay(tx, ty) {
103
+ let hasOneWay = false;
104
+ for (const tileData of this.iterDatas(this.tileMap.get(tileKey(tx, ty)))) {
105
+ for (const poly of tileData.shapes) {
106
+ if (!poly.isValid())
107
+ continue;
108
+ if (poly.oneWay)
109
+ hasOneWay = true;
110
+ else
111
+ return false;
112
+ }
113
+ }
114
+ return hasOneWay;
115
+ }
116
+ copy() {
117
+ const clone = Object.create(NavGrid.prototype);
118
+ clone.tileMap = this.tileMap;
119
+ clone.tilesetCollision =
120
+ this.tilesetCollision;
121
+ clone.tileSize = this.tileSize;
122
+ clone.effTw = this.effTw;
123
+ clone.effTh = this.effTh;
124
+ clone.width = this.width;
125
+ clone.height = this.height;
126
+ clone.walkable = this.walkable.map((row) => [
127
+ ...row,
128
+ ]);
129
+ clone.gidResolver =
130
+ this.gidResolver;
131
+ clone.collisionMask = this.collisionMask;
132
+ return clone;
133
+ }
134
+ erode(margin) {
135
+ const next = this.copy();
136
+ next.erodeInPlace(margin);
137
+ return next;
138
+ }
139
+ erodeInPlace(margin) {
140
+ const original = this.walkable.map((row) => [...row]);
141
+ const r = Math.ceil(margin + 0.5);
142
+ for (let sy = 0; sy < this.height; sy += 1) {
143
+ for (let sx = 0; sx < this.width; sx += 1) {
144
+ if (!original[sy]?.[sx])
145
+ continue;
146
+ const minTx = Math.max(0, sx - r);
147
+ const maxTx = Math.min(this.width - 1, sx + r);
148
+ const minTy = Math.max(0, sy - r);
149
+ const maxTy = Math.min(this.height - 1, sy + r);
150
+ for (let ty = minTy; ty <= maxTy && (this.walkable[sy]?.[sx] ?? false); ty += 1) {
151
+ for (let tx = minTx; tx <= maxTx; tx += 1) {
152
+ if (original[ty]?.[tx])
153
+ continue;
154
+ const dx = Math.abs(tx - sx);
155
+ const dy = Math.abs(ty - sy);
156
+ const distX = Math.max(0.0, dx - 0.5);
157
+ const distY = Math.max(0.0, dy - 0.5);
158
+ let dist;
159
+ if (distX === 0 && distY === 0)
160
+ dist = 0.0;
161
+ else if (distX === 0)
162
+ dist = distY;
163
+ else if (distY === 0)
164
+ dist = distX;
165
+ else
166
+ dist = Math.hypot(distX, distY);
167
+ if (dist <= margin) {
168
+ const row = this.walkable[sy];
169
+ if (row !== undefined)
170
+ row[sx] = false;
171
+ break;
172
+ }
173
+ }
174
+ }
175
+ }
176
+ }
177
+ }
178
+ static forEntity(tileMap, tilesetCollision, tileSize, spriteWidth, spriteHeight = null, renderScale = 1.0, mapSize = null, cache = null, gidResolver = null, collisionMask = 0xffffffff) {
179
+ const tw = tileSize[0] * renderScale;
180
+ const size = Math.max(spriteWidth, spriteHeight ?? spriteWidth);
181
+ const margin = size / 2.0 / tw;
182
+ // Cache key includes every input by identity/value: grids must never be
183
+ // reused across different tile maps, tileset collision data, tile sizes,
184
+ // render scales, map sizes, or gidResolver identities. Each cache is
185
+ // therefore owned by the exact combination that populated it.
186
+ const mapId = identityId(tileMap);
187
+ const collisionId = identityId(tilesetCollision);
188
+ const resolverId = gidResolver === null ? "null" : `fn:${identityId(gidResolver)}`;
189
+ const mapSizeKey = mapSize === null ? "auto" : `${mapSize[0]}x${mapSize[1]}`;
190
+ const key = [
191
+ mapId,
192
+ collisionId,
193
+ `${tileSize[0]}x${tileSize[1]}`,
194
+ renderScale,
195
+ mapSizeKey,
196
+ margin,
197
+ resolverId,
198
+ collisionMask,
199
+ ].join("|");
200
+ if (cache !== null) {
201
+ const hit = cache.get(key);
202
+ if (hit !== undefined)
203
+ return hit;
204
+ }
205
+ const nav = new NavGrid(tileMap, tilesetCollision, tileSize, {
206
+ renderScale,
207
+ mapSize,
208
+ gidResolver,
209
+ collisionMask,
210
+ }).erode(margin);
211
+ if (cache !== null)
212
+ cache.set(key, nav);
213
+ return nav;
214
+ }
215
+ getNeighbors(tx, ty, diagonals = false) {
216
+ const neighbors = [];
217
+ const orthogonal = [
218
+ [0, -1],
219
+ [0, 1],
220
+ [-1, 0],
221
+ [1, 0],
222
+ ];
223
+ for (const [dx, dy] of orthogonal) {
224
+ if (this.isWalkable(tx + dx, ty + dy))
225
+ neighbors.push([tx + dx, ty + dy]);
226
+ }
227
+ if (diagonals) {
228
+ const diagonal = [
229
+ [-1, -1],
230
+ [1, -1],
231
+ [-1, 1],
232
+ [1, 1],
233
+ ];
234
+ for (const [dx, dy] of diagonal) {
235
+ if (!this.isWalkable(tx + dx, ty + dy))
236
+ continue;
237
+ if (!this.isWalkable(tx + dx, ty) || !this.isWalkable(tx, ty + dy))
238
+ continue;
239
+ neighbors.push([tx + dx, ty + dy]);
240
+ }
241
+ }
242
+ return neighbors;
243
+ }
244
+ }
245
+ //# sourceMappingURL=nav_grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav_grid.js","sourceRoot":"","sources":["../../../../src/core/runtime/navigation/nav_grid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { TilesetCollision } from "../../parser/collision.js";
2
+ import type { Vec2 } from "../../vec.js";
3
+ import type { ICollidable } from "../protocols.js";
4
+ import type { CollisionRunner } from "../movement/runner.js";
5
+ import type { TileMap } from "../world.js";
6
+ export interface FollowResult {
7
+ readonly waypointIndex: number;
8
+ readonly done: boolean;
9
+ readonly hitWallX: boolean;
10
+ readonly hitWallY: boolean;
11
+ }
12
+ export declare class PathFollower {
13
+ readonly arrivalDistance: number;
14
+ private readonly effTw;
15
+ private readonly effTh;
16
+ constructor(effectiveTileSize: Vec2, arrivalDistance?: number | null);
17
+ updateRpg(sprite: ICollidable, path: readonly Vec2[], waypointIndex: number, runner: CollisionRunner, tilesetCollision: TilesetCollision | null, tileMap: TileMap | null, speed?: number, dt?: number): FollowResult;
18
+ }
19
+ //# sourceMappingURL=path_follower.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path_follower.d.ts","sourceRoot":"","sources":["../../../../src/core/runtime/navigation/path_follower.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,YAAY;IACvB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,iBAAiB,EAAE,IAAI,EAAE,eAAe,GAAE,MAAM,GAAG,IAAW;IAO1E,SAAS,CACP,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,SAAS,IAAI,EAAE,EACrB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,eAAe,EACvB,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,EACzC,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,KAAK,SAAQ,EACb,EAAE,SAAQ,GACT,YAAY;CAsDhB"}
@@ -0,0 +1,59 @@
1
+ export class PathFollower {
2
+ arrivalDistance;
3
+ effTw;
4
+ effTh;
5
+ constructor(effectiveTileSize, arrivalDistance = null) {
6
+ this.effTw = effectiveTileSize[0];
7
+ this.effTh = effectiveTileSize[1];
8
+ this.arrivalDistance =
9
+ arrivalDistance ?? Math.hypot(this.effTw, this.effTh) * 0.2;
10
+ }
11
+ updateRpg(sprite, path, waypointIndex, runner, tilesetCollision, tileMap, speed = 200.0, dt = 0.016) {
12
+ if (path.length === 0 || waypointIndex >= path.length) {
13
+ return { waypointIndex, done: true, hitWallX: false, hitWallY: false };
14
+ }
15
+ while (waypointIndex < path.length) {
16
+ const wp = path[waypointIndex];
17
+ if (wp === undefined)
18
+ break;
19
+ const tx = wp[0] * this.effTw + this.effTw * 0.5;
20
+ const ty = wp[1] * this.effTh + this.effTh * 0.5;
21
+ if (Math.hypot(tx - sprite.x, ty - sprite.y) < this.arrivalDistance) {
22
+ waypointIndex += 1;
23
+ }
24
+ else {
25
+ break;
26
+ }
27
+ }
28
+ if (waypointIndex >= path.length) {
29
+ return { waypointIndex, done: true, hitWallX: false, hitWallY: false };
30
+ }
31
+ const wp = path[waypointIndex];
32
+ if (wp === undefined) {
33
+ return { waypointIndex, done: true, hitWallX: false, hitWallY: false };
34
+ }
35
+ const tx = wp[0] * this.effTw + this.effTw * 0.5;
36
+ const ty = wp[1] * this.effTh + this.effTh * 0.5;
37
+ const dx = tx - sprite.x;
38
+ const dy = ty - sprite.y;
39
+ const dist = Math.hypot(dx, dy);
40
+ let deltaX = 0.0;
41
+ let deltaY = 0.0;
42
+ if (dist >= 0.01) {
43
+ const step = Math.min(speed * dt, dist);
44
+ deltaX = (dx / dist) * step;
45
+ deltaY = (dy / dist) * step;
46
+ }
47
+ const result = runner.moveRpg(sprite, tilesetCollision, tileMap, deltaX, deltaY);
48
+ if (Math.hypot(tx - sprite.x, ty - sprite.y) < this.arrivalDistance) {
49
+ waypointIndex += 1;
50
+ }
51
+ return {
52
+ waypointIndex,
53
+ done: waypointIndex >= path.length,
54
+ hitWallX: result.hitWallX,
55
+ hitWallY: result.hitWallY,
56
+ };
57
+ }
58
+ }
59
+ //# sourceMappingURL=path_follower.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path_follower.js","sourceRoot":"","sources":["../../../../src/core/runtime/navigation/path_follower.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Vec2 } from "../../vec.js";
2
+ import type { NavGrid } from "./nav_grid.js";
3
+ export declare class Pathfinder {
4
+ readonly navGrid: NavGrid;
5
+ constructor(navGrid: NavGrid);
6
+ findPath(start: Vec2, end: Vec2, maxSteps?: number): Vec2[] | null;
7
+ }
8
+ //# sourceMappingURL=pathfinder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathfinder.d.ts","sourceRoot":"","sources":["../../../../src/core/runtime/navigation/pathfinder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAoE7C,qBAAa,UAAU;IACrB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBAEd,OAAO,EAAE,OAAO;IAI5B,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,SAAO,GAAG,IAAI,EAAE,GAAG,IAAI;CAiDjE"}
@@ -0,0 +1,114 @@
1
+ function heapPush(heap, entry) {
2
+ heap.push(entry);
3
+ let i = heap.length - 1;
4
+ while (i > 0) {
5
+ const parent = Math.floor((i - 1) / 2);
6
+ const parentEntry = heap[parent];
7
+ if (parentEntry === undefined || parentEntry.f <= entry.f)
8
+ break;
9
+ const current = heap[i];
10
+ if (current === undefined)
11
+ break;
12
+ heap[i] = parentEntry;
13
+ heap[parent] = current;
14
+ i = parent;
15
+ }
16
+ }
17
+ function heapPop(heap) {
18
+ const top = heap[0];
19
+ if (top === undefined)
20
+ return null;
21
+ const last = heap.pop();
22
+ if (heap.length > 0 && last !== undefined) {
23
+ heap[0] = last;
24
+ let i = 0;
25
+ for (;;) {
26
+ const left = 2 * i + 1;
27
+ const right = 2 * i + 2;
28
+ let smallest = i;
29
+ const current = heap[i];
30
+ const leftEntry = heap[left];
31
+ const rightEntry = heap[right];
32
+ if (leftEntry !== undefined &&
33
+ current !== undefined &&
34
+ leftEntry.f < current.f) {
35
+ smallest = left;
36
+ }
37
+ const smallestEntry = heap[smallest];
38
+ if (rightEntry !== undefined &&
39
+ smallestEntry !== undefined &&
40
+ rightEntry.f < smallestEntry.f) {
41
+ smallest = right;
42
+ }
43
+ if (smallest === i)
44
+ break;
45
+ const a = heap[i];
46
+ const b = heap[smallest];
47
+ if (a === undefined || b === undefined)
48
+ break;
49
+ heap[i] = b;
50
+ heap[smallest] = a;
51
+ i = smallest;
52
+ }
53
+ }
54
+ return top;
55
+ }
56
+ function manhattan(ax, ay, bx, by) {
57
+ return Math.abs(ax - bx) + Math.abs(ay - by);
58
+ }
59
+ export class Pathfinder {
60
+ navGrid;
61
+ constructor(navGrid) {
62
+ this.navGrid = navGrid;
63
+ }
64
+ findPath(start, end, maxSteps = 2000) {
65
+ const [sx, sy] = start;
66
+ const [ex, ey] = end;
67
+ if (!this.navGrid.isWalkable(ex, ey))
68
+ return null;
69
+ const key = (x, y) => `${x},${y}`;
70
+ const open = [{ f: 0.0, x: sx, y: sy }];
71
+ const cameFrom = new Map();
72
+ const gScore = new Map([[key(sx, sy), 0.0]]);
73
+ const closed = new Set();
74
+ let steps = 0;
75
+ while (open.length > 0 && steps < maxSteps) {
76
+ const current = heapPop(open);
77
+ if (current === null)
78
+ break;
79
+ const currentKey = key(current.x, current.y);
80
+ if (closed.has(currentKey))
81
+ continue;
82
+ closed.add(currentKey);
83
+ steps += 1;
84
+ if (current.x === ex && current.y === ey) {
85
+ const path = [[current.x, current.y]];
86
+ let cursor = currentKey;
87
+ while (cameFrom.has(cursor)) {
88
+ const prev = cameFrom.get(cursor);
89
+ if (prev === undefined)
90
+ break;
91
+ cursor = prev;
92
+ const [px, py] = prev.split(",").map(Number);
93
+ path.push([px, py]);
94
+ }
95
+ return path.reverse();
96
+ }
97
+ for (const [nx, ny] of this.navGrid.getNeighbors(current.x, current.y)) {
98
+ const tentative = (gScore.get(currentKey) ?? Infinity) + 1.0;
99
+ const nKey = key(nx, ny);
100
+ if (tentative < (gScore.get(nKey) ?? Infinity)) {
101
+ cameFrom.set(nKey, currentKey);
102
+ gScore.set(nKey, tentative);
103
+ heapPush(open, {
104
+ f: tentative + manhattan(nx, ny, ex, ey),
105
+ x: nx,
106
+ y: ny,
107
+ });
108
+ }
109
+ }
110
+ }
111
+ return null;
112
+ }
113
+ }
114
+ //# sourceMappingURL=pathfinder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathfinder.js","sourceRoot":"","sources":["../../../../src/core/runtime/navigation/pathfinder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { CollisionPolygon, TilesetCollision, type TileCollisionData } from "../parser/collision.js";
2
+ import type { Vec2 } from "../vec.js";
3
+ import type { ICollidable } from "./protocols.js";
4
+ import { type TileMap } from "./world.js";
5
+ export declare function pointInPolygon(point: Vec2, vertices: readonly Vec2[]): boolean;
6
+ export declare function rectPolygonCollision(rectX: number, rectY: number, rectW: number, rectH: number, vertices: readonly Vec2[]): boolean;
7
+ export declare function circlePolygonCollision(center: Vec2, radius: number, vertices: readonly Vec2[]): boolean;
8
+ export declare function getSpriteBounds(sprite: ICollidable): [number, number, number, number];
9
+ export declare function checkSpritePolygonCollision(sprite: ICollidable, polygon: CollisionPolygon): boolean;
10
+ export declare function checkSpritePolygonOffset(sprite: ICollidable, polygon: CollisionPolygon, ox: number, oy: number, scale?: number): boolean;
11
+ export declare function rectVsTilemap(left: number, top: number, right: number, bottom: number, tileMap: TileMap, tilesetCollision: TilesetCollision, tileSize: Vec2, renderScale?: number, collisionMask?: number | null): boolean;
12
+ export declare function iterCellDatas(tilesetCollision: TilesetCollision, cell: unknown): TileCollisionData[];
13
+ //# sourceMappingURL=polygon_query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polygon_query.d.ts","sourceRoot":"","sources":["../../../src/core/runtime/polygon_query.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,gBAAgB,EAEhB,gBAAgB,EAChB,KAAK,iBAAiB,EACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAgC,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAExE,wBAAgB,cAAc,CAC5B,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,SAAS,IAAI,EAAE,GACxB,OAAO,CA0BT;AA0DD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,SAAS,IAAI,EAAE,GACxB,OAAO,CA+CT;AAwED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,IAAI,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,IAAI,EAAE,GACxB,OAAO,CA+BT;AA4CD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,GAClB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAkClC;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CA2BT;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,gBAAgB,EACzB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,KAAK,SAAM,GACV,OAAO,CAyDT;AAoFD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,IAAI,EACd,WAAW,SAAM,EACjB,aAAa,GAAE,MAAM,GAAG,IAAW,GAClC,OAAO,CA4CT;AAED,wBAAgB,aAAa,CAC3B,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,OAAO,GACZ,iBAAiB,EAAE,CAUrB"}