small changes

This commit is contained in:
Skillbert
2025-12-03 17:05:48 +01:00
parent a794823db0
commit 8c18280f2d
4 changed files with 42 additions and 6 deletions

View File

@@ -626,6 +626,33 @@ export class TileGrid implements TileGridSource {
}
return file;
}
// new version that includes each tile corner, not just center
// getHeightCollisionFile(x: number, z: number, level: number, xsize: number, zsize: number) {
// let file = new Uint16Array(xsize * zsize * 5);
// for (let dz = 0; dz < zsize; dz++) {
// for (let dx = 0; dx < xsize; dx++) {
// let tile = this.getTile(x + dx, z + dz, level);
// if (tile) {
// let index = (dx + dz * xsize) * 5;
// // base 3 representation of collision
// let colint = 0;
// let col = tile.effectiveCollision!;
// for (let i = 0; i < 9; i++) {
// let v = (col.walk[i] ? col.sight[i] ? 2 : 1 : 0);
// colint += Math.pow(3, i) * v;
// }
// // negative height can happen along some coastlines apparently
// file[index + 0] = Math.max(0, tile.playery00 / 16);
// file[index + 1] = Math.max(0, tile.playery01 / 16);
// file[index + 2] = Math.max(0, tile.playery10 / 16);
// file[index + 3] = Math.max(0, tile.playery11 / 16);
// file[index + 4] = colint;
// }
// }
// }
// return file;
// }
getTile(x: number, z: number, level: number) {
x -= this.xoffset;
z -= this.zoffset;

View File

@@ -1004,7 +1004,7 @@ const rendermodeHeight: RenderMode<"height"> = function (engine, config, cnf, de
}] satisfies RenderTask[]
}
const rendermodeLocs: RenderMode<"height"> = function (engine, config, cnf, deps, baseoutput, singlerect) {
const rendermodeLocs: RenderMode<"locs"> = function (engine, config, cnf, deps, baseoutput, singlerect) {
let thiscnf = cnf;
let filename = `${thiscnf.name}/${singlerect.x}-${singlerect.z}.${cnf.usegzip ? "json.gz" : "json"}`;
return [{
@@ -1026,7 +1026,7 @@ const rendermodeLocs: RenderMode<"height"> = function (engine, config, cnf, deps
}] satisfies RenderTask[];
}
const rendermodeMaplabels: RenderMode<"height"> = function (engine, config, cnf, deps, baseoutput, singlerect) {
const rendermodeMaplabels: RenderMode<"maplabels"> = function (engine, config, cnf, deps, baseoutput, singlerect) {
let thiscnf = cnf;
let filename = `${thiscnf.name}/${singlerect.x}-${singlerect.z}.${cnf.usegzip ? "json.gz" : "json"}`;
return [{

View File

@@ -8,6 +8,7 @@ import { getOrInsert } from "../utils";
export async function getSequenceGroups(output: ScriptOutput, outdir: ScriptFS, source: CacheFileSource) {
let frametoframemap = new Map<number, number>();
output.log(`starting frames`)
let framesindex = await source.getCacheIndex(cacheMajors.frames);
for (let frameid of framesindex) {
if (!frameid) { continue; }
@@ -20,16 +21,24 @@ export async function getSequenceGroups(output: ScriptOutput, outdir: ScriptFS,
}
output.log(`completed frames`);
output.log(`starting skeletals`)
let skeletaltoframemap = new Map<number, number>();
let skeletalindex = await source.getCacheIndex(cacheMajors.skeletalAnims);
for (let skeletalid of skeletalindex) {
if (!skeletalid) { continue; }
let animfile = await source.getFileById(cacheMajors.skeletalAnims, skeletalid.minor);
let anim = parse.skeletalAnim.read(animfile, source);
skeletaltoframemap.set(skeletalid.minor, anim.framebase);
try {
let animfile = await source.getFileById(cacheMajors.skeletalAnims, skeletalid.minor);
let anim = parse.skeletalAnim.read(animfile, source);
skeletaltoframemap.set(skeletalid.minor, anim.framebase);
} catch (e) {
// currently known error in the bzip2 decompression on file 56.2242
// seems like an error in the js bzip2 implementation
output.log(`failed to parse skeletal ${skeletalid.minor}`);
}
}
output.log(`completed skeletals`);
output.log(`starting sequences`);
let seqperframemap = new Map<number, number[]>();
let sequenceindex = await source.getCacheIndex(cacheMajors.sequences);
for (let seqid of sequenceindex) {

View File

@@ -107,7 +107,7 @@ export async function renderCutscene(engine: CacheFileSource, file: Buffer) {
}
let positionstyle = `position:absolute; top:0px; left:0px; transform-origin:center;margin-left:${-img.width / 2}px; margin-top:${-img.height / 2}px;`;
html += `<img src="${pngfile}" width="${img.width}" height="${img.height}" style="${positionstyle} animation:${anims.join()};">\n`;
html += `<img data-spriteid="${img.spriteid}" src="${pngfile}" width="${img.width}" height="${img.height}" style="${positionstyle} animation:${anims.join()};">\n`;
}
}
html += "</div>";