@nice2dev/game-engine 1.0.2 → 1.0.3

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.
Files changed (188) hide show
  1. package/dist/cjs/ai/BehaviorTree.js +1215 -0
  2. package/dist/cjs/ai/BehaviorTree.js.map +1 -0
  3. package/dist/cjs/ai/StateMachine.js +783 -0
  4. package/dist/cjs/ai/StateMachine.js.map +1 -0
  5. package/dist/cjs/editor/ShaderGraph.js +1616 -0
  6. package/dist/cjs/editor/ShaderGraph.js.map +1 -0
  7. package/dist/cjs/editor/TimelineEditor.js +819 -0
  8. package/dist/cjs/editor/TimelineEditor.js.map +1 -0
  9. package/dist/cjs/export/GodotExporter.js +1102 -0
  10. package/dist/cjs/export/GodotExporter.js.map +1 -0
  11. package/dist/cjs/export/PlatformExporter.js +236 -0
  12. package/dist/cjs/export/PlatformExporter.js.map +1 -0
  13. package/dist/cjs/export/ThreeJSExporter.js +1116 -0
  14. package/dist/cjs/export/ThreeJSExporter.js.map +1 -0
  15. package/dist/cjs/export/UnityExporter.js +1193 -0
  16. package/dist/cjs/export/UnityExporter.js.map +1 -0
  17. package/dist/cjs/export/WebExporter.js +1036 -0
  18. package/dist/cjs/export/WebExporter.js.map +1 -0
  19. package/dist/cjs/export/index.js +58 -0
  20. package/dist/cjs/export/index.js.map +1 -0
  21. package/dist/cjs/import/AsepriteImporter.js +761 -0
  22. package/dist/cjs/import/AsepriteImporter.js.map +1 -0
  23. package/dist/cjs/import/DragonBonesImporter.js +499 -0
  24. package/dist/cjs/import/DragonBonesImporter.js.map +1 -0
  25. package/dist/cjs/import/GameMakerImporter.js +559 -0
  26. package/dist/cjs/import/GameMakerImporter.js.map +1 -0
  27. package/dist/cjs/import/GodotSceneImporter.js +824 -0
  28. package/dist/cjs/import/GodotSceneImporter.js.map +1 -0
  29. package/dist/cjs/import/LDtkImporter.js +481 -0
  30. package/dist/cjs/import/LDtkImporter.js.map +1 -0
  31. package/dist/cjs/import/Live2DImporter.js +553 -0
  32. package/dist/cjs/import/Live2DImporter.js.map +1 -0
  33. package/dist/cjs/import/NdgFormat.js +499 -0
  34. package/dist/cjs/import/NdgFormat.js.map +1 -0
  35. package/dist/cjs/import/OgmoImporter.js +529 -0
  36. package/dist/cjs/import/OgmoImporter.js.map +1 -0
  37. package/dist/cjs/import/RPGMakerImporter.js +520 -0
  38. package/dist/cjs/import/RPGMakerImporter.js.map +1 -0
  39. package/dist/cjs/import/SceneImporter.js +449 -0
  40. package/dist/cjs/import/SceneImporter.js.map +1 -0
  41. package/dist/cjs/import/SpineImporter.js +583 -0
  42. package/dist/cjs/import/SpineImporter.js.map +1 -0
  43. package/dist/cjs/import/SpriterImporter.js +652 -0
  44. package/dist/cjs/import/SpriterImporter.js.map +1 -0
  45. package/dist/cjs/import/TiledMapImporter.js +859 -0
  46. package/dist/cjs/import/TiledMapImporter.js.map +1 -0
  47. package/dist/cjs/import/UnitySceneImporter.js +732 -0
  48. package/dist/cjs/import/UnitySceneImporter.js.map +1 -0
  49. package/dist/cjs/import/index.js +305 -0
  50. package/dist/cjs/import/index.js.map +1 -0
  51. package/dist/cjs/index.js +201 -0
  52. package/dist/cjs/index.js.map +1 -1
  53. package/dist/cjs/scripting/GraphToAST.js +567 -0
  54. package/dist/cjs/scripting/GraphToAST.js.map +1 -0
  55. package/dist/cjs/scripting/LanguageExporter.js +321 -0
  56. package/dist/cjs/scripting/LanguageExporter.js.map +1 -0
  57. package/dist/cjs/scripting/ScriptAST.js +67 -0
  58. package/dist/cjs/scripting/ScriptAST.js.map +1 -0
  59. package/dist/cjs/scripting/VisualScripting2.js +1140 -0
  60. package/dist/cjs/scripting/VisualScripting2.js.map +1 -0
  61. package/dist/cjs/scripting/exporters/CSharpExporter.js +503 -0
  62. package/dist/cjs/scripting/exporters/CSharpExporter.js.map +1 -0
  63. package/dist/cjs/scripting/exporters/GDScriptExporter.js +452 -0
  64. package/dist/cjs/scripting/exporters/GDScriptExporter.js.map +1 -0
  65. package/dist/cjs/scripting/exporters/LuaExporter.js +457 -0
  66. package/dist/cjs/scripting/exporters/LuaExporter.js.map +1 -0
  67. package/dist/cjs/scripting/exporters/PythonExporter.js +565 -0
  68. package/dist/cjs/scripting/exporters/PythonExporter.js.map +1 -0
  69. package/dist/cjs/scripting/exporters/RustExporter.js +525 -0
  70. package/dist/cjs/scripting/exporters/RustExporter.js.map +1 -0
  71. package/dist/cjs/scripting/exporters/TypeScriptExporter.js +570 -0
  72. package/dist/cjs/scripting/exporters/TypeScriptExporter.js.map +1 -0
  73. package/dist/cjs/systems/ParticleSystem2.js +1478 -0
  74. package/dist/cjs/systems/ParticleSystem2.js.map +1 -0
  75. package/dist/esm/ai/BehaviorTree.js +1186 -0
  76. package/dist/esm/ai/BehaviorTree.js.map +1 -0
  77. package/dist/esm/ai/StateMachine.js +767 -0
  78. package/dist/esm/ai/StateMachine.js.map +1 -0
  79. package/dist/esm/editor/ShaderGraph.js +1606 -0
  80. package/dist/esm/editor/ShaderGraph.js.map +1 -0
  81. package/dist/esm/editor/TimelineEditor.js +800 -0
  82. package/dist/esm/editor/TimelineEditor.js.map +1 -0
  83. package/dist/esm/export/GodotExporter.js +1100 -0
  84. package/dist/esm/export/GodotExporter.js.map +1 -0
  85. package/dist/esm/export/PlatformExporter.js +230 -0
  86. package/dist/esm/export/PlatformExporter.js.map +1 -0
  87. package/dist/esm/export/ThreeJSExporter.js +1114 -0
  88. package/dist/esm/export/ThreeJSExporter.js.map +1 -0
  89. package/dist/esm/export/UnityExporter.js +1191 -0
  90. package/dist/esm/export/UnityExporter.js.map +1 -0
  91. package/dist/esm/export/WebExporter.js +1033 -0
  92. package/dist/esm/export/WebExporter.js.map +1 -0
  93. package/dist/esm/export/index.js +44 -0
  94. package/dist/esm/export/index.js.map +1 -0
  95. package/dist/esm/import/AsepriteImporter.js +759 -0
  96. package/dist/esm/import/AsepriteImporter.js.map +1 -0
  97. package/dist/esm/import/DragonBonesImporter.js +496 -0
  98. package/dist/esm/import/DragonBonesImporter.js.map +1 -0
  99. package/dist/esm/import/GameMakerImporter.js +556 -0
  100. package/dist/esm/import/GameMakerImporter.js.map +1 -0
  101. package/dist/esm/import/GodotSceneImporter.js +822 -0
  102. package/dist/esm/import/GodotSceneImporter.js.map +1 -0
  103. package/dist/esm/import/LDtkImporter.js +479 -0
  104. package/dist/esm/import/LDtkImporter.js.map +1 -0
  105. package/dist/esm/import/Live2DImporter.js +550 -0
  106. package/dist/esm/import/Live2DImporter.js.map +1 -0
  107. package/dist/esm/import/NdgFormat.js +490 -0
  108. package/dist/esm/import/NdgFormat.js.map +1 -0
  109. package/dist/esm/import/OgmoImporter.js +526 -0
  110. package/dist/esm/import/OgmoImporter.js.map +1 -0
  111. package/dist/esm/import/RPGMakerImporter.js +517 -0
  112. package/dist/esm/import/RPGMakerImporter.js.map +1 -0
  113. package/dist/esm/import/SceneImporter.js +441 -0
  114. package/dist/esm/import/SceneImporter.js.map +1 -0
  115. package/dist/esm/import/SpineImporter.js +580 -0
  116. package/dist/esm/import/SpineImporter.js.map +1 -0
  117. package/dist/esm/import/SpriterImporter.js +649 -0
  118. package/dist/esm/import/SpriterImporter.js.map +1 -0
  119. package/dist/esm/import/TiledMapImporter.js +857 -0
  120. package/dist/esm/import/TiledMapImporter.js.map +1 -0
  121. package/dist/esm/import/UnitySceneImporter.js +730 -0
  122. package/dist/esm/import/UnitySceneImporter.js.map +1 -0
  123. package/dist/esm/import/index.js +279 -0
  124. package/dist/esm/import/index.js.map +1 -0
  125. package/dist/esm/index.js +36 -0
  126. package/dist/esm/index.js.map +1 -1
  127. package/dist/esm/scripting/GraphToAST.js +564 -0
  128. package/dist/esm/scripting/GraphToAST.js.map +1 -0
  129. package/dist/esm/scripting/LanguageExporter.js +311 -0
  130. package/dist/esm/scripting/LanguageExporter.js.map +1 -0
  131. package/dist/esm/scripting/ScriptAST.js +52 -0
  132. package/dist/esm/scripting/ScriptAST.js.map +1 -0
  133. package/dist/esm/scripting/VisualScripting2.js +1130 -0
  134. package/dist/esm/scripting/VisualScripting2.js.map +1 -0
  135. package/dist/esm/scripting/exporters/CSharpExporter.js +501 -0
  136. package/dist/esm/scripting/exporters/CSharpExporter.js.map +1 -0
  137. package/dist/esm/scripting/exporters/GDScriptExporter.js +450 -0
  138. package/dist/esm/scripting/exporters/GDScriptExporter.js.map +1 -0
  139. package/dist/esm/scripting/exporters/LuaExporter.js +455 -0
  140. package/dist/esm/scripting/exporters/LuaExporter.js.map +1 -0
  141. package/dist/esm/scripting/exporters/PythonExporter.js +563 -0
  142. package/dist/esm/scripting/exporters/PythonExporter.js.map +1 -0
  143. package/dist/esm/scripting/exporters/RustExporter.js +523 -0
  144. package/dist/esm/scripting/exporters/RustExporter.js.map +1 -0
  145. package/dist/esm/scripting/exporters/TypeScriptExporter.js +568 -0
  146. package/dist/esm/scripting/exporters/TypeScriptExporter.js.map +1 -0
  147. package/dist/esm/systems/ParticleSystem2.js +1471 -0
  148. package/dist/esm/systems/ParticleSystem2.js.map +1 -0
  149. package/dist/types/ai/BehaviorTree.d.ts +375 -0
  150. package/dist/types/ai/StateMachine.d.ts +296 -0
  151. package/dist/types/editor/ShaderGraph.d.ts +207 -0
  152. package/dist/types/editor/TimelineEditor.d.ts +393 -0
  153. package/dist/types/export/GodotExporter.d.ts +56 -0
  154. package/dist/types/export/PlatformExporter.d.ts +201 -0
  155. package/dist/types/export/ThreeJSExporter.d.ts +40 -0
  156. package/dist/types/export/UnityExporter.d.ts +69 -0
  157. package/dist/types/export/WebExporter.d.ts +58 -0
  158. package/dist/types/export/index.d.ts +19 -0
  159. package/dist/types/import/AsepriteImporter.d.ts +46 -0
  160. package/dist/types/import/DragonBonesImporter.d.ts +331 -0
  161. package/dist/types/import/GameMakerImporter.d.ts +375 -0
  162. package/dist/types/import/GodotSceneImporter.d.ts +34 -0
  163. package/dist/types/import/LDtkImporter.d.ts +177 -0
  164. package/dist/types/import/Live2DImporter.d.ts +237 -0
  165. package/dist/types/import/NdgFormat.d.ts +387 -0
  166. package/dist/types/import/OgmoImporter.d.ts +237 -0
  167. package/dist/types/import/RPGMakerImporter.d.ts +186 -0
  168. package/dist/types/import/SceneImporter.d.ts +276 -0
  169. package/dist/types/import/SpineImporter.d.ts +372 -0
  170. package/dist/types/import/SpriterImporter.d.ts +230 -0
  171. package/dist/types/import/TiledMapImporter.d.ts +57 -0
  172. package/dist/types/import/UnitySceneImporter.d.ts +87 -0
  173. package/dist/types/import/index.d.ts +59 -0
  174. package/dist/types/index.d.ts +29 -17
  175. package/dist/types/scripting/GraphToAST.d.ts +55 -0
  176. package/dist/types/scripting/LanguageExporter.d.ts +136 -0
  177. package/dist/types/scripting/ScriptAST.d.ts +312 -0
  178. package/dist/types/scripting/VisualScripting2.d.ts +353 -0
  179. package/dist/types/scripting/exporters/CSharpExporter.d.ts +44 -0
  180. package/dist/types/scripting/exporters/GDScriptExporter.d.ts +46 -0
  181. package/dist/types/scripting/exporters/LuaExporter.d.ts +46 -0
  182. package/dist/types/scripting/exporters/PythonExporter.d.ts +49 -0
  183. package/dist/types/scripting/exporters/RustExporter.d.ts +46 -0
  184. package/dist/types/scripting/exporters/TypeScriptExporter.d.ts +48 -0
  185. package/dist/types/scripting/exporters/index.d.ts +8 -0
  186. package/dist/types/scripting/index.d.ts +11 -0
  187. package/dist/types/systems/ParticleSystem2.d.ts +646 -0
  188. package/package.json +2 -2
