@remvst/asset-catalog 1.2.0 → 1.3.1

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.
@@ -52,31 +52,38 @@ async function generatedCreateCatalogFunction(assetDir, tree, spritesheet) {
52
52
  const stats = await fs_1.promises.stat(item);
53
53
  const withoutExt = (0, path_1.basename)(subname, (0, path_1.extname)(subname));
54
54
  const spriteData = spritesheet?.get((0, path_1.resolve)(item)) || null;
55
- let spriteDataStr = 'null';
55
+ let spriteDataArr = null;
56
56
  if (spriteData) {
57
- spriteDataStr = `{
58
- sheet: SpriteSheetPng,
59
- frame: ${JSON.stringify(spriteData)},
60
- }`;
57
+ spriteDataArr = `expandSpriteData(SpriteSheetPng, ${spriteData.x}, ${spriteData.y}, ${spriteData.width}, ${spriteData.height})`;
61
58
  }
62
- generated += indent + ` ${(0, utils_1.lowerCamelize)(withoutExt)}: createItem({
63
- path: ${importName(assetDir, item)},
64
- width: ${dimensions.width},
65
- height: ${dimensions.height},
66
- size: ${stats.size},
67
- spriteData: ${spriteDataStr},
68
- }),\n`;
59
+ generated += indent + ` ${(0, utils_1.lowerCamelize)(withoutExt)}: createItem(expand(
60
+ ${importName(assetDir, item)},
61
+ ${dimensions.width},
62
+ ${dimensions.height},
63
+ ${stats.size},
64
+ ${spriteData ? spriteDataArr : ''}
65
+ )),\n`;
69
66
  }
70
67
  }
71
68
  generated += indent + '}';
72
69
  return generated;
73
70
  }
74
71
  let generated = '\n';
75
- generated += 'export function createTextureCatalog<T>(createItem: (opts: {path: string, width: number, height: number, size: number, spriteData: SpriteData}) => T): TextureCatalog<T> {\n';
72
+ generated += 'export function createTextureCatalog<T>(createItem: (opts: CreateItemOptions) => T): TextureCatalog<T> {\n';
76
73
  generated += ` return ${await rec(tree, ' ')};\n`;
77
74
  generated += '}\n';
78
75
  return generated;
79
76
  }
