Skip to content

Commit 43f5e1c

Browse files
committed
Fix animations
1 parent 63fb292 commit 43f5e1c

File tree

5 files changed

+20
-37
lines changed

5 files changed

+20
-37
lines changed

dist/Optimizer.js

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -207,9 +207,6 @@ class Optimizer {
207207
}
208208
return 0;
209209
}
210-
const newTileId = this.optimizedTiles.size + 1;
211-
this.optimizedTiles.set(unflippedTileId, newTileId);
212-
let newTileData = undefined;
213210
if (!oldTileset.firstgid) {
214211
throw new Error(`firstgid property is undefined on ${oldTileset.name} tileset`);
215212
}
@@ -219,13 +216,17 @@ class Optimizer {
219216
if (oldTileset.tiles) {
220217
tileData = oldTileset.tiles.find((tile) => tile.id === oldTileIdInTileset);
221218
if (tileData && tileData.animation) {
222-
const animationTilesNotAnalyzeYet = tileData.animation.filter((animation) => !this.optimizedTiles.has(oldFirstgid + animation.tileid));
223-
if (animationTilesNotAnalyzeYet.length + this.currentExtractedTiles.length >=
224-
this.tilesetMaxTileCount) {
219+
if (tileData.animation.length + this.currentExtractedTiles.length > this.tilesetMaxTileCount) {
220+
for (let i = 1; i < this.tilesetMaxTileCount - this.currentExtractedTiles.length; i++) {
221+
this.optimizedTiles.set(-1, this.optimizedTiles.size + i);
222+
}
225223
await this.currentTilesetRendering();
226224
}
227225
}
228226
}
227+
const newTileId = this.optimizedTiles.size + 1;
228+
this.optimizedTiles.set(unflippedTileId, newTileId);
229+
let newTileData = undefined;
229230
this.currentExtractedTiles.push(this.extractTile(oldTileset, unflippedTileId));
230231
const newTileIdInTileset = this.currentExtractedTiles.length - 1;
231232
if (oldTileset.properties) {
@@ -255,13 +256,6 @@ class Optimizer {
255256
if (tileData.animation) {
256257
newTileData.animation = [];
257258
for (const frame of tileData.animation) {
258-
if (frame.tileid === 0) {
259-
newTileData.animation.push({
260-
duration: frame.duration,
261-
tileid: 0,
262-
});
263-
continue;
264-
}
265259
this.optimizeNewTile(oldFirstgid + frame.tileid);
266260
newTileData.animation.push({
267261
duration: frame.duration,

example/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { optimize } from "../src";
22

33
async function run() {
4-
await optimize("./example/map.json", { logs: 2 });
4+
await optimize("./example/map.tmj", { logs: 2 });
55
console.log("Optimization finished");
66
}
77

File renamed without changes.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "wa-map-optimizer",
3-
"version": "1.3.5",
3+
"version": "1.3.6",
44
"description": "WorkAdventure Map Optimizer! Does your map need a diet?",
55
"main": "./dist/index.js",
66
"repository": "https://github.com/nolway/wa-map-optimizer",

src/Optimizer.ts

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -248,12 +248,6 @@ export class Optimizer {
248248
return 0;
249249
}
250250

251-
const newTileId = this.optimizedTiles.size + 1;
252-
253-
this.optimizedTiles.set(unflippedTileId, newTileId);
254-
255-
let newTileData: ITiledMapTile | undefined = undefined;
256-
257251
if (!oldTileset.firstgid) {
258252
throw new Error(`firstgid property is undefined on ${oldTileset.name} tileset`);
259253
}
@@ -267,19 +261,22 @@ export class Optimizer {
267261
tileData = oldTileset.tiles.find((tile) => tile.id === oldTileIdInTileset);
268262

269263
if (tileData && tileData.animation) {
270-
const animationTilesNotAnalyzeYet = tileData.animation.filter(
271-
(animation) => !this.optimizedTiles.has(oldFirstgid + animation.tileid)
272-
);
273-
274-
if (
275-
animationTilesNotAnalyzeYet.length + this.currentExtractedTiles.length >=
276-
this.tilesetMaxTileCount
277-
) {
264+
if (tileData.animation.length + this.currentExtractedTiles.length > this.tilesetMaxTileCount) {
265+
for (let i = 1; i < this.tilesetMaxTileCount - this.currentExtractedTiles.length; i++) {
266+
this.optimizedTiles.set(-1, this.optimizedTiles.size + i);
267+
}
268+
278269
await this.currentTilesetRendering();
279270
}
280271
}
281272
}
282273

274+
const newTileId = this.optimizedTiles.size + 1;
275+
276+
this.optimizedTiles.set(unflippedTileId, newTileId);
277+
278+
let newTileData: ITiledMapTile | undefined = undefined;
279+
283280
this.currentExtractedTiles.push(this.extractTile(oldTileset, unflippedTileId));
284281

285282
const newTileIdInTileset = this.currentExtractedTiles.length - 1;
@@ -316,14 +313,6 @@ export class Optimizer {
316313
if (tileData.animation) {
317314
newTileData.animation = [];
318315
for (const frame of tileData.animation) {
319-
if (frame.tileid === 0) {
320-
newTileData.animation.push({
321-
duration: frame.duration,
322-
tileid: 0,
323-
});
324-
continue;
325-
}
326-
327316
this.optimizeNewTile(oldFirstgid + frame.tileid);
328317

329318
newTileData.animation.push({

0 commit comments

Comments
 (0)