zimporter-phaser 1.0.42 → 1.0.44

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 CHANGED
@@ -33,7 +33,7 @@ npm install zimporter-phaser@latest
33
33
 
34
34
  ## HTML Setup
35
35
 
36
- To use zImporter in a browser environment, include the following scripts in your HTML file:
36
+ To use zImporter in a browser (without a bundler), include the following scripts in your HTML file:
37
37
 
38
38
  ```html
39
39
  <!DOCTYPE html>
@@ -47,45 +47,87 @@ To use zImporter in a browser environment, include the following scripts in your
47
47
  <!-- Spine plugin for Phaser -->
48
48
  <script src="./node_modules/@esotericsoftware/spine-phaser/dist/iife/spine-phaser.js"></script>
49
49
  <style>
50
- body {
51
- margin: 0;
52
- overflow: hidden;
53
- }
54
- #game-container {
55
- width: 100vw;
56
- height: 100vh;
57
- }
50
+ body { margin: 0; overflow: hidden; }
51
+ #game-container { width: 100vw; height: 100vh; }
58
52
  </style>
59
53
  </head>
60
54
  <body>
61
55
  <div id="game-container"></div>
62
56
  <script>
63
- // Your Phaser game code here
57
+ // All zImporter classes are available under the `zimporter` global namespace:
58
+ // zimporter.ZScene, zimporter.ZTimeline, zimporter.ZUpdatables, etc.
59
+
60
+ const sceneJsonPath = './assets/myScene/';
61
+
62
+ class MyPhaserScene extends Phaser.Scene {
63
+ create() {
64
+ zimporter.ZUpdatables.init(24);
65
+ this._frameCount = 0;
66
+ this._lastTime = performance.now();
67
+ this._fpsText = this.add.text(10, 10, 'FPS: --', {
68
+ fontSize: '16px', fill: '#ffffff'
69
+ }).setDepth(9999);
70
+
71
+ this.zScene = new zimporter.ZScene('testScene', this);
72
+ this.zScene.load(sceneJsonPath, () => {
73
+ this.zScene.loadStage(this);
74
+
75
+ const stage = this.zScene.sceneStage;
76
+ for (const child of stage.list) {
77
+ if (child instanceof zimporter.ZTimeline) {
78
+ child.play();
79
+ }
80
+ }
81
+ });
82
+ }
83
+
84
+ update(time, delta) {
85
+ this._frameCount++;
86
+ const now = performance.now();
87
+ const elapsed = now - this._lastTime;
88
+ if (elapsed >= 1000) {
89
+ const fps = (this._frameCount / elapsed) * 1000;
90
+ this._fpsText.setText(`FPS: ${fps.toFixed(1)}`);
91
+ this._frameCount = 0;
92
+ this._lastTime = now;
93
+ }
94
+ zimporter.ZUpdatables.update();
95
+ }
96
+ }
97
+
98
+ const config = {
99
+ type: Phaser.AUTO,
100
+ width: window.innerWidth,
101
+ height: window.innerHeight,
102
+ parent: 'game-container',
103
+ scene: [MyPhaserScene],
104
+ backgroundColor: '#000000',
105
+ scale: {
106
+ mode: Phaser.Scale.RESIZE,
107
+ autoCenter: Phaser.Scale.CENTER_BOTH
108
+ },
109
+ plugins: {
110
+ scene: [{
111
+ key: 'SpinePlugin',
112
+ plugin: spine.SpinePlugin,
113
+ mapping: 'spine'
114
+ }]
115
+ }
116
+ };
117
+
118
+ const game = new Phaser.Game(config);
119
+
120
+ window.addEventListener('resize', () => {
121
+ const scene = game.scene.scenes[0];
122
+ if (scene && scene.zScene) {
123
+ scene.zScene.resize(window.innerWidth, window.innerHeight);
124
+ }
125
+ });
64
126
  </script>
65
127
  </body>
66
128
  </html>
67
129
  ```
68
130
 
