@city41/gba-convertpng 0.0.30 → 0.0.32
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/background.d.ts +1 -2
- package/dist/background.js +2 -10
- package/dist/bitmap.d.ts +1 -2
- package/dist/bitmap.js +2 -10
- package/dist/main.js +57 -49
- package/dist/palette.d.ts +1 -2
- package/dist/palette.js +3 -11
- package/dist/sprite.d.ts +1 -3
- package/dist/sprite.js +5 -19
- package/dist/types.d.ts +28 -6
- package/package.json +1 -1
package/dist/background.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import { BackgroundSpec, ProcessBackgroundResult } from "./types";
|
|
2
|
-
declare function isProcessBackgroundResult(obj: unknown): obj is ProcessBackgroundResult;
|
|
3
2
|
declare function processBackground(bg: BackgroundSpec): Promise<ProcessBackgroundResult>;
|
|
4
|
-
export { processBackground
|
|
3
|
+
export { processBackground };
|
package/dist/background.js
CHANGED
|
@@ -1,19 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.processBackground = processBackground;
|
|
4
|
-
exports.isProcessBackgroundResult = isProcessBackgroundResult;
|
|
5
4
|
const canvas_1 = require("./canvas");
|
|
6
5
|
const colors_1 = require("./colors");
|
|
7
6
|
const lodash_1 = require("lodash");
|
|
8
7
|
const palette_1 = require("./palette");
|
|
9
|
-
function isProcessBackgroundResult(obj) {
|
|
10
|
-
return (obj !== null &&
|
|
11
|
-
typeof obj === "object" &&
|
|
12
|
-
"background" in obj &&
|
|
13
|
-
typeof obj.background === "object" &&
|
|
14
|
-
obj.background !== null &&
|
|
15
|
-
"file" in obj.background);
|
|
16
|
-
}
|
|
17
8
|
function convertTileTo15Bit(rawTile) {
|
|
18
9
|
const data15 = [];
|
|
19
10
|
for (let p = 0; p < rawTile.length; p += 4) {
|
|
@@ -152,7 +143,8 @@ async function processBackground(bg) {
|
|
|
152
143
|
paletteData[0] = bg.transparentColor;
|
|
153
144
|
}
|
|
154
145
|
return {
|
|
155
|
-
|
|
146
|
+
type: "Background",
|
|
147
|
+
spec: bg,
|
|
156
148
|
canvas,
|
|
157
149
|
map,
|
|
158
150
|
palette: paletteData,
|
package/dist/bitmap.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import { BitmapSpec, ProcessBitmapResult } from "./types";
|
|
2
|
-
declare function isProcessBitmapResult(obj: unknown): obj is ProcessBitmapResult;
|
|
3
2
|
declare function processBitmap(bmp: BitmapSpec): Promise<ProcessBitmapResult>;
|
|
4
|
-
export { processBitmap
|
|
3
|
+
export { processBitmap };
|
package/dist/bitmap.js
CHANGED
|
@@ -1,17 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.processBitmap = processBitmap;
|
|
4
|
-
exports.isProcessBitmapResult = isProcessBitmapResult;
|
|
5
4
|
const canvas_1 = require("./canvas");
|
|
6
5
|
const colors_1 = require("./colors");
|
|
7
|
-
function isProcessBitmapResult(obj) {
|
|
8
|
-
return (obj !== null &&
|
|
9
|
-
typeof obj === "object" &&
|
|
10
|
-
"bitmap" in obj &&
|
|
11
|
-
typeof obj.bitmap === "object" &&
|
|
12
|
-
obj.bitmap !== null &&
|
|
13
|
-
"file" in obj.bitmap);
|
|
14
|
-
}
|
|
15
6
|
async function processBitmap(bmp) {
|
|
16
7
|
const canvas = await (0, canvas_1.createCanvasFromPath)(bmp.file);
|
|
17
8
|
const context = canvas.getContext("2d");
|
|
@@ -22,7 +13,8 @@ async function processBitmap(bmp) {
|
|
|
22
13
|
pixels.push(gbaColor);
|
|
23
14
|
}
|
|
24
15
|
return {
|
|
25
|
-
|
|
16
|
+
type: "Bitmap",
|
|
17
|
+
spec: bmp,
|
|
26
18
|
width: canvas.width,
|
|
27
19
|
height: canvas.height,
|
|
28
20
|
pixels,
|
package/dist/main.js
CHANGED
|
@@ -42,6 +42,16 @@ const c_1 = require("./c");
|
|
|
42
42
|
const asm_1 = require("./asm");
|
|
43
43
|
const bitmap_1 = require("./bitmap");
|
|
44
44
|
const palette_1 = require("./palette");
|
|
45
|
+
function getExportResultsFunction(spec, rootDir) {
|
|
46
|
+
let exportResults;
|
|
47
|
+
if (spec.exportResultsPath) {
|
|
48
|
+
exportResults = require(path.resolve(rootDir, spec.exportResultsPath));
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
exportResults = defaultExportResults;
|
|
52
|
+
}
|
|
53
|
+
return exportResults;
|
|
54
|
+
}
|
|
45
55
|
/**
|
|
46
56
|
* Loads the json spec from the file path and converts all file paths
|
|
47
57
|
* inside to absolute paths so the rest of the tool doesn't have to think about it
|
|
@@ -49,8 +59,10 @@ const palette_1 = require("./palette");
|
|
|
49
59
|
function hydrateJsonSpec(jsonSpecPath) {
|
|
50
60
|
const rootDir = path.dirname(jsonSpecPath);
|
|
51
61
|
const initialSpec = require(jsonSpecPath);
|
|
62
|
+
const exportResults = getExportResultsFunction(initialSpec, rootDir);
|
|
52
63
|
return {
|
|
53
64
|
...initialSpec,
|
|
65
|
+
exportResults,
|
|
54
66
|
outputDir: path.resolve(rootDir, initialSpec.outputDir),
|
|
55
67
|
format: initialSpec.format ?? "z80",
|
|
56
68
|
sprites: (initialSpec.sprites ?? []).map((s) => {
|
|
@@ -93,61 +105,53 @@ function hydrateJsonSpec(jsonSpecPath) {
|
|
|
93
105
|
file: path.resolve(rootDir, bmp.file),
|
|
94
106
|
};
|
|
95
107
|
}),
|
|
96
|
-
palettes: (initialSpec.palettes ?? []).map(p => {
|
|
108
|
+
palettes: (initialSpec.palettes ?? []).map((p) => {
|
|
97
109
|
return {
|
|
98
110
|
...p,
|
|
99
|
-
file: path.resolve(rootDir, p.file)
|
|
111
|
+
file: path.resolve(rootDir, p.file),
|
|
100
112
|
};
|
|
101
|
-
})
|
|
113
|
+
}),
|
|
102
114
|
};
|
|
103
115
|
}
|
|
104
116
|
function getBitmapDefines(result) {
|
|
105
|
-
const name = path.basename(result.
|
|
117
|
+
const name = path.basename(result.spec.file, path.extname(result.spec.file));
|
|
106
118
|
return `#define ${name.toUpperCase()}_WIDTH ${result.width}
|
|
107
119
|
#define ${name.toUpperCase()}_HEIGHT ${result.height}`;
|
|
108
120
|
}
|
|
109
121
|
function getPaletteDefines(result, file) {
|
|
110
|
-
if (
|
|
111
|
-
return
|
|
122
|
+
if (result.type === "BasicSprite") {
|
|
123
|
+
return "";
|
|
112
124
|
}
|
|
113
125
|
const name = path.basename(file, ".png");
|
|
114
126
|
return `#define ${name.toUpperCase()}_NUM_PALETTES ${result.paletteCount}`;
|
|
115
127
|
}
|
|
116
128
|
function getTileDefines(result, file) {
|
|
117
129
|
const name = path.basename(file, ".png");
|
|
118
|
-
let
|
|
130
|
+
let allFrameTileWidth = result.canvas.width / 8;
|
|
119
131
|
let tileHeight = result.canvas.height / 8;
|
|
120
132
|
let frameCountSrc = "";
|
|
121
133
|
let frameCount = 1;
|
|
122
|
-
if (
|
|
123
|
-
frameCount = result.
|
|
124
|
-
frameCountSrc = `\n#define ${name.toUpperCase()}_FRAME_COUNT ${
|
|
134
|
+
if (result.type == "BasicSprite") {
|
|
135
|
+
frameCount = result.spec.frames;
|
|
136
|
+
frameCountSrc = `\n#define ${name.toUpperCase()}_FRAME_COUNT ${frameCount}`;
|
|
125
137
|
}
|
|
126
|
-
|
|
138
|
+
let singleFrameTileWidth = allFrameTileWidth / frameCount;
|
|
139
|
+
if (singleFrameTileWidth != Math.floor(singleFrameTileWidth)) {
|
|
140
|
+
throw new Error(`getTileDefines, tile width is not an integer, got: ${singleFrameTileWidth}`);
|
|
141
|
+
}
|
|
142
|
+
return `#define ${name.toUpperCase()}_TILE_WIDTH ${singleFrameTileWidth}
|
|
127
143
|
#define ${name.toUpperCase()}_TILE_HEIGHT ${tileHeight}${frameCountSrc}`;
|
|
128
144
|
}
|
|
129
145
|
function toSrcFiles(result, format) {
|
|
130
146
|
let file;
|
|
131
|
-
if (
|
|
132
|
-
file = result.
|
|
133
|
-
}
|
|
134
|
-
else if ((0, background_1.isProcessBackgroundResult)(result)) {
|
|
135
|
-
file = result.background.file;
|
|
136
|
-
}
|
|
137
|
-
else if ((0, sprite_1.isProcessSharedPaletteSpritesResult)(result)) {
|
|
138
|
-
file = result.sprite.name;
|
|
139
|
-
}
|
|
140
|
-
else if ((0, bitmap_1.isProcessBitmapResult)(result)) {
|
|
141
|
-
file = result.bitmap.file;
|
|
142
|
-
}
|
|
143
|
-
else if ((0, palette_1.isProcessPaletteResult)(result)) {
|
|
144
|
-
file = result.palette.file;
|
|
147
|
+
if (result.type == "SharedPaletteSprites") {
|
|
148
|
+
file = result.spec.name;
|
|
145
149
|
}
|
|
146
150
|
else {
|
|
147
|
-
|
|
151
|
+
file = result.spec.file;
|
|
148
152
|
}
|
|
149
153
|
const fileRoot = path.basename(file, path.extname(file));
|
|
150
|
-
if (
|
|
154
|
+
if (result.type === "Bitmap") {
|
|
151
155
|
switch (format) {
|
|
152
156
|
case "C":
|
|
153
157
|
return {
|
|
@@ -187,7 +191,7 @@ function toSrcFiles(result, format) {
|
|
|
187
191
|
throw new Error('gba-convertpng does not support "bin"');
|
|
188
192
|
}
|
|
189
193
|
}
|
|
190
|
-
else if (
|
|
194
|
+
else if (result.type === "SharedPaletteSprites") {
|
|
191
195
|
switch (format) {
|
|
192
196
|
case "C":
|
|
193
197
|
return {
|
|
@@ -229,7 +233,7 @@ function toSrcFiles(result, format) {
|
|
|
229
233
|
throw new Error('gba-convertpng does not support "bin"');
|
|
230
234
|
}
|
|
231
235
|
}
|
|
232
|
-
else if (
|
|
236
|
+
else if (result.type === "Palette") {
|
|
233
237
|
switch (format) {
|
|
234
238
|
case "C":
|
|
235
239
|
return {
|
|
@@ -250,9 +254,7 @@ function toSrcFiles(result, format) {
|
|
|
250
254
|
case "C.inc":
|
|
251
255
|
return {
|
|
252
256
|
tile: [],
|
|
253
|
-
palette: [
|
|
254
|
-
{ src: (0, c_1.toCinc)(result.data, "w", 8), extension: "c.inc" },
|
|
255
|
-
],
|
|
257
|
+
palette: [{ src: (0, c_1.toCinc)(result.data, "w", 8), extension: "c.inc" }],
|
|
256
258
|
map: [],
|
|
257
259
|
bitmap: [],
|
|
258
260
|
};
|
|
@@ -297,7 +299,7 @@ function toSrcFiles(result, format) {
|
|
|
297
299
|
},
|
|
298
300
|
]
|
|
299
301
|
: [],
|
|
300
|
-
map: "
|
|
302
|
+
map: result.type === "Background"
|
|
301
303
|
? [
|
|
302
304
|
{
|
|
303
305
|
src: (0, c_1.toCc)(result.map, "w", 8, fileRoot + "_map", fileRoot + ".map"),
|
|
@@ -317,7 +319,7 @@ function toSrcFiles(result, format) {
|
|
|
317
319
|
palette: result.palette
|
|
318
320
|
? [{ src: (0, c_1.toCinc)(result.palette, "w", 8), extension: "c.inc" }]
|
|
319
321
|
: [],
|
|
320
|
-
map: "
|
|
322
|
+
map: result.type === "Background"
|
|
321
323
|
? [{ src: (0, c_1.toCinc)(result.map, "w", 8), extension: "c.inc" }]
|
|
322
324
|
: [],
|
|
323
325
|
bitmap: [],
|
|
@@ -332,7 +334,7 @@ function toSrcFiles(result, format) {
|
|
|
332
334
|
palette: result.palette
|
|
333
335
|
? [{ src: (0, asm_1.toAsm)(result.palette, "w", 8, format), extension: "asm" }]
|
|
334
336
|
: [],
|
|
335
|
-
map: "
|
|
337
|
+
map: result.type === "Background"
|
|
336
338
|
? [{ src: (0, asm_1.toAsm)(result.map, "w", 8, format), extension: "asm" }]
|
|
337
339
|
: [],
|
|
338
340
|
bitmap: [],
|
|
@@ -373,41 +375,47 @@ async function writeFiles(srcFiles, spec, outputDir) {
|
|
|
373
375
|
console.log("wrote", bitmapOutputPath);
|
|
374
376
|
}
|
|
375
377
|
}
|
|
378
|
+
async function defaultExportResults(results, spec, writeFiles, toSrcFiles) {
|
|
379
|
+
for (let i = 0; i < results.length; ++i) {
|
|
380
|
+
const result = results[i];
|
|
381
|
+
const srcFiles = toSrcFiles(result, spec.format);
|
|
382
|
+
await writeFiles(srcFiles, result.spec, spec.outputDir);
|
|
383
|
+
if (result.type === "SharedPaletteSprites") {
|
|
384
|
+
for (const processSubResult of result.subsprites) {
|
|
385
|
+
const srcFiles = toSrcFiles(processSubResult, spec.format);
|
|
386
|
+
await writeFiles(srcFiles, processSubResult.spec, spec.outputDir);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
376
391
|
async function main(jsonSpec) {
|
|
377
392
|
if (jsonSpec.format === "bin") {
|
|
378
393
|
throw new Error("convertpng does not support bin format");
|
|
379
394
|
}
|
|
395
|
+
const results = [];
|
|
380
396
|
for (const sprite of jsonSpec.sprites) {
|
|
381
397
|
if ((0, sprite_1.isBasicSpriteSpec)(sprite)) {
|
|
382
398
|
const processResult = await (0, sprite_1.processBasicSprite)(sprite);
|
|
383
|
-
|
|
384
|
-
await writeFiles(srcFiles, sprite, jsonSpec.outputDir);
|
|
399
|
+
results.push(processResult);
|
|
385
400
|
}
|
|
386
401
|
else {
|
|
387
402
|
const processResult = await (0, sprite_1.processSharedPaletteSprites)(sprite);
|
|
388
|
-
|
|
389
|
-
await writeFiles(srcFiles, processResult.sprite, jsonSpec.outputDir);
|
|
390
|
-
for (const processSubResult of processResult.subsprites) {
|
|
391
|
-
const srcFiles = toSrcFiles(processSubResult, jsonSpec.format);
|
|
392
|
-
await writeFiles(srcFiles, processSubResult.sprite, jsonSpec.outputDir);
|
|
393
|
-
}
|
|
403
|
+
results.push(processResult);
|
|
394
404
|
}
|
|
395
405
|
}
|
|
396
406
|
for (const bg of jsonSpec.backgrounds) {
|
|
397
407
|
const processResult = await (0, background_1.processBackground)(bg);
|
|
398
|
-
|
|
399
|
-
await writeFiles(srcFiles, bg, jsonSpec.outputDir);
|
|
408
|
+
results.push(processResult);
|
|
400
409
|
}
|
|
401
410
|
for (const bmp of jsonSpec.bitmaps) {
|
|
402
411
|
const processResult = await (0, bitmap_1.processBitmap)(bmp);
|
|
403
|
-
|
|
404
|
-
await writeFiles(srcFiles, bmp, jsonSpec.outputDir);
|
|
412
|
+
results.push(processResult);
|
|
405
413
|
}
|
|
406
414
|
for (const palette of jsonSpec.palettes) {
|
|
407
415
|
const processResult = await (0, palette_1.processPalette)(palette);
|
|
408
|
-
|
|
409
|
-
await writeFiles(srcFiles, palette, jsonSpec.outputDir);
|
|
416
|
+
results.push(processResult);
|
|
410
417
|
}
|
|
418
|
+
jsonSpec.exportResults(results, jsonSpec, writeFiles, toSrcFiles);
|
|
411
419
|
}
|
|
412
420
|
if (require.main === module) {
|
|
413
421
|
const [_tsNode, _convertpng, jsonSpecPath] = process.argv;
|
package/dist/palette.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Canvas } from "canvas";
|
|
2
2
|
import { PaletteSpec, ProcessPaletteResult } from "./types";
|
|
3
3
|
declare const MAGENTA_15: number;
|
|
4
|
-
declare function isProcessPaletteResult(obj: unknown): obj is ProcessPaletteResult;
|
|
5
4
|
declare function getForcedPalette(c: Canvas): number[];
|
|
6
5
|
declare function extractPalette(c: Canvas, pad?: boolean): number[];
|
|
7
6
|
declare function extractPalette15(data15: number[], pad?: boolean): number[];
|
|
@@ -10,4 +9,4 @@ declare function reduceCanvases(canvases: Canvas[]): {
|
|
|
10
9
|
canvas: Canvas;
|
|
11
10
|
};
|
|
12
11
|
declare function processPalette(palette: PaletteSpec): Promise<ProcessPaletteResult>;
|
|
13
|
-
export { processPalette,
|
|
12
|
+
export { processPalette, extractPalette, extractPalette15, getForcedPalette, reduceCanvases, MAGENTA_15, };
|
package/dist/palette.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MAGENTA_15 = void 0;
|
|
4
4
|
exports.processPalette = processPalette;
|
|
5
|
-
exports.isProcessPaletteResult = isProcessPaletteResult;
|
|
6
5
|
exports.extractPalette = extractPalette;
|
|
7
6
|
exports.extractPalette15 = extractPalette15;
|
|
8
7
|
exports.getForcedPalette = getForcedPalette;
|
|
@@ -13,14 +12,6 @@ const canvas_2 = require("./canvas");
|
|
|
13
12
|
const MAGENTA_24 = [255, 0, 255, 255];
|
|
14
13
|
const MAGENTA_15 = (0, colors_1.rgbToGBA15)(255, 0, 255);
|
|
15
14
|
exports.MAGENTA_15 = MAGENTA_15;
|
|
16
|
-
function isProcessPaletteResult(obj) {
|
|
17
|
-
return (obj !== null &&
|
|
18
|
-
typeof obj === "object" &&
|
|
19
|
-
"palette" in obj &&
|
|
20
|
-
typeof obj.palette === "object" &&
|
|
21
|
-
obj.palette !== null &&
|
|
22
|
-
"file" in obj.palette);
|
|
23
|
-
}
|
|
24
15
|
function is24BitMagenta(color) {
|
|
25
16
|
return (color.length === MAGENTA_24.length &&
|
|
26
17
|
color.every((channel, i) => channel === MAGENTA_24[i]));
|
|
@@ -124,8 +115,9 @@ async function processPalette(palette) {
|
|
|
124
115
|
paletteData = extractPalette(paletteCanvas, !palette.trimPalette);
|
|
125
116
|
}
|
|
126
117
|
return {
|
|
127
|
-
|
|
128
|
-
|
|
118
|
+
type: "Palette",
|
|
119
|
+
spec: palette,
|
|
120
|
+
data: paletteData,
|
|
129
121
|
};
|
|
130
122
|
}
|
|
131
123
|
//# sourceMappingURL=palette.js.map
|
package/dist/sprite.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { BasicSpriteSpec, ProcessBasicSpriteResult, ProcessSharedPaletteSpritesResult, SharedPaletteSpriteSpec, SpriteSpec } from "./types";
|
|
2
2
|
import { Canvas } from "canvas";
|
|
3
3
|
declare function isSharedPaletteSpriteSpec(obj: unknown): obj is SharedPaletteSpriteSpec;
|
|
4
|
-
declare function isProcessBasicSpriteResult(obj: unknown): obj is ProcessBasicSpriteResult;
|
|
5
|
-
declare function isProcessSharedPaletteSpritesResult(obj: unknown): obj is ProcessSharedPaletteSpritesResult;
|
|
6
4
|
declare function isBasicSpriteSpec(sprite: SpriteSpec): sprite is BasicSpriteSpec;
|
|
7
5
|
declare function processBasicSprite(sprite: BasicSpriteSpec, forcedPaletteOverride?: Canvas): Promise<ProcessBasicSpriteResult>;
|
|
8
6
|
declare function processSharedPaletteSprites(sharedPaletteSprite: SharedPaletteSpriteSpec): Promise<ProcessSharedPaletteSpritesResult>;
|
|
9
|
-
export { isBasicSpriteSpec,
|
|
7
|
+
export { isBasicSpriteSpec, isSharedPaletteSpriteSpec, processBasicSprite, processSharedPaletteSprites, };
|
|
10
8
|
export type { ProcessBasicSpriteResult, ProcessSharedPaletteSpritesResult };
|
package/dist/sprite.js
CHANGED
|
@@ -1,31 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isBasicSpriteSpec = isBasicSpriteSpec;
|
|
4
|
+
exports.isSharedPaletteSpriteSpec = isSharedPaletteSpriteSpec;
|
|
4
5
|
exports.processBasicSprite = processBasicSprite;
|
|
5
6
|
exports.processSharedPaletteSprites = processSharedPaletteSprites;
|
|
6
|
-
exports.isSharedPaletteSpriteSpec = isSharedPaletteSpriteSpec;
|
|
7
|
-
exports.isProcessBasicSpriteResult = isProcessBasicSpriteResult;
|
|
8
|
-
exports.isProcessSharedPaletteSpritesResult = isProcessSharedPaletteSpritesResult;
|
|
9
7
|
const canvas_1 = require("./canvas");
|
|
10
8
|
const palette_1 = require("./palette");
|
|
11
9
|
const tile_1 = require("./tile");
|
|
12
10
|
function isSharedPaletteSpriteSpec(obj) {
|
|
13
11
|
return typeof obj === "object" && obj !== null && "name" in obj;
|
|
14
12
|
}
|
|
15
|
-
function isProcessBasicSpriteResult(obj) {
|
|
16
|
-
return (obj !== null &&
|
|
17
|
-
typeof obj === "object" &&
|
|
18
|
-
"sprite" in obj &&
|
|
19
|
-
typeof obj.sprite === "object" &&
|
|
20
|
-
obj.sprite !== null &&
|
|
21
|
-
"file" in obj.sprite);
|
|
22
|
-
}
|
|
23
|
-
function isProcessSharedPaletteSpritesResult(obj) {
|
|
24
|
-
return (obj !== null &&
|
|
25
|
-
typeof obj === "object" &&
|
|
26
|
-
"sprite" in obj &&
|
|
27
|
-
isSharedPaletteSpriteSpec(obj.sprite));
|
|
28
|
-
}
|
|
29
13
|
function isBasicSpriteSpec(sprite) {
|
|
30
14
|
return "file" in sprite;
|
|
31
15
|
}
|
|
@@ -50,7 +34,8 @@ async function processBasicSprite(sprite, forcedPaletteOverride) {
|
|
|
50
34
|
palette[0] = sprite.transparentColor;
|
|
51
35
|
}
|
|
52
36
|
return {
|
|
53
|
-
|
|
37
|
+
type: "BasicSprite",
|
|
38
|
+
spec: sprite,
|
|
54
39
|
canvas,
|
|
55
40
|
tiles,
|
|
56
41
|
palette,
|
|
@@ -95,7 +80,8 @@ async function processSharedPaletteSprites(sharedPaletteSprite) {
|
|
|
95
80
|
commonPalette[0] = sharedPaletteSprite.transparentColor;
|
|
96
81
|
}
|
|
97
82
|
return {
|
|
98
|
-
|
|
83
|
+
type: "SharedPaletteSprites",
|
|
84
|
+
spec: sharedPaletteSprite,
|
|
99
85
|
palette: commonPalette,
|
|
100
86
|
subsprites: subspriteResults,
|
|
101
87
|
};
|
package/dist/types.d.ts
CHANGED
|
@@ -38,34 +38,56 @@ export type ImportedJsonSpec = {
|
|
|
38
38
|
backgrounds?: BackgroundSpec[];
|
|
39
39
|
bitmaps?: BitmapSpec[];
|
|
40
40
|
palettes?: PaletteSpec[];
|
|
41
|
+
exportResultsPath?: string;
|
|
42
|
+
};
|
|
43
|
+
export type SrcFile = {
|
|
44
|
+
src: string;
|
|
45
|
+
extension: string;
|
|
46
|
+
};
|
|
47
|
+
export type SrcFiles = {
|
|
48
|
+
tile: SrcFile[];
|
|
49
|
+
palette: SrcFile[];
|
|
50
|
+
map: SrcFile[];
|
|
51
|
+
bitmap: SrcFile[];
|
|
52
|
+
};
|
|
53
|
+
export type WriteFiles = (srcFiles: SrcFiles, spec: BasicSpriteSpec | BackgroundSpec | SharedPaletteSpriteSpec | BitmapSpec | PaletteSpec, outputDir: string) => Promise<void>;
|
|
54
|
+
export type ToSrcFiles = (result: ProcessBasicSpriteResult | ProcessBackgroundResult | ProcessSharedPaletteSpritesResult | ProcessBitmapResult | ProcessPaletteResult, format: Format) => SrcFiles;
|
|
55
|
+
export type ExportResults = (results: ProcessResult[], spec: JsonSpec, writeFiles: WriteFiles, toSrcFiles: ToSrcFiles) => Promise<void>;
|
|
56
|
+
export type JsonSpec = Required<Omit<ImportedJsonSpec, "exportResultsPath">> & {
|
|
57
|
+
exportResults: ExportResults;
|
|
41
58
|
};
|
|
42
|
-
export type JsonSpec = Required<ImportedJsonSpec>;
|
|
43
59
|
export type ProcessBasicSpriteResult = {
|
|
44
|
-
|
|
60
|
+
type: "BasicSprite";
|
|
61
|
+
spec: BasicSpriteSpec;
|
|
45
62
|
canvas: Canvas;
|
|
46
63
|
tiles: number[];
|
|
47
64
|
palette?: number[];
|
|
48
65
|
};
|
|
49
66
|
export type ProcessSharedPaletteSpritesResult = {
|
|
50
|
-
|
|
67
|
+
type: "SharedPaletteSprites";
|
|
68
|
+
spec: SharedPaletteSpriteSpec;
|
|
51
69
|
subsprites: ProcessBasicSpriteResult[];
|
|
52
70
|
palette: number[];
|
|
53
71
|
};
|
|
54
72
|
export type ProcessBackgroundResult = {
|
|
73
|
+
type: "Background";
|
|
55
74
|
canvas: Canvas;
|
|
56
|
-
|
|
75
|
+
spec: BackgroundSpec;
|
|
57
76
|
tiles: number[];
|
|
58
77
|
palette: number[];
|
|
59
78
|
paletteCount: number;
|
|
60
79
|
map: number[];
|
|
61
80
|
};
|
|
62
81
|
export type ProcessBitmapResult = {
|
|
63
|
-
|
|
82
|
+
type: "Bitmap";
|
|
83
|
+
spec: BitmapSpec;
|
|
64
84
|
width: number;
|
|
65
85
|
height: number;
|
|
66
86
|
pixels: number[];
|
|
67
87
|
};
|
|
68
88
|
export type ProcessPaletteResult = {
|
|
69
|
-
|
|
89
|
+
type: "Palette";
|
|
90
|
+
spec: PaletteSpec;
|
|
70
91
|
data: number[];
|
|
71
92
|
};
|
|
93
|
+
export type ProcessResult = ProcessBasicSpriteResult | ProcessSharedPaletteSpritesResult | ProcessBackgroundResult | ProcessBitmapResult | ProcessPaletteResult;
|