@@ -0,0 +1,520 @@
1
+ 'use strict';
2
+
3
+ var SceneImporter = require('./SceneImporter.js');
4
+
5
+ /**
6
+ * @file RPGMakerImporter.ts
7
+ * @description RPG Maker Map Importer
8
+ * PRO-1.3: Scene Format Interoperability
9
+ *
10
+ * Supports RPG Maker MV/MZ JSON map format.
11
+ *
12
+ * File Types:
13
+ * - Map*.json - Map files
14
+ * - Tilesets.json - Tileset definitions
15
+ * - Actors.json, Enemies.json, etc. - Database files
16
+ */
17
+ // ============================================================
18
+ // RPG Maker Tile Constants
19
+ // ============================================================
20
+ const TILE_SIZE = 48;
21
+ // Event trigger types
22
+ const TRIGGER_ACTION_BUTTON = 0;
23
+ const TRIGGER_PLAYER_TOUCH = 1;
24
+ const TRIGGER_EVENT_TOUCH = 2;
25
+ const TRIGGER_AUTORUN = 3;
26
+ const TRIGGER_PARALLEL = 4;
27
+ // Event priority types
28
+ const PRIORITY_BELOW = 0;
29
+ const PRIORITY_SAME = 1;
30
+ const PRIORITY_ABOVE = 2;
31
+ // ============================================================
32
+ // RPG Maker Importer
33
+ // ============================================================
34
+ class RPGMakerImporter extends SceneImporter.SceneImporter {
35
+ constructor() {
36
+ super('rpgmaker');
37
+ this.tilesets = new Map();
38
+ this.commonEvents = new Map();
39
+ }
40
+ canHandle(filePath) {
41
+ const name = filePath.toLowerCase();
42
+ return (name.endsWith('.json') &&
43
+ (name.includes('map') ||
44
+ name.includes('tilesets') ||
45
+ name.includes('actors') ||
46
+ name.includes('commonevents')));
47
+ }
48
+ async import(options) {
49
+ const startTime = Date.now();
50
+ this.options = options;
51
+ this.clearMessages();
52
+ const scenes = [];
53
+ const assets = [];
54
+ try {
55
+ const content = await this.readFile(options.sourcePath);
56
+ const data = JSON.parse(content);
57
+ const fileName = options.sourcePath.toLowerCase();
58
+ // Load tilesets if available
59
+ if (options.resolveDependencies) {
60
+ try {
61
+ const tilesetsPath = this.getDataPath(options.sourcePath, 'Tilesets.json');
62
+ const tilesetsContent = await this.readFile(tilesetsPath);
63
+ const tilesetsData = JSON.parse(tilesetsContent);
64
+ for (const tileset of tilesetsData) {
65
+ if (tileset) {
66
+ this.tilesets.set(tileset.id, tileset);
67
+ }
68
+ }
69
+ }
70
+ catch (_a) {
71
+ this.addWarning('TILESETS_NOT_FOUND', 'Tilesets.json not found', options.sourcePath);
72
+ }
73
+ }
74
+ // Determine file type and process
75
+ if (this.isMapFile(fileName, data)) {
76
+ const map = data;
77
+ const scene = this.convertMapToScene(map, options.sourcePath);
78
+ scenes.push(scene);
79
+ // Extract tileset assets
80
+ const tileset = this.tilesets.get(map.tilesetId);
81
+ if (tileset) {
82
+ for (const tilesetName of tileset.tilesetNames) {
83
+ if (tilesetName) {
84
+ assets.push({
85
+ id: this.generateId(),
86
+ name: tilesetName,
87
+ type: 'tileset',
88
+ path: `img/tilesets/${tilesetName}.png`,
89
+ data: { rpgMaker: true },
90
+ });
91
+ }
92
+ }
93
+ }
94
+ // Extract character assets from events
95
+ for (const event of map.events) {
96
+ if (event) {
97
+ for (const page of event.pages) {
98
+ if (page.image.characterName) {
99
+ assets.push({
100
+ id: this.generateId(),
101
+ name: page.image.characterName,
102
+ type: 'texture',
103
+ path: `img/characters/${page.image.characterName}.png`,
104
+ data: { characterIndex: page.image.characterIndex },
105
+ });
106
+ }
107
+ }
108
+ }
109
+ }
110
+ }
111
+ else if (fileName.includes('tilesets')) {
112
+ // Process tilesets database
113
+ const tilesetsData = data;
114
+ for (const tileset of tilesetsData) {
115
+ if (tileset) {
116
+ for (const tilesetName of tileset.tilesetNames) {
117
+ if (tilesetName) {
118
+ assets.push({
119
+ id: this.generateId(),
120
+ name: tilesetName,
121
+ type: 'tileset',
122
+ path: `img/tilesets/${tilesetName}.png`,
123
+ data: {
124
+ rpgMakerId: tileset.id,
125
+ mode: tileset.mode,
126
+ },
127
+ });
128
+ }
129
+ }
130
+ }
131
+ }
132
+ }
133
+ }
134
+ catch (error) {
135
+ this.addError('IMPORT_ERROR', `Failed to import: ${error}`, options.sourcePath, undefined, true);
136
+ }
137
+ return this.createResult(scenes, assets, startTime);
138
+ }
139
+ async parseFile(content, filePath) {
140
+ const stringContent = typeof content === 'string' ? content : new TextDecoder().decode(content);
141
+ try {
142
+ const data = JSON.parse(stringContent);
143
+ const fileName = filePath.toLowerCase();
144
+ if (this.isMapFile(fileName, data)) {
145
+ return this.convertMapToParsed(data);
146
+ }
147
+ }
148
+ catch (_a) {
149
+ return null;
150
+ }
151
+ return null;
152
+ }
153
+ async validate(sourcePath) {
154
+ const errors = [];
155
+ if (!this.canHandle(sourcePath)) {
156
+ errors.push({
157
+ code: 'INVALID_FORMAT',
158
+ message: `File ${sourcePath} is not a valid RPG Maker file`,
159
+ file: sourcePath,
160
+ fatal: true,
161
+ });
162
+ }
163
+ return errors;
164
+ }
165
+ // ----------------------------------------
166
+ // Type Checks
167
+ // ----------------------------------------
168
+ isMapFile(fileName, data) {
169
+ const obj = data;
170
+ return ((fileName.includes('map') || fileName.match(/map\d+\.json$/i) !== null) &&
171
+ typeof obj === 'object' &&
172
+ obj !== null &&
173
+ 'width' in obj &&
174
+ 'height' in obj &&
175
+ 'data' in obj &&
176
+ 'events' in obj);
177
+ }
178
+ // ----------------------------------------
179
+ // Map Conversion
180
+ // ----------------------------------------
181
+ convertMapToScene(map, sourcePath) {
182
+ const name = map.displayName || this.extractFileName(sourcePath);
183
+ const entities = [];
184
+ // Create tilemap layers (RPG Maker has 6 layers in data array)
185
+ const layers = this.createTilemapLayers(map);
186
+ entities.push(...layers);
187
+ // Convert events
188
+ for (const event of map.events) {
189
+ if (event) {
190
+ entities.push(this.convertEvent(event, map));
191
+ }
192
+ }
193
+ // Create parallax if present
194
+ if (map.parallaxName) {
195
+ entities.push(this.createParallaxEntity(map));
196
+ }
197
+ return {
198
+ id: this.generateId(),
199
+ name,
200
+ entities,
201
+ settings: {
202
+ width: map.width * TILE_SIZE,
203
+ height: map.height * TILE_SIZE,
204
+ backgroundColor: '#000000',
205
+ tilesetId: map.tilesetId,
206
+ encounterStep: map.encounterStep,
207
+ scrollType: map.scrollType,
208
+ autoplayBgm: map.autoplayBgm,
209
+ autoplayBgs: map.autoplayBgs,
210
+ bgm: map.bgm,
211
+ bgs: map.bgs,
212
+ note: map.note,
213
+ },
214
+ };
215
+ }
216
+ convertMapToParsed(map) {
217
+ const layers = [];
218
+ const entities = [];
219
+ // Create tile layers
220
+ const layerNames = ['Ground', 'Ground2', 'Upper', 'Upper2', 'Shadow', 'Region'];
221
+ for (let z = 0; z < 6; z++) {
222
+ const layerData = this.extractLayerData(map.data, z, map.width, map.height);
223
+ layers.push({
224
+ name: layerNames[z],
225
+ type: z === 4 ? 'object' : 'tile', // Shadow layer is special
226
+ visible: z !== 5, // Region layer is hidden
227
+ opacity: 1,
228
+ offsetX: 0,
229
+ offsetY: 0,
230
+ zIndex: z,
231
+ tileData: {
232
+ width: map.width,
233
+ height: map.height,
234
+ tiles: layerData,
235
+ tileWidth: TILE_SIZE,
236
+ tileHeight: TILE_SIZE,
237
+ },
238
+ properties: {},
239
+ });
240
+ }
241
+ // Convert events
242
+ for (const event of map.events) {
243
+ if (event) {
244
+ entities.push(this.convertEventToParsed(event));
245
+ }
246
+ }
247
+ return {
248
+ name: map.displayName || 'RPG Maker Map',
249
+ width: map.width * TILE_SIZE,
250
+ height: map.height * TILE_SIZE,
251
+ backgroundColor: '#000000',
252
+ layers,
253
+ entities,
254
+ properties: {
255
+ tilesetId: map.tilesetId,
256
+ note: map.note,
257
+ },
258
+ };
259
+ }
260
+ // ----------------------------------------
261
+ // Tilemap Layers
262
+ // ----------------------------------------
263
+ createTilemapLayers(map) {
264
+ const entities = [];
265
+ const layerNames = ['Ground', 'Ground2', 'Upper', 'Upper2', 'Shadow', 'Region'];
266
+ for (let z = 0; z < 6; z++) {
267
+ const layerData = this.extractLayerData(map.data, z, map.width, map.height);
268
+ entities.push({
269
+ id: this.generateId(),
270
+ name: layerNames[z],
271
+ components: [
272
+ {
273
+ type: 'Transform',
274
+ data: {
275
+ position: { x: 0, y: 0 },
276
+ rotation: 0,
277
+ scale: { x: 1, y: 1 },
278
+ },
279
+ },
280
+ {
281
+ type: 'Tilemap',
282
+ data: {
283
+ width: map.width,
284
+ height: map.height,
285
+ tileWidth: TILE_SIZE,
286
+ tileHeight: TILE_SIZE,
287
+ data: layerData,
288
+ tilesetId: map.tilesetId,
289
+ layerIndex: z,
290
+ visible: z !== 5, // Hide region layer
291
+ },
292
+ },
293
+ ],
294
+ children: [],
295
+ tags: ['tilemap', layerNames[z].toLowerCase()],
296
+ active: true,
297
+ });
298
+ }
299
+ return entities;
300
+ }
301
+ extractLayerData(data, layer, width, height) {
302
+ const layerData = [];
303
+ const layerSize = width * height;
304
+ const startIndex = layer * layerSize;
305
+ for (let i = 0; i < layerSize; i++) {
306
+ layerData.push(data[startIndex + i]);
307
+ }
308
+ return layerData;
309
+ }
310
+ // ----------------------------------------
311
+ // Event Conversion
312
+ // ----------------------------------------
313
+ convertEvent(event, map) {
314
+ const activePage = this.getActivePage(event);
315
+ const components = [
316
+ {
317
+ type: 'Transform',
318
+ data: {
319
+ position: {
320
+ x: event.x * TILE_SIZE + TILE_SIZE / 2,
321
+ y: event.y * TILE_SIZE + TILE_SIZE / 2,
322
+ },
323
+ rotation: 0,
324
+ scale: { x: 1, y: 1 },
325
+ },
326
+ },
327
+ ];
328
+ // Add sprite if event has image
329
+ if (activePage && activePage.image.characterName) {
330
+ components.push({
331
+ type: 'Sprite',
332
+ data: {
333
+ texture: activePage.image.characterName,
334
+ characterIndex: activePage.image.characterIndex,
335
+ direction: activePage.image.direction,
336
+ pattern: activePage.image.pattern,
337
+ animation: activePage.walkAnime || activePage.stepAnime,
338
+ },
339
+ });
340
+ }
341
+ else if (activePage && activePage.image.tileId > 0) {
342
+ components.push({
343
+ type: 'Sprite',
344
+ data: {
345
+ tileId: activePage.image.tileId,
346
+ tilesetId: map.tilesetId,
347
+ },
348
+ });
349
+ }
350
+ // Add event trigger component
351
+ if (activePage) {
352
+ components.push({
353
+ type: 'EventTrigger',
354
+ data: {
355
+ trigger: this.getTriggerName(activePage.trigger),
356
+ priority: this.getPriorityName(activePage.priorityType),
357
+ moveType: activePage.moveType,
358
+ moveSpeed: activePage.moveSpeed,
359
+ moveFrequency: activePage.moveFrequency,
360
+ directionFix: activePage.directionFix,
361
+ through: activePage.through,
362
+ },
363
+ });
364
+ // Add event commands as script
365
+ if (activePage.list.length > 0) {
366
+ components.push({
367
+ type: 'EventScript',
368
+ data: {
369
+ commands: this.simplifyCommands(activePage.list),
370
+ conditions: activePage.conditions,
371
+ },
372
+ });
373
+ }
374
+ }
375
+ return {
376
+ id: event.id.toString(),
377
+ name: event.name,
378
+ components,
379
+ children: [],
380
+ tags: ['event'],
381
+ active: true,
382
+ };
383
+ }
384
+ convertEventToParsed(event) {
385
+ const activePage = this.getActivePage(event);
386
+ return {
387
+ id: event.id.toString(),
388
+ name: event.name,
389
+ type: 'Event',
390
+ x: event.x * TILE_SIZE + TILE_SIZE / 2,
391
+ y: event.y * TILE_SIZE + TILE_SIZE / 2,
392
+ width: TILE_SIZE,
393
+ height: TILE_SIZE,
394
+ rotation: 0,
395
+ scaleX: 1,
396
+ scaleY: 1,
397
+ visible: true,
398
+ components: [],
399
+ children: [],
400
+ properties: {
401
+ note: event.note,
402
+ pages: event.pages.length,
403
+ trigger: activePage ? this.getTriggerName(activePage.trigger) : 'none',
404
+ characterName: activePage === null || activePage === void 0 ? void 0 : activePage.image.characterName,
405
+ characterIndex: activePage === null || activePage === void 0 ? void 0 : activePage.image.characterIndex,
406
+ },
407
+ };
408
+ }
409
+ getActivePage(event) {
410
+ // In editor context, return first page
411
+ // In runtime, would evaluate conditions
412
+ return event.pages.length > 0 ? event.pages[0] : null;
413
+ }
414
+ getTriggerName(trigger) {
415
+ switch (trigger) {
416
+ case TRIGGER_ACTION_BUTTON:
417
+ return 'action';
418
+ case TRIGGER_PLAYER_TOUCH:
419
+ return 'playerTouch';
420
+ case TRIGGER_EVENT_TOUCH:
421
+ return 'eventTouch';
422
+ case TRIGGER_AUTORUN:
423
+ return 'autorun';
424
+ case TRIGGER_PARALLEL:
425
+ return 'parallel';
426
+ default:
427
+ return 'action';
428
+ }
429
+ }
430
+ getPriorityName(priority) {
431
+ switch (priority) {
432
+ case PRIORITY_BELOW:
433
+ return 'below';
434
+ case PRIORITY_SAME:
435
+ return 'same';
436
+ case PRIORITY_ABOVE:
437
+ return 'above';
438
+ default:
439
+ return 'same';
440
+ }
441
+ }
442
+ simplifyCommands(commands) {
443
+ return commands.map((cmd) => ({
444
+ code: cmd.code,
445
+ indent: cmd.indent,
446
+ params: cmd.parameters,
447
+ }));
448
+ }
449
+ // ----------------------------------------
450
+ // Parallax
451
+ // ----------------------------------------
452
+ createParallaxEntity(map) {
453
+ return {
454
+ id: this.generateId(),
455
+ name: 'Parallax',
456
+ components: [
457
+ {
458
+ type: 'Transform',
459
+ data: {
460
+ position: { x: 0, y: 0 },
461
+ rotation: 0,
462
+ scale: { x: 1, y: 1 },
463
+ },
464
+ },
465
+ {
466
+ type: 'Parallax',
467
+ data: {
468
+ texture: map.parallaxName,
469
+ loopX: map.parallaxLoopX,
470
+ loopY: map.parallaxLoopY,
471
+ scrollX: map.parallaxSx,
472
+ scrollY: map.parallaxSy,
473
+ visible: map.parallaxShow,
474
+ },
475
+ },
476
+ ],
477
+ children: [],
478
+ tags: ['parallax'],
479
+ active: true,
480
+ };
481
+ }
482
+ // ----------------------------------------
483
+ // Utilities
484
+ // ----------------------------------------
485
+ async readFile(path) {
486
+ var _a;
487
+ if (typeof globalThis.process !== 'undefined' && ((_a = globalThis.process.versions) === null || _a === void 0 ? void 0 : _a.node)) {
488
+ const fs = await import('fs');
489
+ return fs.readFileSync(path, 'utf-8');
490
+ }
491
+ else if (typeof fetch !== 'undefined') {
492
+ const response = await fetch(path);
493
+ return response.text();
494
+ }
495
+ throw new Error('Unable to read file in current environment');
496
+ }
497
+ getDataPath(sourcePath, fileName) {
498
+ const dir = sourcePath.substring(0, sourcePath.lastIndexOf('/') + 1);
499
+ // Navigate to data folder
500
+ if (dir.includes('/data/')) {
501
+ return dir + fileName;
502
+ }
503
+ return dir + 'data/' + fileName;
504
+ }
505
+ extractFileName(path) {
506
+ const name = path.substring(path.lastIndexOf('/') + 1);
507
+ const dotIndex = name.lastIndexOf('.');
508
+ return dotIndex > 0 ? name.substring(0, dotIndex) : name;
509
+ }
510
+ }
511
+ // ============================================================
512
+ // Factory Function
513
+ // ============================================================
514
+ function createRPGMakerImporter() {
515
+ return new RPGMakerImporter();
516
+ }
517
+
518
+ exports.RPGMakerImporter = RPGMakerImporter;
519
+ exports.createRPGMakerImporter = createRPGMakerImporter;
520
+ //# sourceMappingURL=RPGMakerImporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RPGMakerImporter.js","sources":["../../../src/import/RPGMakerImporter.ts"],"sourcesContent":[null],"names":["SceneImporter"],"mappings":"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"}