69
- Make sure to configure the Spine plugin in your Phaser game config:
70
-
71
- ```javascript
72
- const config = {
73
- type: Phaser.AUTO,
74
- width: 800,
75
- height: 600,
76
- parent: 'game-container',
77
- scene: GameScene,
78
- backgroundColor: 0x000000,
79
- plugins: {
80
- scene: [{
81
- key: 'SpinePlugin',
82
- plugin: spine.SpinePlugin,
83
- mapping: 'spine'
84
- }]
85
- }
86
- };
87
- ```
88
-
89
131
  ## Building
90
132
  npm run package
91
133
 
@@ -107,30 +149,73 @@ import { ZTimeline } from 'zimporter-phaser';
107
149
  ```ts
108
150
  import Phaser from 'phaser';
109
151
  import * as spine from '@esotericsoftware/spine-phaser';
110
- import { ZSceneStack, ZUpdatables } from 'zimporter-phaser';
152
+ import { ZScene, ZTimeline, ZUpdatables } from 'zimporter-phaser';
153
+
154
+ const sceneJsonPath = './assets/myScene/';
111
155
 
112
156
  class GameScene extends Phaser.Scene {
157
+ private zScene!: ZScene;
158
+ private _frameCount = 0;
159
+ private _lastTime = 0;
160
+ private _fpsText!: Phaser.GameObjects.Text;
161
+
113
162
  preload() {
114
- // Load your assets here
163
+ // Optionally preload assets here
115
164
  }
116
165
 
117
166
  create() {
118
- ZSceneStack.init(this);
119
167
  ZUpdatables.init(24);
120
- // Your game initialization code
168
+
169
+ // Optional FPS display
170
+ this._lastTime = performance.now();
171
+ this._fpsText = this.add.text(10, 10, 'FPS: --', {
172
+ fontSize: '16px',
173
+ color: '#ffffff'
174
+ }).setDepth(9999);
175
+
176
+ // Load the zStudio scene
177
+ this.zScene = new ZScene('testScene', this);
178
+ this.zScene.load(sceneJsonPath, () => {
179
+ this.zScene.loadStage(this);
180
+
181
+ // Play any top-level timelines
182
+ const stage = this.zScene.sceneStage;
183
+ for (const child of stage.list) {
184
+ if (child instanceof ZTimeline) {
185
+ child.play();
186
+ }
187
+ }
188
+ });
121
189
  }
122
190
 
123
191
  update(time: number, delta: number) {
192
+ // FPS counter
193
+ this._frameCount++;
194
+ const now = performance.now();
195
+ const elapsed = now - this._lastTime;
196
+ if (elapsed >= 1000) {
197
+ const fps = (this._frameCount / elapsed) * 1000;
198
+ this._fpsText.setText(`FPS: ${fps.toFixed(1)}`);
199
+ this._frameCount = 0;
200
+ this._lastTime = now;
201
+ }
202
+
203
+ // delta is in ms — advance all registered updatables (timelines, etc.)
124
204
  ZUpdatables.update();
125
205
  }
126
206
  }
127
207
 
128
208
  const config: Phaser.Types.Core.GameConfig = {
129
209
  type: Phaser.AUTO,
130
- width: 800,
131
- height: 600,
132
- scene: GameScene,
133
- backgroundColor: 0x000000,
210
+ width: window.innerWidth,
211
+ height: window.innerHeight,
212
+ parent: 'game-container',
213
+ backgroundColor: '#000000',
214
+ scene: [GameScene],
215
+ scale: {
216
+ mode: Phaser.Scale.RESIZE,
217
+ autoCenter: Phaser.Scale.CENTER_BOTH
218
+ },
134
219
  plugins: {
135
220
  scene: [{
136
221
  key: 'SpinePlugin',
@@ -141,51 +226,35 @@ const config: Phaser.Types.Core.GameConfig = {
141
226
  };
142
227
 
143
228
  const game = new Phaser.Game(config);
144
- ```
145
-
146
- > This sets up a Phaser game and integrates zImporter's update system.
147
229
 