77
+ function generateExpandFunction() {
78
+ let generated = '\n';
79
+ generated += 'function expandSpriteData(sheet: string, x: number, y: number, width: number, height: number): SpriteData {\n';
80
+ generated += ` return { sheet, frame: { x, y, width, height } };\n`;
81
+ generated += '}\n\n';
82
+ generated += 'function expand(path: string, width: number, height: number, size: number, spriteData: SpriteData | null = null): CreateItemOptions {\n';
83
+ generated += ` return { path, width, height, size, spriteData };\n`;
84
+ generated += '}\n';
85
+ return generated;
86
+ }
80
87
  async function createSpritesheet(tree, outFile, excludes) {
81
88
  const bins = [];
82
89
  const padding = 1;
@@ -179,14 +186,21 @@ async function main() {
179
186
  y: number;
180
187
  width: number;
181
188
  height: number;
182
- }\n`;
189
+ }\n\n`;
183
190
  generatedFileContent += `export interface SpriteData {
184
191
  sheet: string;
185
192
  frame: Rectangle;
186
- }\n`;
187
- generatedFileContent += '\n\n';
193
+ }\n\n`;
194
+ generatedFileContent += `export interface CreateItemOptions {
195
+ path: string;
196
+ width: number;
197
+ height: number;
198
+ size: number;
199
+ spriteData: SpriteData | null;
200
+ }\n\n`;
188
201
  generatedFileContent += 'export type TextureCatalog<T> = ' + generatedTemplateInterface(tree, 'TextureCatalog');
189
202
  generatedFileContent += '\n\n';
203
+ generatedFileContent += generateExpandFunction();
190
204
  generatedFileContent += await generatedCreateCatalogFunction(argv.assetDir, tree, spritesheet);
191
205
  await fs_1.promises.writeFile(generatedTs, generatedFileContent);
192
206
  }
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remvst/asset-catalog",
3
- "version": "1.2.0",
3
+ "version": "1.3.1",
4
4
  "description": "",
5
5
  "bin": {
6
6
  "generate-image-catalog": "./lib/generate-image-catalog.js",
@@ -54,21 +54,18 @@ async function generatedCreateCatalogFunction(assetDir: string, tree: Tree, spri
54
54
  const stats = await fs.stat(item);
55
55
  const withoutExt = basename(subname, extname(subname));
56
56
  const spriteData = spritesheet?.get(resolve(item)) || null;
57
- let spriteDataStr = 'null';
57
+ let spriteDataArr: string | null = null;
58
58
  if (spriteData) {
59
- spriteDataStr = `{
60
- sheet: SpriteSheetPng,
61
- frame: ${JSON.stringify(spriteData)},
62
- }`;
59
+ spriteDataArr = `expandSpriteData(SpriteSheetPng, ${spriteData.x}, ${spriteData.y}, ${spriteData.width}, ${spriteData.height})`;
63
60
  }
64
61
 
65
- generated += indent + ` ${lowerCamelize(withoutExt)}: createItem({
66
- path: ${importName(assetDir, item)},
67
- width: ${dimensions.width},
68
- height: ${dimensions.height},
69
- size: ${stats.size},
70
- spriteData: ${spriteDataStr},
71
- }),\n`;
62
+ generated += indent + ` ${lowerCamelize(withoutExt)}: createItem(expand(
63
+ ${importName(assetDir, item)},
64
+ ${dimensions.width},
65
+ ${dimensions.height},
66
+ ${stats.size},
67
+ ${spriteData ? spriteDataArr : ''}
68
+ )),\n`;
72
69
  }
73
70
  }
74
71
  generated += indent + '}';
@@ -76,12 +73,23 @@ async function generatedCreateCatalogFunction(assetDir: string, tree: Tree, spri
76
73
  }
77
74
 
78
75
  let generated = '\n';
79
- generated += 'export function createTextureCatalog<T>(createItem: (opts: {path: string, width: number, height: number, size: number, spriteData: SpriteData}) => T): TextureCatalog<T> {\n';
76
+ generated += 'export function createTextureCatalog<T>(createItem: (opts: CreateItemOptions) => T): TextureCatalog<T> {\n';
80
77
  generated += ` return ${await rec(tree, ' ')};\n`;
81
78
  generated += '}\n';
82
79
  return generated;
83
80
  }
84
81
 
82
+ function generateExpandFunction() {
83
+ let generated = '\n';
84
+ generated += 'function expandSpriteData(sheet: string, x: number, y: number, width: number, height: number): SpriteData {\n';
85
+ generated += ` return { sheet, frame: { x, y, width, height } };\n`;
86
+ generated += '}\n\n';
87
+ generated += 'function expand(path: string, width: number, height: number, size: number, spriteData: SpriteData | null = null): CreateItemOptions {\n';
88
+ generated += ` return { path, width, height, size, spriteData };\n`;
89
+ generated += '}\n';
90
+ return generated;
91
+ }
92
+
85
93
  async function createSpritesheet(tree: Tree, outFile: string, excludes: string[]): Promise<SpritesheetResult> {
86
94
  const bins: (pack.Bin & {path: string})[] = [];
87
95
 
@@ -199,14 +207,21 @@ async function main() {
199
207
  y: number;
200
208
  width: number;
201
209
  height: number;
202
- }\n`;
210
+ }\n\n`;
203
211
  generatedFileContent += `export interface SpriteData {
204
212
  sheet: string;
205
213
  frame: Rectangle;
206
- }\n`;
207
- generatedFileContent += '\n\n';
214
+ }\n\n`;
215
+ generatedFileContent += `export interface CreateItemOptions {
216
+ path: string;
217
+ width: number;
218
+ height: number;
219
+ size: number;
220
+ spriteData: SpriteData | null;
221
+ }\n\n`;
208
222
  generatedFileContent += 'export type TextureCatalog<T> = ' + generatedTemplateInterface(tree, 'TextureCatalog');
209
223
  generatedFileContent += '\n\n';
224
+ generatedFileContent += generateExpandFunction();
210
225
  generatedFileContent += await generatedCreateCatalogFunction(argv.assetDir, tree, spritesheet);
211
226
 
212
227
  await fs.writeFile(generatedTs, generatedFileContent);