diff --git a/src/3d/mapsquare.ts b/src/3d/mapsquare.ts index 892bf5b..5d1b96a 100644 --- a/src/3d/mapsquare.ts +++ b/src/3d/mapsquare.ts @@ -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; diff --git a/src/map/index.ts b/src/map/index.ts index 7636e21..5c5300e 100644 --- a/src/map/index.ts +++ b/src/map/index.ts @@ -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 [{ diff --git a/src/scripts/groupskeletons.ts b/src/scripts/groupskeletons.ts index 3d41e12..aa1de2c 100644 --- a/src/scripts/groupskeletons.ts +++ b/src/scripts/groupskeletons.ts @@ -8,6 +8,7 @@ import { getOrInsert } from "../utils"; export async function getSequenceGroups(output: ScriptOutput, outdir: ScriptFS, source: CacheFileSource) { let frametoframemap = new Map(); + 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(); 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(); let sequenceindex = await source.getCacheIndex(cacheMajors.sequences); for (let seqid of sequenceindex) { diff --git a/src/scripts/rendercutscene.ts b/src/scripts/rendercutscene.ts index 539d0d4..8ce324d 100644 --- a/src/scripts/rendercutscene.ts +++ b/src/scripts/rendercutscene.ts @@ -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 += `\n`; + html += `\n`; } } html += "";