148
- ### Example: Loading and Displaying a Scene from zStudio
149
-
150
- ```ts
151
- import Phaser from 'phaser';
152
- import { ZScene, ZSceneStack, ZTimeline } from 'zimporter-phaser';
153
-
154
- class GameScene extends Phaser.Scene {
155
- create() {
156
- const scene = new ZScene();
157
- scene.load('./assets/robo/', () => {
158
- ZSceneStack.push(scene);
159
- const mc = ZSceneStack.spawn('RobotWalker') as ZTimeline;
160
- mc.play();
161
- this.add.existing(mc);
162
- mc.x = 100;
163
- mc.y = 200;
164
- });
230
+ // Handle window resize
231
+ window.addEventListener('resize', () => {
232
+ const scene = game.scene.scenes[0] as any;
233
+ if (scene?.zScene) {
234
+ scene.zScene.resize(window.innerWidth, window.innerHeight);
165
235
  }
166
- }
236
+ });
167
237
  ```
168
238
 
239
+ > This sets up a Phaser game and integrates zImporter's update system.
240
+
169
241
  ### Example: Loading a Stage Created in zStudio
170
242
 
171
243
  ```ts
172
- import Phaser from 'phaser';
173
- import { ZScene, ZSceneStack } from 'zimporter-phaser';
174
-
175
- class GameScene extends Phaser.Scene {
176
- create() {
177
- const loadPath = (window as any).loadPath;
178
- const scene = new ZScene('testScene');
179
- scene.load(loadPath, () => {
180
- ZSceneStack.push(scene);
181
- scene.loadStage(this);
182
- });
244
+ // Inside your Phaser Scene's create():
245
+ const scene = new ZScene('testScene', this);
246
+ scene.load('./assets/myScene/', () => {
247
+ scene.loadStage(this);
248
+
249
+ // Access spawned objects by name
250
+ const stage = scene.sceneStage;
251
+ const btn = stage.get('myButton') as ZButton;
252
+ if (btn) {
253
+ btn.setCallback(() => console.log('clicked'));
183
254
  }
184
- }
255
+ });
185
256
  ```
186
257
 
187
- > Each `ZScene` has a stage associated with it. This preserves the position and orientation logic defined in **zStudio**. Always add the scene stage to the scene.
188
-
189
258
  ## API
190
259
 
191
260
  The package exposes several classes and methods for interacting with imported assets:
