@nice2dev/game-engine 1.0.2 → 1.0.4

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 +3 -3
@@ -0,0 +1,237 @@
1
+ /**
2
+ * @file OgmoImporter.ts
3
+ * @description OGMO Editor Level Importer
4
+ * PRO-1.3: Scene Format Interoperability
5
+ *
6
+ * OGMO Editor is a free, open-source 2D level editor.
7
+ * Supports OGMO 3 format (JSON-based).
8
+ *
9
+ * File Types:
10
+ * - .ogmo - Project file
11
+ * - .json - Level file (usually named *.ogmo.json or just *.json)
12
+ */
13
+ import { SceneImporter, ImportOptions, ImportResult, ParsedScene, ImportError } from './SceneImporter';
14
+ /** OGMO 3 Project File */
15
+ export interface OgmoProject {
16
+ name: string;
17
+ ogmoVersion: string;
18
+ levelPaths?: string[];
19
+ backgroundColor: string;
20
+ gridColor: string;
21
+ anglesRadians: boolean;
22
+ directoryDepth: number;
23
+ layerGridDefaultSize: {
24
+ x: number;
25
+ y: number;
26
+ };
27
+ levelDefaultSize: {
28
+ x: number;
29
+ y: number;
30
+ };
31
+ levelMinSize: {
32
+ x: number;
33
+ y: number;
34
+ };
35
+ levelMaxSize: {
36
+ x: number;
37
+ y: number;
38
+ };
39
+ levelNamePattern?: string;
40
+ levelValues?: OgmoValueDef[];
41
+ defaultExportMode: string;
42
+ compactExport: boolean;
43
+ externalScript?: string;
44
+ playCommand?: string;
45
+ entityTags?: string[];
46
+ layers: OgmoLayerDef[];
47
+ entities: OgmoEntityDef[];
48
+ tilesets: OgmoTilesetDef[];
49
+ }
50
+ /** OGMO Layer Definition */
51
+ export interface OgmoLayerDef {
52
+ name: string;
53
+ gridSize: {
54
+ x: number;
55
+ y: number;
56
+ };
57
+ exportID: string;
58
+ definition: 'tile' | 'entity' | 'decal';
59
+ /** For tile layers */
60
+ tileset?: string;
61
+ /** For entity layers */
62
+ requiredTags?: string[];
63
+ excludedTags?: string[];
64
+ /** For decal layers */
65
+ folder?: string;
66
+ scaleable?: boolean;
67
+ rotatable?: boolean;
68
+ tintable?: boolean;
69
+ }
70
+ /** OGMO Entity Definition */
71
+ export interface OgmoEntityDef {
72
+ name: string;
73
+ exportID: string;
74
+ limit: number;
75
+ size: {
76
+ x: number;
77
+ y: number;
78
+ };
79
+ origin: {
80
+ x: number;
81
+ y: number;
82
+ };
83
+ originAnchored: boolean;
84
+ shape: OgmoEntityShape;
85
+ color: string;
86
+ tileX: boolean;
87
+ tileY: boolean;
88
+ tileSize: {
89
+ x: number;
90
+ y: number;
91
+ };
92
+ resizeableX: boolean;
93
+ resizeableY: boolean;
94
+ rotatable: boolean;
95
+ rotationDegrees: number;
96
+ canFlipX: boolean;
97
+ canFlipY: boolean;
98
+ canSetColor: boolean;
99
+ hasNodes: boolean;
100
+ nodeLimit: number;
101
+ nodeDisplay: 'path' | 'circuit' | 'fan' | 'none';
102
+ nodeGhost: boolean;
103
+ tags: string[];
104
+ values: OgmoValueDef[];
105
+ texture?: string;
106
+ textureX?: number;
107
+ textureY?: number;
108
+ }
109
+ export type OgmoEntityShape = {
110
+ label: 'Rectangle' | 'Ellipse' | 'Cross' | 'Diamond' | 'Octagon' | 'Point';
111
+ } | {
112
+ label: 'Ellipse';
113
+ } | {
114
+ label: 'Cross';
115
+ } | {
116
+ label: 'Diamond';
117
+ } | {
118
+ label: 'Octagon';
119
+ } | {
120
+ label: 'Point';
121
+ };
122
+ /** OGMO Tileset Definition */
123
+ export interface OgmoTilesetDef {
124
+ name: string;
125
+ path: string;
126
+ image: string;
127
+ tileWidth: number;
128
+ tileHeight: number;
129
+ tileSeparationX: number;
130
+ tileSeparationY: number;
131
+ }
132
+ /** OGMO Value Definition (custom properties) */
133
+ export interface OgmoValueDef {
134
+ name: string;
135
+ definition: 'Bool' | 'Int' | 'Float' | 'String' | 'Text' | 'Enum' | 'Color' | 'FilePath';
136
+ defaults: unknown;
137
+ bounded?: boolean;
138
+ min?: number;
139
+ max?: number;
140
+ choices?: string[];
141
+ }
142
+ /** OGMO 3 Level File */
143
+ export interface OgmoLevel {
144
+ ogmoVersion: string;
145
+ width: number;
146
+ height: number;
147
+ offsetX: number;
148
+ offsetY: number;
149
+ values?: Record<string, unknown>;
150
+ layers: OgmoLayerInstance[];
151
+ }
152
+ /** OGMO Layer Instance */
153
+ export interface OgmoLayerInstance {
154
+ name: string;
155
+ _eid: string;
156
+ offsetX: number;
157
+ offsetY: number;
158
+ gridCellWidth: number;
159
+ gridCellHeight: number;
160
+ gridCellsX: number;
161
+ gridCellsY: number;
162
+ /** Tile layers */
163
+ tileset?: string;
164
+ data?: number[];
165
+ data2D?: number[][];
166
+ dataCoords?: Array<[number, number]>;
167
+ dataCoords2D?: Array<Array<[number, number]>>;
168
+ exportMode?: '1D' | '2D' | 'CSV' | 'Coords (1D)' | 'Coords (2D)';
169
+ arrayMode?: '1D' | '2D';
170
+ /** Entity layers */
171
+ entities?: OgmoEntityInstance[];
172
+ /** Decal layers */
173
+ decals?: OgmoDecalInstance[];
174
+ /** Grid layer (for collision/pathfinding) */
175
+ grid?: string[];
176
+ grid2D?: string[][];
177
+ }
178
+ /** OGMO Entity Instance */
179
+ export interface OgmoEntityInstance {
180
+ name: string;
181
+ id: number;
182
+ _eid: string;
183
+ x: number;
184
+ y: number;
185
+ width?: number;
186
+ height?: number;
187
+ originX?: number;
188
+ originY?: number;
189
+ rotation?: number;
190
+ flippedX?: boolean;
191
+ flippedY?: boolean;
192
+ color?: string;
193
+ nodes?: Array<{
194
+ x: number;
195
+ y: number;
196
+ }>;
197
+ values?: Record<string, unknown>;
198
+ }
199
+ /** OGMO Decal Instance */
200
+ export interface OgmoDecalInstance {
201
+ x: number;
202
+ y: number;
203
+ texture: string;
204
+ scaleX?: number;
205
+ scaleY?: number;
206
+ rotation?: number;
207
+ color?: string;
208
+ originX?: number;
209
+ originY?: number;
210
+ }
211
+ export declare class OgmoImporter extends SceneImporter {
212
+ private project;
213
+ private entityDefs;
214
+ private tilesetDefs;
215
+ private layerDefs;
216
+ constructor();
217
+ canHandle(filePath: string): boolean;
218
+ import(options: ImportOptions): Promise<ImportResult>;
219
+ parseFile(content: string | ArrayBuffer, filePath: string): Promise<ParsedScene | null>;
220
+ validate(sourcePath: string): Promise<ImportError[]>;
221
+ private isProjectFile;
222
+ private isLevelFile;
223
+ private indexDefinitions;
224
+ private convertLevelToScene;
225
+ private convertLevelToParsed;
226
+ private convertLayer;
227
+ private convertLayerToParsed;
228
+ private convertTileLayer;
229
+ private convertEntity;
230
+ private convertEntityToParsed;
231
+ private convertDecal;
232
+ private convertGridLayer;
233
+ private readFile;
234
+ private resolvePath;
235
+ private extractFileName;
236
+ }
237
+ export declare function createOgmoImporter(): OgmoImporter;
@@ -0,0 +1,186 @@
1
+ /**
2
+ * @file RPGMakerImporter.ts
3
+ * @description RPG Maker Map Importer
4
+ * PRO-1.3: Scene Format Interoperability
5
+ *
6
+ * Supports RPG Maker MV/MZ JSON map format.
7
+ *
8
+ * File Types:
9
+ * - Map*.json - Map files
10
+ * - Tilesets.json - Tileset definitions
11
+ * - Actors.json, Enemies.json, etc. - Database files
12
+ */
13
+ import { SceneImporter, ImportOptions, ImportResult, ParsedScene, ImportError } from './SceneImporter';
14
+ /** RPG Maker MV/MZ Map */
15
+ export interface RPGMakerMap {
16
+ autoplayBgm: boolean;
17
+ autoplayBgs: boolean;
18
+ battleback1Name: string;
19
+ battleback2Name: string;
20
+ bgm: RPGMakerAudio;
21
+ bgs: RPGMakerAudio;
22
+ disableDashing: boolean;
23
+ displayName: string;
24
+ encounterList: RPGMakerEncounter[];
25
+ encounterStep: number;
26
+ height: number;
27
+ width: number;
28
+ note: string;
29
+ parallaxLoopX: boolean;
30
+ parallaxLoopY: boolean;
31
+ parallaxName: string;
32
+ parallaxShow: boolean;
33
+ parallaxSx: number;
34
+ parallaxSy: number;
35
+ scrollType: number;
36
+ specifyBattleback: boolean;
37
+ tilesetId: number;
38
+ data: number[];
39
+ events: (RPGMakerEvent | null)[];
40
+ }
41
+ /** RPG Maker Event */
42
+ export interface RPGMakerEvent {
43
+ id: number;
44
+ name: string;
45
+ note: string;
46
+ x: number;
47
+ y: number;
48
+ pages: RPGMakerEventPage[];
49
+ }
50
+ /** RPG Maker Event Page */
51
+ export interface RPGMakerEventPage {
52
+ conditions: RPGMakerConditions;
53
+ directionFix: boolean;
54
+ image: RPGMakerEventImage;
55
+ list: RPGMakerCommand[];
56
+ moveFrequency: number;
57
+ moveRoute: RPGMakerMoveRoute;
58
+ moveSpeed: number;
59
+ moveType: number;
60
+ priorityType: number;
61
+ stepAnime: boolean;
62
+ through: boolean;
63
+ trigger: number;
64
+ walkAnime: boolean;
65
+ }
66
+ /** RPG Maker Event Image */
67
+ export interface RPGMakerEventImage {
68
+ characterIndex: number;
69
+ characterName: string;
70
+ direction: number;
71
+ pattern: number;
72
+ tileId: number;
73
+ }
74
+ /** RPG Maker Event Conditions */
75
+ export interface RPGMakerConditions {
76
+ actorId: number;
77
+ actorValid: boolean;
78
+ itemId: number;
79
+ itemValid: boolean;
80
+ selfSwitchCh: string;
81
+ selfSwitchValid: boolean;
82
+ switch1Id: number;
83
+ switch1Valid: boolean;
84
+ switch2Id: number;
85
+ switch2Valid: boolean;
86
+ variableId: number;
87
+ variableValid: boolean;
88
+ variableValue: number;
89
+ }
90
+ /** RPG Maker Event Command */
91
+ export interface RPGMakerCommand {
92
+ code: number;
93
+ indent: number;
94
+ parameters: unknown[];
95
+ }
96
+ /** RPG Maker Move Route */
97
+ export interface RPGMakerMoveRoute {
98
+ list: RPGMakerMoveCommand[];
99
+ repeat: boolean;
100
+ skippable: boolean;
101
+ wait: boolean;
102
+ }
103
+ /** RPG Maker Move Command */
104
+ export interface RPGMakerMoveCommand {
105
+ code: number;
106
+ parameters?: unknown[];
107
+ }
108
+ /** RPG Maker Audio */
109
+ export interface RPGMakerAudio {
110
+ name: string;
111
+ pan: number;
112
+ pitch: number;
113
+ volume: number;
114
+ }
115
+ /** RPG Maker Encounter */
116
+ export interface RPGMakerEncounter {
117
+ regionSet: number[];
118
+ troopId: number;
119
+ weight: number;
120
+ }
121
+ /** RPG Maker Tileset Definition */
122
+ export interface RPGMakerTileset {
123
+ id: number;
124
+ flags: number[];
125
+ mode: number;
126
+ name: string;
127
+ note: string;
128
+ tilesetNames: string[];
129
+ }
130
+ /** RPG Maker Actor */
131
+ export interface RPGMakerActor {
132
+ id: number;
133
+ battlerName: string;
134
+ characterIndex: number;
135
+ characterName: string;
136
+ classId: number;
137
+ equips: number[];
138
+ faceIndex: number;
139
+ faceName: string;
140
+ traits: RPGMakerTrait[];
141
+ initialLevel: number;
142
+ maxLevel: number;
143
+ name: string;
144
+ nickname: string;
145
+ note: string;
146
+ profile: string;
147
+ }
148
+ /** RPG Maker Trait */
149
+ export interface RPGMakerTrait {
150
+ code: number;
151
+ dataId: number;
152
+ value: number;
153
+ }
154
+ /** RPG Maker Common Event */
155
+ export interface RPGMakerCommonEvent {
156
+ id: number;
157
+ list: RPGMakerCommand[];
158
+ name: string;
159
+ switchId: number;
160
+ trigger: number;
161
+ }
162
+ export declare class RPGMakerImporter extends SceneImporter {
163
+ private tilesets;
164
+ private commonEvents;
165
+ constructor();
166
+ canHandle(filePath: string): boolean;
167
+ import(options: ImportOptions): Promise<ImportResult>;
168
+ parseFile(content: string | ArrayBuffer, filePath: string): Promise<ParsedScene | null>;
169
+ validate(sourcePath: string): Promise<ImportError[]>;
170
+ private isMapFile;
171
+ private convertMapToScene;
172
+ private convertMapToParsed;
173
+ private createTilemapLayers;
174
+ private extractLayerData;
175
+ private convertEvent;
176
+ private convertEventToParsed;
177
+ private getActivePage;
178
+ private getTriggerName;
179
+ private getPriorityName;
180
+ private simplifyCommands;
181
+ private createParallaxEntity;
182
+ private readFile;
183
+ private getDataPath;
184
+ private extractFileName;
185
+ }
186
+ export declare function createRPGMakerImporter(): RPGMakerImporter;
@@ -0,0 +1,276 @@
1
+ /**
2
+ * @file SceneImporter.ts
3
+ * @description Base infrastructure for importing scenes from external game engine formats
4
+ * PRO-1.3: Scene Format Interoperability
5
+ *
6
+ * Supports importing from:
7
+ * - Unity (.unity, .prefab)
8
+ * - Godot (.tscn, .tres)
9
+ * - Tiled (.tmx, .tsx)
10
+ * - LDtk (.ldtk, .ldtkl)
11
+ * - Aseprite (.aseprite, .ase)
12
+ * - OGMO (.ogmo, .json)
13
+ * - GameMaker (.yy)
14
+ * - Spine (.json, .atlas)
15
+ * - DragonBones (.json)
16
+ */
17
+ import type { NiceScene, NiceEntity, NiceAsset, NiceProject } from '../export/PlatformExporter';
18
+ export type ImportSourceType = 'unity' | 'godot' | 'tiled' | 'ldtk' | 'aseprite' | 'ogmo' | 'gamemaker' | 'rpgmaker' | 'spine' | 'dragonbones' | 'live2d' | 'spriter';
19
+ export interface ImportSourceInfo {
20
+ type: ImportSourceType;
21
+ name: string;
22
+ description: string;
23
+ extensions: string[];
24
+ supportsAnimation: boolean;
25
+ supportsLayers: boolean;
26
+ supportsTilemap: boolean;
27
+ }
28
+ export declare const IMPORT_SOURCES: Record<ImportSourceType, ImportSourceInfo>;
29
+ export interface ImportOptions {
30
+ /** Source directory/file path */
31
+ sourcePath: string;
32
+ /** Target project to import into (optional, creates new if not provided) */
33
+ targetProject?: NiceProject;
34
+ /** Import assets (textures, audio, etc.) */
35
+ importAssets?: boolean;
36
+ /** Import scripts (convert to Nice2Dev format) */
37
+ importScripts?: boolean;
38
+ /** Preserve original structure */
39
+ preserveStructure?: boolean;
40
+ /** Convert coordinates (some engines use different origins) */
41
+ convertCoordinates?: boolean;
42
+ /** Scale factor for coordiantes */
43
+ scaleFactor?: number;
44
+ /** Import animations */
45
+ importAnimations?: boolean;
46
+ /** Import tilemap data */
47
+ importTilemaps?: boolean;
48
+ /** Import physics data */
49
+ importPhysics?: boolean;
50
+ /** Resolve asset dependencies */
51
+ resolveDependencies?: boolean;
52
+ /** Custom options specific to source format */
53
+ customOptions?: Record<string, unknown>;
54
+ }
55
+ export interface ImportResult {
56
+ success: boolean;
57
+ project?: NiceProject;
58
+ scenes: NiceScene[];
59
+ entities: NiceEntity[];
60
+ assets: NiceAsset[];
61
+ errors: ImportError[];
62
+ warnings: ImportWarning[];
63
+ statistics: ImportStatistics;
64
+ }
65
+ export interface ImportError {
66
+ code: string;
67
+ message: string;
68
+ file?: string;
69
+ line?: number;
70
+ fatal: boolean;
71
+ }
72
+ export interface ImportWarning {
73
+ code: string;
74
+ message: string;
75
+ file?: string;
76
+ suggestion?: string;
77
+ }
78
+ export interface ImportStatistics {
79
+ scenesImported: number;
80
+ entitiesImported: number;
81
+ assetsImported: number;
82
+ animationsImported: number;
83
+ tilemapsImported: number;
84
+ scriptsConverted: number;
85
+ importDurationMs: number;
86
+ }
87
+ /** Generic parsed scene structure */
88
+ export interface ParsedScene {
89
+ name: string;
90
+ width?: number;
91
+ height?: number;
92
+ backgroundColor?: string;
93
+ layers: ParsedLayer[];
94
+ entities: ParsedEntity[];
95
+ properties: Record<string, unknown>;
96
+ }
97
+ export interface ParsedLayer {
98
+ name: string;
99
+ type: 'tile' | 'object' | 'image' | 'group';
100
+ visible: boolean;
101
+ opacity: number;
102
+ offsetX: number;
103
+ offsetY: number;
104
+ parallaxX?: number;
105
+ parallaxY?: number;
106
+ zIndex: number;
107
+ data?: ParsedTileData;
108
+ tileData?: ParsedTileData;
109
+ objects?: ParsedEntity[];
110
+ properties: Record<string, unknown>;
111
+ }
112
+ export interface ParsedTileData {
113
+ width: number;
114
+ height: number;
115
+ tileWidth: number;
116
+ tileHeight: number;
117
+ tiles: number[];
118
+ tilesetRef?: string;
119
+ }
120
+ export interface ParsedEntity {
121
+ id: string;
122
+ name: string;
123
+ type: string;
124
+ x: number;
125
+ y: number;
126
+ width: number;
127
+ height: number;
128
+ rotation: number;
129
+ scaleX: number;
130
+ scaleY: number;
131
+ visible: boolean;
132
+ components: ParsedComponent[];
133
+ children: ParsedEntity[];
134
+ properties: Record<string, unknown>;
135
+ }
136
+ export interface ParsedComponent {
137
+ type: string;
138
+ data: Record<string, unknown>;
139
+ }
140
+ export interface ParsedTileset {
141
+ name: string;
142
+ imagePath: string;
143
+ tileWidth: number;
144
+ tileHeight: number;
145
+ tileCount: number;
146
+ columns: number;
147
+ margin: number;
148
+ spacing: number;
149
+ tiles?: ParsedTileInfo[];
150
+ properties: Record<string, unknown>;
151
+ }
152
+ export interface ParsedTileInfo {
153
+ id: number;
154
+ type?: string;
155
+ properties?: Record<string, unknown>;
156
+ animation?: ParsedTileAnimation[];
157
+ collision?: ParsedCollisionShape[];
158
+ }
159
+ export interface ParsedTileAnimation {
160
+ tileId: number;
161
+ duration: number;
162
+ }
163
+ export interface ParsedCollisionShape {
164
+ type: 'rectangle' | 'ellipse' | 'polygon' | 'polyline';
165
+ x: number;
166
+ y: number;
167
+ width?: number;
168
+ height?: number;
169
+ points?: {
170
+ x: number;
171
+ y: number;
172
+ }[];
173
+ }
174
+ export interface ParsedAnimation {
175
+ name: string;
176
+ frames: ParsedAnimationFrame[];
177
+ loop: boolean;
178
+ events?: ParsedAnimationEvent[];
179
+ }
180
+ export interface ParsedAnimationFrame {
181
+ index: number;
182
+ duration: number;
183
+ x?: number;
184
+ y?: number;
185
+ width?: number;
186
+ height?: number;
187
+ offsetX?: number;
188
+ offsetY?: number;
189
+ }
190
+ export interface ParsedAnimationEvent {
191
+ frame: number;
192
+ name: string;
193
+ data?: Record<string, unknown>;
194
+ }
195
+ export interface ParsedAsset {
196
+ id: string;
197
+ name: string;
198
+ type: 'texture' | 'audio' | 'font' | 'shader' | 'script' | 'data' | 'animation' | 'tileset';
199
+ path: string;
200
+ data?: ArrayBuffer | string;
201
+ metadata: Record<string, unknown>;
202
+ }
203
+ export interface ParsedSpriteSheet {
204
+ name: string;
205
+ imagePath: string;
206
+ frames: ParsedSpriteFrame[];
207
+ animations?: Record<string, ParsedAnimation>;
208
+ }
209
+ export interface ParsedSpriteFrame {
210
+ name: string;
211
+ x: number;
212
+ y: number;
213
+ width: number;
214
+ height: number;
215
+ pivotX?: number;
216
+ pivotY?: number;
217
+ trimmed?: boolean;
218
+ sourceWidth?: number;
219
+ sourceHeight?: number;
220
+ offsetX?: number;
221
+ offsetY?: number;
222
+ }
223
+ export declare abstract class SceneImporter {
224
+ protected sourceType: ImportSourceType;
225
+ protected options: ImportOptions;
226
+ protected errors: ImportError[];
227
+ protected warnings: ImportWarning[];
228
+ constructor(sourceType: ImportSourceType);
229
+ /** Get importer source info */
230
+ getSourceInfo(): ImportSourceInfo;
231
+ /** Check if this importer can handle the given file */
232
+ canHandle(filePath: string): boolean;
233
+ /** Import scenes/data from source */
234
+ abstract import(options: ImportOptions): Promise<ImportResult>;
235
+ /** Parse a single file (for preview or partial import) */
236
+ abstract parseFile(content: string | ArrayBuffer, filePath: string): Promise<ParsedScene | ParsedAsset | null>;
237
+ /** Validate source before import */
238
+ abstract validate(sourcePath: string): Promise<ImportError[]>;
239
+ protected addError(code: string, message: string, file?: string, line?: number, fatal?: boolean): void;
240
+ protected addWarning(code: string, message: string, file?: string, suggestion?: string): void;
241
+ protected clearMessages(): void;
242
+ /** Convert parsed scene to Nice2Dev scene */
243
+ protected convertToNiceScene(parsed: ParsedScene): NiceScene;
244
+ /** Alias for convertToNiceScene (used by subclass importers) */
245
+ protected convertParsedToNiceScene(parsed: ParsedScene): NiceScene;
246
+ /** Flatten layer-based entities into single list */
247
+ protected flattenEntities(entities: ParsedEntity[], layers: ParsedLayer[]): ParsedEntity[];
248
+ /** Convert parsed entity to Nice2Dev entity */
249
+ protected convertToNiceEntity(parsed: ParsedEntity): NiceEntity;
250
+ /** Convert a component from source format to Nice2Dev format */
251
+ protected convertComponent(parsed: ParsedComponent): NiceEntity['components'][0];
252
+ /** Convert parsed asset to Nice2Dev asset */
253
+ protected convertToNiceAsset(parsed: ParsedAsset): NiceAsset;
254
+ /** Generate unique ID */
255
+ protected generateId(): string;
256
+ /** Create empty import result */
257
+ protected createEmptyResult(): ImportResult;
258
+ /** Create successful result */
259
+ protected createResult(scenes: NiceScene[], assets: NiceAsset[], startTime: number, project?: NiceProject): ImportResult;
260
+ }
261
+ /** Parse YAML content (basic implementation) */
262
+ export declare function parseYAML(content: string): unknown;
263
+ /** Parse XML content to object */
264
+ export declare function parseXML(content: string): XMLNode;
265
+ export interface XMLNode {
266
+ name: string;
267
+ attributes: Record<string, string>;
268
+ children: XMLNode[];
269
+ text: string;
270
+ }
271
+ /** Detect import source type from file */
272
+ export declare function detectSourceType(filePath: string, content?: string): ImportSourceType | null;
273
+ /** Get all available importers */
274
+ export declare function getAvailableImporters(): ImportSourceInfo[];
275
+ /** Check if an importer exists for the given source type */
276
+ export declare function hasImporter(sourceType: ImportSourceType): boolean;