Skip to content

Commit

Permalink
load idle animation, fixed outfits PHP script
Browse files Browse the repository at this point in the history
  • Loading branch information
gesior committed Mar 15, 2020
1 parent cca0b9b commit 4b473e5
Show file tree
Hide file tree
Showing 15 changed files with 299 additions and 367 deletions.
1 change: 1 addition & 0 deletions itemImageGenerator.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
Sprite file: <input type="file" id="spr" /><br />
Dat file: <input type="file" id="dat" /><br />
Otb file: <input type="file" id="otb" /><br />
Only pickable items: <input type="checkbox" id="onlyPickupable" checked/><br />
<br />
<button id="loadFiles">LOAD FILES</button><br />
<br />
Expand Down
34 changes: 19 additions & 15 deletions itemImageGenerator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ class ItemImageGenerator {
private sprPicker: HTMLInputElement;
private datPicker: HTMLInputElement;
private otbPicker: HTMLInputElement;
private onlyPickupableCheckbox: HTMLInputElement;
private loadFilesButton: HTMLButtonElement;
private generateImagesButton: HTMLButtonElement;

Expand All @@ -22,17 +23,20 @@ class ItemImageGenerator {
private spriteManager: SpriteManager;
private datManager: DatManager;
private otbManager: OtbManager;
private onlyPickupable = true;

init() {
this.clientVersionInput = <HTMLInputElement>document.getElementById('clientversion');
this.sprPicker = <HTMLInputElement>document.getElementById('spr');
this.datPicker = <HTMLInputElement>document.getElementById('dat');
this.otbPicker = <HTMLInputElement>document.getElementById('otb');
this.onlyPickupableCheckbox = <HTMLInputElement>document.getElementById('onlyPickupable');
this.loadFilesButton = <HTMLButtonElement>document.getElementById('loadFiles');
this.generateImagesButton = <HTMLButtonElement>document.getElementById('generateImages');

const self = this;
this.loadFilesButton.onclick = function () {
self.onlyPickupable = self.onlyPickupableCheckbox.checked;
self.loadFiles();
};
this.generateImagesButton.onclick = function () {
Expand All @@ -42,7 +46,7 @@ class ItemImageGenerator {
}
const imageGenerator = new ImageGenerator(self.datManager, self.spriteManager, self.otbManager);
const zip = new JSZip();
self.generateItemImage(imageGenerator, self.otbManager, self.datManager, zip, 0);
self.generateItemImage(imageGenerator, zip, 0);
};
}

Expand Down Expand Up @@ -127,10 +131,10 @@ class ItemImageGenerator {
}
}

generateItemImage(imageGenerator: ImageGenerator, otbManager: OtbManager, datManager: DatManager, zip, serverId: number) {
generateItemImage(imageGenerator: ImageGenerator, zip, serverId: number) {
const self = this;
this.progressValue(serverId, otbManager.getLastId());
if (serverId > otbManager.getLastId()) {
this.progressValue(serverId, this.otbManager.getLastId());
if (serverId > this.otbManager.getLastId()) {
this.progressText('Packing images to ZIP file, please wait (it may take a while)');
zip.generateAsync({type: "blob"}).then(function (blob: Blob) {
console.log('zip size', blob.size);
Expand All @@ -140,41 +144,41 @@ class ItemImageGenerator {
return;
}

if (!otbManager.isValidOtbId(serverId)) {
if (!this.otbManager.isValidOtbId(serverId)) {
setTimeout(function () {
self.generateItemImage(imageGenerator, otbManager, datManager, zip, serverId + 1);
self.generateItemImage(imageGenerator, zip, serverId + 1);
}, 1);
return;
}

const clientItemId = otbManager.getItem(serverId).getClientId();
const clientItemId = this.otbManager.getItem(serverId).getClientId();
if (!clientItemId) {
console.log('otb ID not mapped to any dat ID', serverId);
setTimeout(function () {
self.generateItemImage(imageGenerator, otbManager, datManager, zip, serverId + 1);
self.generateItemImage(imageGenerator, zip, serverId + 1);
}, 1);
return;
}
let itemThingType = datManager.getItem(clientItemId);
let itemThingType = this.datManager.getItem(clientItemId);
if (!itemThingType) {
console.log('dat ID not found in dat file', serverId, clientItemId);
setTimeout(function () {
self.generateItemImage(imageGenerator, otbManager, datManager, zip, serverId + 1);
self.generateItemImage(imageGenerator, zip, serverId + 1);
}, 1);
return;
}
if (!itemThingType.isPickupable()) {
if (this.onlyPickupable && !itemThingType.isPickupable()) {
console.log('skip not pickupable', serverId);
setTimeout(function () {
self.generateItemImage(imageGenerator, otbManager, datManager, zip, serverId + 1);
self.generateItemImage(imageGenerator, zip, serverId + 1);
}, 1);
return;
}

const itemSprite = imageGenerator.generateItemImageByServerId(serverId);
if (!itemSprite) {
setTimeout(function () {
self.generateItemImage(imageGenerator, otbManager, datManager, zip, serverId + 1);
self.generateItemImage(imageGenerator, zip, serverId + 1);
}, 1);
return;
}
Expand All @@ -193,7 +197,7 @@ class ItemImageGenerator {
canvas.remove();
zip.file(serverId + '.png', blob);
setTimeout(function () {
self.generateItemImage(imageGenerator, otbManager, datManager, zip, serverId + 1);
self.generateItemImage(imageGenerator, zip, serverId + 1);
}, 1);

};
Expand All @@ -214,7 +218,7 @@ class ItemImageGenerator {
gif.on('finished', function (blob) {
zip.file(serverId + '.gif', blob);
setTimeout(function () {
self.generateItemImage(imageGenerator, otbManager, datManager, zip, serverId + 1);
self.generateItemImage(imageGenerator, zip, serverId + 1);
}, 1);

});
Expand Down
2 changes: 1 addition & 1 deletion modules/datFile/animator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export class Animator {
m_startPhase = 0;
m_loopCount = 0;
m_async = false;
m_phaseDurations = [];
m_phaseDurations: number[][] = [];

unserialize(animationPhases: number, fin: InputFile) {
this.m_animationPhases = animationPhases;
Expand Down
2 changes: 1 addition & 1 deletion modules/datFile/datManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ export class DatManager {
firstId = 100;

for (let id = firstId; id < this.m_thingTypes[category].length; ++id)
this.m_thingTypes[category][id].serialize(fin, this.m_client, clientTranslationArray);
this.m_thingTypes[category][id].serialize(fin, category, this.m_client, clientTranslationArray);
}
return fin;
}
Expand Down
Loading

0 comments on commit 4b473e5

Please sign in to comment.