@@ -0,0 +1,15 @@
1
+ export declare class ParticleConverter {
2
+ /**
3
+ * Converts PIXI particles v5 configuration to Phaser 3 particle configuration
4
+ */
5
+ static pixiToPhaserConfig(pixiConfig: any): any;
6
+ private static processBehavior;
7
+ private static processAlphaBehavior;
8
+ private static processScaleBehavior;
9
+ private static processColorBehavior;
10
+ private static processMoveSpeedBehavior;
11
+ private static processRotationStaticBehavior;
12
+ private static processSpawnBurstBehavior;
13
+ static hexToInt(hex: string): number;
14
+ }
15
+ //# sourceMappingURL=ParticleConverter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParticleConverter.d.ts","sourceRoot":"","sources":["../src/ParticleConverter.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAiB;IAC1B;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,UAAU,EAAE,GAAG,GAAG,GAAG;IAkF/C,OAAO,CAAC,MAAM,CAAC,eAAe;IA4B9B,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAanC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAanC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAanC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IA2BvC,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAS5C,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAmBxC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAIvC"}
@@ -0,0 +1,138 @@
1
+ export class ParticleConverter {
2
+ /**
3
+ * Converts PIXI particles v5 configuration to Phaser 3 particle configuration
4
+ */
5
+ static pixiToPhaserConfig(pixiConfig) {
6
+ const phaserConfig = {
7
+ // Basic properties
8
+ lifespan: this.extractLifetime(pixiConfig),
9
+ frequency: this.extractFrequency(pixiConfig),
10
+ maxParticles: pixiConfig.maxParticles || 100
11
+ };
12
+ // Process behaviors
13
+ if (pixiConfig.behaviors && Array.isArray(pixiConfig.behaviors)) {
14
+ for (const behavior of pixiConfig.behaviors) {
15
+ this.processBehavior(behavior, phaserConfig);
16
+ }
17
+ }
18
+ return phaserConfig;
19
+ }
20
+ static extractLifetime(pixiConfig) {
21
+ const lifetime = pixiConfig.lifetime;
22
+ if (lifetime) {
23
+ if (lifetime.min !== undefined && lifetime.max !== undefined) {
24
+ return { min: lifetime.min * 1000, max: lifetime.max * 1000 }; // Convert to ms
25
+ }
26
+ return (lifetime.min || lifetime.max || lifetime) * 1000;
27
+ }
28
+ return 1000; // Default 1 second
29
+ }
30
+ static extractFrequency(pixiConfig) {
31
+ if (pixiConfig.frequency) {
32
+ // PIXI frequency is particles per second, Phaser wants interval in ms
33
+ return 1000 / (1 / pixiConfig.frequency);
34
+ }
35
+ return 100; // Default 100ms interval
36
+ }
37
+ static processBehavior(behavior, phaserConfig) {
38
+ switch (behavior.type) {
39
+ case 'alpha':
40
+ this.processAlpha(behavior.config, phaserConfig);
41
+ break;
42
+ case 'scale':
43
+ this.processScale(behavior.config, phaserConfig);
44
+ break;
45
+ case 'color':
46
+ this.processColor(behavior.config, phaserConfig);
47
+ break;
48
+ case 'moveSpeed':
49
+ this.processMoveSpeed(behavior.config, phaserConfig);
50
+ break;
51
+ case 'rotationStatic':
52
+ this.processRotationStatic(behavior.config, phaserConfig);
53
+ break;
54
+ case 'spawnBurst':
55
+ this.processSpawnBurst(behavior.config, phaserConfig);
56
+ break;
57
+ case 'textureSingle':
58
+ // Texture is handled separately in ZScene
59
+ break;
60
+ default:
61
+ console.warn('Unknown PIXI particle behavior:', behavior.type);
62
+ }
63
+ }
64
+ static processAlpha(config, phaserConfig) {
65
+ if (config.alpha?.list) {
66
+ const alphaList = config.alpha.list;
67
+ if (alphaList.length >= 2) {
68
+ phaserConfig.alpha = {
69
+ start: alphaList[0].value,
70
+ end: alphaList[alphaList.length - 1].value
71
+ };
72
+ }
73
+ }
74
+ }
75
+ static processScale(config, phaserConfig) {
76
+ if (config.scale?.list) {
77
+ const scaleList = config.scale.list;
78
+ if (scaleList.length >= 2) {
79
+ phaserConfig.scale = {
80
+ start: scaleList[0].value,
81
+ end: scaleList[scaleList.length - 1].value
82
+ };
83
+ }
84
+ }
85
+ }
86
+ static processColor(config, phaserConfig) {
87
+ if (config.color?.list) {
88
+ const colorList = config.color.list;
89
+ if (colorList.length >= 1) {
90
+ // Phaser uses tint for color changes
91
+ phaserConfig.tint = colorList.map((c) => c.value);
92
+ }
93
+ }
94
+ }
95
+ static processMoveSpeed(config, phaserConfig) {
96
+ if (config.speed?.list) {
97
+ const speedList = config.speed.list;
98
+ if (speedList.length >= 2) {
99
+ phaserConfig.speed = {
100
+ min: speedList[speedList.length - 1].value,
101
+ max: speedList[0].value
102
+ };
103
+ }
104
+ else if (speedList.length === 1) {
105
+ phaserConfig.speed = speedList[0].value;
106
+ }
107
+ }
108
+ }
109
+ static processRotationStatic(config, phaserConfig) {
110
+ if (config.min !== undefined && config.max !== undefined) {
111
+ phaserConfig.rotate = {
112
+ min: Phaser.Math.DegToRad(config.min),
113
+ max: Phaser.Math.DegToRad(config.max)
114
+ };
115
+ }
116
+ }
117
+ static processSpawnBurst(config, phaserConfig) {
118
+ if (config.particlesPerWave) {
119
+ phaserConfig.quantity = config.particlesPerWave;
120
+ }
121
+ if (config.angle) {
122
+ phaserConfig.angle = {
123
+ min: config.angle.min,
124
+ max: config.angle.max
125
+ };
126
+ }
127
+ if (config.radius !== undefined) {
128
+ phaserConfig.radial = config.radius > 0;
129
+ }
130
+ }
131
+ /**
132
+ * Helper method to convert hex color strings to Phaser color integers
133
+ */
134
+ static hexToInt(hex) {
135
+ return parseInt(hex.replace('#', ''), 16);
136
+ }
137
+ }
138
+ //# sourceMappingURL=ParticleConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParticleConverter.js","sourceRoot":"","sources":["../src/ParticleConverter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export declare class ParticleConverter {
2
+ /**
3
+ * Converts PIXI particles v5 configuration to Phaser 3 particle configuration
4
+ * Based on official PIXI particles v5 documentation and examples
5
+ */
6
+ static pixiToPhaserConfig(pixiConfig: any): any;
7
+ private static processBehavior;
8
+ private static processAlphaBehavior;
9
+ private static processScaleBehavior;
10
+ private static processColorBehavior;
11
+ private static processMoveSpeedBehavior;
12
+ private static processRotationStaticBehavior;
13
+ private static processSpawnBurstBehavior;
14
+ /**
15
+ * Convert hex color string to integer (with or without #)
16
+ */
17
+ static hexToInt(hex: string): number;
18
+ }
19
+ //# sourceMappingURL=ParticleConverterFixed2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParticleConverterFixed2.d.ts","sourceRoot":"","sources":["../src/ParticleConverterFixed2.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAiB;IAC1B;;;OAGG;IACH,MAAM,CAAC,kBAAkB,CAAC,UAAU,EAAE,GAAG,GAAG,GAAG;IAkE/C,OAAO,CAAC,MAAM,CAAC,eAAe;IA8B9B,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAenC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAcnC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAenC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAyBvC,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAW5C,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAgCxC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAKvC"}
package/dist/ZButton.d.ts CHANGED
@@ -20,7 +20,7 @@ export declare class ZButton extends ZContainer {
20
20
  disabledState?: ZContainer;
21
21
  disabledLabelContainer?: ZContainer;
22
22
  disabledLabelContainer2?: ZContainer;
23
- callback?: () => void;
23
+ pressCallback?: () => void;
24
24
  longPressCallback?: () => void;
25
25
  private labelState;
26
26
  getType(): string;
@@ -30,6 +30,10 @@ export declare class ZButton extends ZContainer {
30
30
  setLabel2(name: string): void;
31
31
  setFixedTextSize(fixed: boolean): void;
32
32
  makeSingleLine(): void;
33
+ getLabel(): Phaser.GameObjects.Text | null;
34
+ getLabel2(): Phaser.GameObjects.Text | null;
35
+ hasLabel(): boolean;
36
+ hasLabel2(): boolean;
33
37
  setCallback(func: () => void): void;
34
38
  removeCallback(): void;
35
39
  setLongPressCallback(func: () => void): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ZButton.d.ts","sourceRoot":"","sources":["../src/ZButton.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C,eAAO,MAAM,mBAAmB,GAAI,WAAW,MAAM,CAAC,WAAW,CAAC,SAAS,KAAG,IAO7E,CAAC;AAIF,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,GAAG;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAA;CAAE,QAsDzH;AAID,eAAO,MAAM,mBAAmB,GAC5B,WAAW,MAAM,CAAC,WAAW,CAAC,SAAS,EACvC,gBAAgB,MAAM,IAAI,EAC1B,oBAAoB,MAAM,IAAI,KAC/B,IA4DF,CAAA;AAED,qBAAa,OAAQ,SAAQ,UAAU;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;IAC/C,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAChC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAE/B,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAChC,mBAAmB,CAAC,EAAE,UAAU,CAAC;IAEjC,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAChC,mBAAmB,CAAC,EAAE,UAAU,CAAC;IAEjC,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAE/B,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,sBAAsB,CAAC,EAAE,UAAU,CAAC;IACpC,uBAAuB,CAAC,EAAE,UAAU,CAAC;IAErC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAE/B,OAAO,CAAC,UAAU,CAAsB;IAEjC,OAAO,IAAI,MAAM;IAIxB,IAAI,CAAC,SAAS,GAAE,MAAW;IA0C3B,cAAc;IAMd,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAgB5B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAgB7B,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAItC,cAAc,IAAI,IAAI;IAItB,WAAW,CAAC,IAAI,EAAE,MAAM,IAAI;IAI5B,cAAc;IAId,oBAAoB,CAAC,IAAI,EAAE,MAAM,IAAI;IAIrC,uBAAuB;IAIvB,SAAS;IAIT,MAAM;IAmCN,OAAO;IAmBP,aAAa;IAOb,MAAM;IAgBN,KAAK;IAgBL,MAAM;CAeT"}
1
+ {"version":3,"file":"ZButton.d.ts","sourceRoot":"","sources":["../src/ZButton.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C,eAAO,MAAM,mBAAmB,GAAI,WAAW,MAAM,CAAC,WAAW,CAAC,SAAS,KAAG,IAO7E,CAAC;AAIF,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,GAAG;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAA;CAAE,QAsDzH;AAID,eAAO,MAAM,mBAAmB,GAC5B,WAAW,MAAM,CAAC,WAAW,CAAC,SAAS,EACvC,gBAAgB,MAAM,IAAI,EAC1B,oBAAoB,MAAM,IAAI,KAC/B,IAmEF,CAAA;AAED,qBAAa,OAAQ,SAAQ,UAAU;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;IAC/C,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAChC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAE/B,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAChC,mBAAmB,CAAC,EAAE,UAAU,CAAC;IAEjC,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAChC,mBAAmB,CAAC,EAAE,UAAU,CAAC;IAEjC,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAE/B,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,sBAAsB,CAAC,EAAE,UAAU,CAAC;IACpC,uBAAuB,CAAC,EAAE,UAAU,CAAC;IAErC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAE/B,OAAO,CAAC,UAAU,CAAsB;IAEjC,OAAO,IAAI,MAAM;IAIxB,IAAI,CAAC,SAAS,GAAE,MAAW;IA0C3B,cAAc;IAMd,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAgB5B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAgB7B,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAOtC,cAAc,IAAI,IAAI;IAYf,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI;IAS1C,SAAS,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI;IAS3C,QAAQ,IAAI,OAAO;IAInB,SAAS,IAAI,OAAO;IAI3B,WAAW,CAAC,IAAI,EAAE,MAAM,IAAI;IAI5B,cAAc;IAId,oBAAoB,CAAC,IAAI,EAAE,MAAM,IAAI;IAIrC,uBAAuB;IAIvB,SAAS;IAIT,MAAM;IA6BN,OAAO;IAmBP,aAAa;IAOb,MAAM;IAgBN,KAAK;IAgBL,MAAM;CAeT"}
@@ -16,6 +16,7 @@ export declare class ZContainer extends Phaser.GameObjects.Container {
16
16
  name: string;
17
17
  _fitToScreen: boolean;
18
18
  emitter?: Phaser.GameObjects.Particles.ParticleEmitter;
19
+ particleSystems: Phaser.GameObjects.Particles.ParticleEmitter[];
19
20
  originalTextWidth?: number;
20
21
  originalTextHeight?: number;
21
22
  originalFontSize?: number;
@@ -49,7 +50,20 @@ export declare class ZContainer extends Phaser.GameObjects.Container {
49
50
  setScaleY(y?: number): this;
50
51
  applyAnchor(): void;
51
52
  isAnchored(): boolean;
53
+ setAlpha(value: number): this;
54
+ getAlpha(): number;
55
+ setVisible(value: boolean): this;
56
+ getVisible(): boolean;
57
+ getTextStyle(): Phaser.Types.GameObjects.Text.TextStyle | null;
58
+ /**
59
+ * Creates a shallow structural clone of this `ZContainer`, copying position,
60
+ * scale, rotation, alpha, visibility, and name. Direct children are cloned
61
+ * by type: `Phaser.GameObjects.Text`, `Phaser.GameObjects.Image`,
62
+ * `Phaser.GameObjects.NineSlice`, and any object that exposes its own `clone()` method.
63
+ */
64
+ clone(): ZContainer;
52
65
  getAllOfType(type: string): ZContainer[];
66
+ addParticleSystem(particles: Phaser.GameObjects.Particles.ParticleEmitter): void;
53
67
  loadParticle(emitterConfig: any, textureKey: string): void;
54
68
  playParticleAnim(): void;
55
69
  stopParticleAnim(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ZContainer.d.ts","sourceRoot":"","sources":["../src/ZContainer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ZContainer.d.ts","sourceRoot":"","sources":["../src/ZContainer.ts"],"names":[],"mappings":"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"}