mirror of
https://github.com/skillbert/rsmv.git
synced 2025-12-23 21:47:48 -05:00
small changes
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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 [{
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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>";
|
||||
|
||||
Reference in New Issue
Block a user