This commit is contained in:
33333-33333 2026-07-15 14:44:29 +09:00
commit 63e10af865
86 changed files with 5400 additions and 1209 deletions

View file

@ -23,6 +23,7 @@
"itemIndex",
"normalItems",
"physicsItems",
"achievementMetadata",
]);
let lastEncodeStats = null;
let lastDecodeStats = null;
@ -1225,7 +1226,7 @@
const angle = defaultAngleMilli(type);
writeFixedSignedDefaults(writer, list, [angle, 0, angle, Math.round(35 * Math.PI / 180 * 1000), Math.round(48 * Math.PI / 180 * 1000), 0, angle], 7);
}
else if (type === "pressure_switch") writeFixedSignedDefaults(writer, list, [0, 1, 220, 160], 4);
else if (type === "pressure_switch") writeFixedSignedDefaults(writer, list, [0, 0, 10, 220, 160, 360, 1080], 7);
else if (isRotatableSaveType(type)) writeFixedSignedDefaults(writer, list, [defaultAngleMilli(type), 0], 2);
else if (isServingFoodSaveType(type)) writeFixedSignedDefaults(writer, list, [row?.[3] || 0, row?.[3] || 0], 2);
else writeGenericExtra(writer, list);
@ -1252,7 +1253,7 @@
const angle = defaultAngleMilli(type);
return readFixedSignedDefaults(reader, [angle, 0, angle, Math.round(35 * Math.PI / 180 * 1000), Math.round(48 * Math.PI / 180 * 1000), 0, angle], 7);
}
if (type === "pressure_switch") return readFixedSignedDefaults(reader, [0, 1, 220, 160], 4);
if (type === "pressure_switch") return readFixedSignedDefaults(reader, [0, 0, 10, 220, 160, 360, 1080], 7);
if (isRotatableSaveType(type)) return readFixedSignedDefaults(reader, [defaultAngleMilli(type), 0], 2);
if (isServingFoodSaveType(type)) return readFixedSignedDefaults(reader, [row?.[3] || 0, row?.[3] || 0], 2);
return readGenericExtra(reader);
@ -1489,6 +1490,7 @@
tarinaiRows.forEach((row, index) => writer.category("tarinaiBasic", () => writeTarinaiPayload(writer, row || [], tarinaiMetas[index], tarCoordState, worldSeed, index)));
const itemRows = Array.isArray(snapshot.i) ? snapshot.i : [];
writeItemBlocks(writer, itemRows);
writer.category("achievementMetadata", () => writer.str(JSON.stringify(snapshot.g || null)));
return writer.out();
} finally {
activeStringWriteMap = null;
@ -1511,8 +1513,15 @@
const tarinaiHeaders = readTarinaiBitPlane(reader, tCount);
for (let i = 0; i < tCount; i++) t.push(readTarinaiPayload(reader, tarinaiHeaders[i], tarCoordState, String(w?.[8] || ""), i));
const items = readItemBlocks(reader);
let g = null;
try {
const encodedMetadata = reader.str();
g = encodedMetadata ? JSON.parse(encodedMetadata) : null;
} catch (_) {
throw new Error("invalid achievement metadata in binary save");
}
if (reader.pos !== reader.bytes.length) throw new Error("trailing bytes in binary save");
return { v: Snapshot.version, a: "tj1", m: summaryFromPayload(w, t.length), w, t, i: items };
return { v: Snapshot.version, a: "tj1", m: summaryFromPayload(w, t.length), w, t, i: items, g };
} finally {
activeStringReadList = null;
}