ba-memorial-lobby-wallpaper-toolkit 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/asset-layout.d.ts +6 -0
- package/dist/asset-layout.d.ts.map +1 -0
- package/dist/asset-layout.js +23 -0
- package/dist/asset-layout.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/media.d.ts +6 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/media.js +37 -0
- package/dist/media.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-layout.d.ts","sourceRoot":"","sources":["../src/asset-layout.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW;aAAK,IAAI,EAAE,CAAC;aAAE,IAAI,EAAE,CAAC;CAAW,CAAC;AAEzD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAgB5E"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
export const TIER_SCALES = { "4k": 2, "8k": 4 };
|
|
3
|
+
export function assetLayout(config) {
|
|
4
|
+
const { PROJECT, WALLPAPER_DEFINITION: definition, VOICE_LOCALES, DIALOGUES } = config;
|
|
5
|
+
const binary = definition.model.binary;
|
|
6
|
+
const binaryBase = path.posix.basename(binary).replace(/\.(skel|json)$/, "");
|
|
7
|
+
const binaryDir = path.posix.dirname(binary);
|
|
8
|
+
const atlases = Object.entries(definition.model.atlases);
|
|
9
|
+
const baseTierEntry = atlases.find(([, atlasPath]) => path.posix.dirname(atlasPath) === binaryDir);
|
|
10
|
+
if (!baseTierEntry)
|
|
11
|
+
throw new Error("config.model.atlases must include one tier whose path shares the model.binary directory");
|
|
12
|
+
const [baseTier, baseAtlasPath] = baseTierEntry;
|
|
13
|
+
const tierFolders = new Map(atlases.map(([tier, atlasPath]) => [tier, path.posix.dirname(atlasPath).split("/").pop()]));
|
|
14
|
+
const voice = [];
|
|
15
|
+
for (const locale of VOICE_LOCALES)
|
|
16
|
+
for (const dialogue of DIALOGUES)
|
|
17
|
+
for (const line of dialogue.lines) {
|
|
18
|
+
const id = line.id.toLowerCase();
|
|
19
|
+
voice.push({ locale, id, relative: `audio/${locale}/${id}.ogg` });
|
|
20
|
+
}
|
|
21
|
+
return { slug: PROJECT.slug, binaryBase, baseTier, baseAtlasPath, tierFolders, voice, bgmFile: definition.audio?.bgm ? path.posix.basename(definition.audio.bgm.path) : null, bgm: definition.audio?.bgm ?? null, dialogueCount: DIALOGUES.length };
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=asset-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-layout.js","sourceRoot":"","sources":["../src/asset-layout.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAW,CAAC;AAEzD,MAAM,UAAU,WAAW,CAAC,MAA2B;IACrD,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IACvF,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAuB,CAAC;IAC/E,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAC;IACnG,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAC;IAC/H,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,aAAa,CAAC;IAChD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACxH,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,KAAK,MAAM,MAAM,IAAI,aAAa;QAAE,KAAK,MAAM,QAAQ,IAAI,SAAS;YAAE,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACxG,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACpE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,IAAI,IAAI,EAAE,aAAa,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;AACtP,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC"}
|
package/dist/media.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAQ,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAc5G"}
|
package/dist/media.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export function gifMetadata(bytes, source = "GIF") {
|
|
2
|
+
const signature = bytes.subarray(0, 6).toString("ascii");
|
|
3
|
+
if (signature !== "GIF87a" && signature !== "GIF89a")
|
|
4
|
+
throw new Error(`Invalid GIF file: ${source}`);
|
|
5
|
+
const width = bytes.readUInt16LE(6);
|
|
6
|
+
const height = bytes.readUInt16LE(8);
|
|
7
|
+
const packed = bytes[10];
|
|
8
|
+
let offset = 13 + ((packed & 0x80) ? 3 * (2 ** ((packed & 0x07) + 1)) : 0);
|
|
9
|
+
let frames = 0;
|
|
10
|
+
const skipSubBlocks = () => { while (offset < bytes.length) {
|
|
11
|
+
const length = bytes[offset++];
|
|
12
|
+
if (length === 0)
|
|
13
|
+
return;
|
|
14
|
+
offset += length;
|
|
15
|
+
} throw new Error(`Truncated GIF data: ${source}`); };
|
|
16
|
+
while (offset < bytes.length) {
|
|
17
|
+
const marker = bytes[offset++];
|
|
18
|
+
if (marker === 0x3b)
|
|
19
|
+
break;
|
|
20
|
+
if (marker === 0x21) {
|
|
21
|
+
offset += 1;
|
|
22
|
+
skipSubBlocks();
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
if (marker !== 0x2c || offset + 9 > bytes.length)
|
|
26
|
+
throw new Error(`Invalid GIF block: ${source}`);
|
|
27
|
+
frames += 1;
|
|
28
|
+
const imagePacked = bytes[offset + 8];
|
|
29
|
+
offset += 9;
|
|
30
|
+
if (imagePacked & 0x80)
|
|
31
|
+
offset += 3 * (2 ** ((imagePacked & 0x07) + 1));
|
|
32
|
+
offset += 1;
|
|
33
|
+
skipSubBlocks();
|
|
34
|
+
}
|
|
35
|
+
return { width, height, frames };
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=media.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,MAAM,GAAG,KAAK;IACvD,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;IACrG,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;IACpG,IAAI,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,IAAI,MAAM,GAAG,CAAC,CAAC;IAC3F,MAAM,aAAa,GAAG,GAAG,EAAE,GAAG,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAAC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAAC,IAAI,MAAM,KAAK,CAAC;YAAE,OAAO;QAAC,MAAM,IAAI,MAAM,CAAC;IAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChM,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAAC,IAAI,MAAM,KAAK,IAAI;YAAE,MAAM;QAC3D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAAC,MAAM,IAAI,CAAC,CAAC;YAAC,aAAa,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAChE,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAC;QAClG,MAAM,IAAI,CAAC,CAAC;QAAC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAAC,MAAM,IAAI,CAAC,CAAC;QAChE,IAAI,WAAW,GAAG,IAAI;YAAE,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAAC,MAAM,IAAI,CAAC,CAAC;QAAC,aAAa,EAAE,CAAC;IACxG,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACnC,CAAC"}
|