silphscope 1.4.21 → 1.4.23
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/README.md +185 -83
- package/docs/node/renderAllBalls.md +0 -0
- package/docs/node/renderAllGraphics.md +0 -0
- package/docs/node/renderAllIcons.md +0 -0
- package/docs/node/renderAllMons.md +0 -0
- package/docs/node/renderAllMoves.md +0 -0
- package/docs/node/renderAllTrainers.md +0 -0
- package/docs/node/renderAllX-options.md +0 -0
- package/item-data/itemData.json +376 -1128
- package/main.js +149 -5
- package/mon-data/monData.json +440 -4373
- package/move-data/moveData.json +0 -609
- package/package.json +3 -2
- package/silphscope.d.ts +579 -502
- package/src/graphics/balls/render-ball-particle.js +48 -26
- package/src/graphics/balls/render-balls.js +45 -22
- package/src/graphics/graphics-extractor-main.js +155 -294
- package/src/graphics/icons/render-icons.js +14 -4
- package/src/graphics/mons/render-mon-foot.js +17 -5
- package/src/graphics/mons/render-mon-icon.js +27 -6
- package/src/graphics/mons/render-mons.js +16 -7
- package/src/graphics/moves/render-moves.js +44 -29
- package/src/graphics/trainers/render-trainer-back-pics.js +52 -10
- package/src/graphics/trainers/render-trainers.js +16 -19
- package/src/is-valid-filter-type.js +15 -0
- package/src/run-with-concurrency.js +12 -0
- package/src/validate-render-options.js +28 -0
- package/trainer-data/trainerData.json +148 -444
|
@@ -45,8 +45,8 @@ export async function renderBallParticle(ballName, balls, reader, rom, options =
|
|
|
45
45
|
throw new TypeError("renderBallParticle(..., rom) requires a ROM Buffer/Uint8Array");
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
let
|
|
49
|
-
const results = returnFileBuffer? [] : null;
|
|
48
|
+
let fullFileCount = 0;
|
|
49
|
+
const results = returnFileBuffer ? [] : null;
|
|
50
50
|
const ball = balls[ballName];
|
|
51
51
|
if (!ball) {
|
|
52
52
|
throw new Error(`Missing Ball: ${ballName}`);
|
|
@@ -72,43 +72,65 @@ export async function renderBallParticle(ballName, balls, reader, rom, options =
|
|
|
72
72
|
|
|
73
73
|
const png = new PNG({ width, height });
|
|
74
74
|
png.data = image;
|
|
75
|
-
const pngBuffer = PNG.sync.write(png, {
|
|
75
|
+
const pngBuffer = PNG.sync.write(png, {
|
|
76
76
|
filterType: pngFilterType,
|
|
77
|
-
deflateLevel: pngCompressionLevel,
|
|
77
|
+
deflateLevel: pngCompressionLevel,
|
|
78
78
|
});
|
|
79
79
|
|
|
80
|
+
const dir = `${outputDir}/${ballName}`;
|
|
80
81
|
if (outputDir) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
results.push(pngBuffer);
|
|
88
|
-
}
|
|
82
|
+
await fs.promises.mkdir(dir, { recursive: true });
|
|
83
|
+
}
|
|
84
|
+
if (renderMasterBallParticleImage) {
|
|
85
|
+
if (outputDir) {
|
|
86
|
+
await fs.promises.writeFile(`${dir}/master-particle.png`, pngBuffer);
|
|
87
|
+
fullFileCount += 1;
|
|
89
88
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
89
|
+
if (returnFileBuffer) {
|
|
90
|
+
results.push({
|
|
91
|
+
name: `${ballName}-particle-full-sprite`,
|
|
92
|
+
category: "ball",
|
|
93
|
+
asset: "sprite",
|
|
94
|
+
path: `out/balls/${ballName}/master-particle`,
|
|
95
|
+
buffer: pngBuffer,
|
|
96
|
+
meta: {
|
|
97
|
+
particleOrBall: "particle",
|
|
98
|
+
},
|
|
99
99
|
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
for (let i = 0; i < ball.particleFrames.length; i++) {
|
|
103
|
+
const frame = ball.particleFrames[i];
|
|
104
|
+
const frameImageData = extractFrameFromImage(image, width, frame);
|
|
100
105
|
|
|
106
|
+
const png = new PNG({ width: frame.width, height: frame.height });
|
|
107
|
+
png.data = frameImageData;
|
|
108
|
+
const pngFrameBuffer = PNG.sync.write(png, {
|
|
109
|
+
filterType: pngFilterType,
|
|
110
|
+
deflateLevel: pngCompressionLevel,
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
if (outputDir) {
|
|
101
114
|
const fileName = `${dir}/particle-${i}.png`;
|
|
102
115
|
fs.writeFileSync(fileName, pngFrameBuffer);
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
116
|
+
fullFileCount += 1;
|
|
117
|
+
}
|
|
118
|
+
if (returnFileBuffer) {
|
|
119
|
+
results.push({
|
|
120
|
+
name: `${ballName}-particle-frame${i}`,
|
|
121
|
+
category: "ball",
|
|
122
|
+
asset: "frame",
|
|
123
|
+
path: `out/balls/${ballName}/particle-${i}`,
|
|
124
|
+
buffer: pngFrameBuffer,
|
|
125
|
+
meta: {
|
|
126
|
+
particleOrBall: "particle",
|
|
127
|
+
},
|
|
128
|
+
});
|
|
107
129
|
}
|
|
108
130
|
}
|
|
109
131
|
|
|
110
132
|
return {
|
|
111
133
|
...(returnFileBuffer && { results }),
|
|
112
|
-
|
|
134
|
+
fullFileCount,
|
|
113
135
|
};
|
|
114
136
|
}
|
|
@@ -49,7 +49,7 @@ export async function renderBall(ballName, balls, reader, rom, options = {}) {
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
let fullFileCount = 0;
|
|
52
|
-
const results = returnFileBuffer? [] : null;
|
|
52
|
+
const results = returnFileBuffer ? [] : null;
|
|
53
53
|
const ball = balls[ballName];
|
|
54
54
|
if (!ball) {
|
|
55
55
|
throw new Error(`Missing Ball: ${ballName}`);
|
|
@@ -60,9 +60,9 @@ export async function renderBall(ballName, balls, reader, rom, options = {}) {
|
|
|
60
60
|
pngCompressionLevel,
|
|
61
61
|
returnFileBuffer,
|
|
62
62
|
outputDir,
|
|
63
|
-
renderMasterBallParticleImage,
|
|
63
|
+
renderMasterBallParticleImage,
|
|
64
64
|
});
|
|
65
|
-
fullFileCount += renderBallParticleData.
|
|
65
|
+
fullFileCount += renderBallParticleData.fullFileCount;
|
|
66
66
|
if (returnFileBuffer) {
|
|
67
67
|
results.push(...renderBallParticleData.results);
|
|
68
68
|
}
|
|
@@ -87,38 +87,61 @@ export async function renderBall(ballName, balls, reader, rom, options = {}) {
|
|
|
87
87
|
|
|
88
88
|
const png = new PNG({ width, height });
|
|
89
89
|
png.data = image;
|
|
90
|
-
const pngBuffer = PNG.sync.write(png, {
|
|
90
|
+
const pngBuffer = PNG.sync.write(png, {
|
|
91
91
|
filterType: pngFilterType,
|
|
92
|
-
deflateLevel: pngCompressionLevel,
|
|
92
|
+
deflateLevel: pngCompressionLevel,
|
|
93
93
|
});
|
|
94
94
|
|
|
95
|
+
const dir = `${outputDir}/${ballName}`;
|
|
95
96
|
if (outputDir) {
|
|
96
|
-
const dir = `${outputDir}/${ballName}`;
|
|
97
97
|
await fs.promises.mkdir(dir, { recursive: true });
|
|
98
|
-
|
|
98
|
+
}
|
|
99
|
+
if (renderMasterBallImage) {
|
|
100
|
+
if (outputDir) {
|
|
99
101
|
await fs.promises.writeFile(`${dir}/master-image.png`, pngBuffer)
|
|
100
102
|
fullFileCount += 1;
|
|
101
|
-
if (returnFileBuffer) {
|
|
102
|
-
results.push(pngBuffer);
|
|
103
|
-
}
|
|
104
103
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
104
|
+
if (returnFileBuffer) {
|
|
105
|
+
results.push({
|
|
106
|
+
name: `${ballName}-full-sprite`,
|
|
107
|
+
category: "ball",
|
|
108
|
+
asset: "sprite",
|
|
109
|
+
path: `out/balls/${ballName}/master-image`,
|
|
110
|
+
buffer: pngBuffer,
|
|
111
|
+
meta: {
|
|
112
|
+
particleOrBall: "ball",
|
|
113
|
+
},
|
|
114
114
|
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
for (let i = 0; i < ball.frames.length; i++) {
|
|
119
|
+
const frame = ball.frames[i];
|
|
120
|
+
const frameImageData = extractFrameFromImage(image, width, frame);
|
|
115
121
|
|
|
122
|
+
const png = new PNG({ width: frame.width, height: frame.height });
|
|
123
|
+
png.data = frameImageData;
|
|
124
|
+
const pngFrameBuffer = PNG.sync.write(png, {
|
|
125
|
+
filterType: pngFilterType,
|
|
126
|
+
deflateLevel: pngCompressionLevel,
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
if (outputDir) {
|
|
116
130
|
const fileName = `${dir}/frame-${i}.png`;
|
|
117
131
|
await fs.promises.writeFile(fileName, pngFrameBuffer);
|
|
118
132
|
fullFileCount += 1;
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
133
|
+
}
|
|
134
|
+
if (returnFileBuffer) {
|
|
135
|
+
results.push({
|
|
136
|
+
name: `${ballName}-frame${1}`,
|
|
137
|
+
category: "ball",
|
|
138
|
+
asset: "frame",
|
|
139
|
+
path: `out/balls/${ballName}/frame-${i}`,
|
|
140
|
+
buffer: pngFrameBuffer,
|
|
141
|
+
meta: {
|
|
142
|
+
particleOrBall: "ball",
|
|
143
|
+
},
|
|
144
|
+
});
|
|
122
145
|
}
|
|
123
146
|
}
|
|
124
147
|
|