@safe-engine/pixi 8.1.4 → 8.2.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 (164) hide show
  1. package/README.md +9 -3
  2. package/dist/@types/index.d.ts +2 -0
  3. package/dist/@types/safex.d.ts +168 -0
  4. package/dist/app.d.ts +1 -2
  5. package/dist/app.d.ts.map +1 -1
  6. package/dist/app.js +25 -24
  7. package/dist/base/EnhancedComponent.d.ts +25 -0
  8. package/dist/base/EnhancedComponent.d.ts.map +1 -0
  9. package/dist/base/EnhancedComponent.js +26 -0
  10. package/dist/base/gworld.d.ts +8 -0
  11. package/dist/base/gworld.d.ts.map +1 -0
  12. package/dist/base/gworld.js +16 -0
  13. package/dist/base/index.d.ts +4 -0
  14. package/dist/base/index.d.ts.map +1 -0
  15. package/dist/base/index.js +3 -0
  16. package/dist/base/utils.d.ts +6 -0
  17. package/dist/base/utils.d.ts.map +1 -0
  18. package/dist/base/utils.js +3 -0
  19. package/dist/collider/CollideComponent.d.ts +63 -0
  20. package/dist/collider/CollideComponent.d.ts.map +1 -0
  21. package/dist/collider/CollideComponent.js +236 -0
  22. package/dist/collider/CollideSystem.d.ts +26 -0
  23. package/dist/collider/CollideSystem.d.ts.map +1 -0
  24. package/dist/collider/CollideSystem.js +159 -0
  25. package/dist/collider/helper/Intersection.d.ts +7 -0
  26. package/dist/collider/helper/Intersection.d.ts.map +1 -0
  27. package/dist/collider/helper/Intersection.js +111 -0
  28. package/dist/collider/helper/utils.d.ts +3 -0
  29. package/dist/collider/helper/utils.d.ts.map +1 -0
  30. package/dist/collider/helper/utils.js +11 -0
  31. package/dist/collider/index.d.ts +3 -0
  32. package/dist/collider/index.d.ts.map +1 -0
  33. package/dist/collider/index.js +2 -0
  34. package/dist/components/BaseComponent.d.ts +6 -5
  35. package/dist/components/BaseComponent.d.ts.map +1 -1
  36. package/dist/components/BaseComponent.js +7 -9
  37. package/dist/components/GUIComponent.d.ts +22 -19
  38. package/dist/components/GUIComponent.d.ts.map +1 -1
  39. package/dist/components/GUIComponent.js +27 -44
  40. package/dist/components/NoRenderComponent.d.ts +33 -0
  41. package/dist/components/NodeComp.d.ts +13 -13
  42. package/dist/components/NodeComp.d.ts.map +1 -1
  43. package/dist/components/NodeComp.js +32 -28
  44. package/dist/components/RenderComponent.d.ts +7 -6
  45. package/dist/components/Scene.d.ts +2 -3
  46. package/dist/components/Scene.d.ts.map +1 -1
  47. package/dist/components/Scene.js +6 -10
  48. package/dist/core/Color.d.ts +1 -0
  49. package/dist/core/Color.d.ts.map +1 -1
  50. package/dist/core/Color.js +3 -6
  51. package/dist/core/LoadingBar.js +10 -15
  52. package/dist/core/NodePool.d.ts +9 -0
  53. package/dist/core/NodePool.d.ts.map +1 -0
  54. package/dist/core/NodePool.js +24 -0
  55. package/dist/core/Size.js +1 -4
  56. package/dist/core/director.d.ts +3 -0
  57. package/dist/core/director.d.ts.map +1 -0
  58. package/dist/core/director.js +7 -0
  59. package/dist/core/math.d.ts +4 -0
  60. package/dist/core/math.d.ts.map +1 -0
  61. package/dist/core/math.js +10 -0
  62. package/dist/dragonbones/DragonBonesComponent.d.ts +17 -0
  63. package/dist/dragonbones/DragonBonesComponent.d.ts.map +1 -0
  64. package/dist/dragonbones/DragonBonesComponent.js +18 -0
  65. package/dist/dragonbones/DragonBonesSystem.d.ts +6 -0
  66. package/dist/dragonbones/DragonBonesSystem.d.ts.map +1 -0
  67. package/dist/dragonbones/DragonBonesSystem.js +29 -0
  68. package/dist/dragonbones/index.d.ts +3 -0
  69. package/dist/dragonbones/index.d.ts.map +1 -0
  70. package/dist/dragonbones/index.js +2 -0
  71. package/dist/gui/GUIComponent.d.ts +99 -0
  72. package/dist/gui/GUIComponent.d.ts.map +1 -0
  73. package/dist/gui/GUIComponent.js +123 -0
  74. package/dist/{systems → gui}/GUISystem.d.ts +1 -1
  75. package/dist/gui/GUISystem.d.ts.map +1 -0
  76. package/dist/gui/GUISystem.js +100 -0
  77. package/dist/helper/html-text-parser.d.ts +19 -29
  78. package/dist/helper/html-text-parser.d.ts.map +1 -1
  79. package/dist/helper/html-text-parser.js +57 -346
  80. package/dist/helper/utils.d.ts +2 -3
  81. package/dist/helper/utils.d.ts.map +1 -1
  82. package/dist/helper/utils.js +18 -23
  83. package/dist/index.d.ts +16 -6
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +22 -28
  86. package/dist/norender/NoRenderComponent.d.ts +33 -0
  87. package/dist/norender/NoRenderComponent.d.ts.map +1 -0
  88. package/dist/norender/NoRenderComponent.js +50 -0
  89. package/dist/norender/NoRenderSystem.d.ts +5 -0
  90. package/dist/norender/NoRenderSystem.d.ts.map +1 -0
  91. package/dist/norender/NoRenderSystem.js +57 -0
  92. package/dist/planck/PhysicsComponent.d.ts +37 -0
  93. package/dist/planck/PhysicsComponent.d.ts.map +1 -0
  94. package/dist/planck/PhysicsComponent.js +52 -0
  95. package/dist/planck/PhysicsSprite.d.ts +16 -0
  96. package/dist/planck/PhysicsSprite.d.ts.map +1 -0
  97. package/dist/planck/PhysicsSprite.js +31 -0
  98. package/dist/planck/PhysicsSystem.d.ts +20 -0
  99. package/dist/planck/PhysicsSystem.d.ts.map +1 -0
  100. package/dist/planck/PhysicsSystem.js +187 -0
  101. package/dist/planck/index.d.ts +4 -0
  102. package/dist/planck/index.d.ts.map +1 -0
  103. package/dist/planck/index.js +3 -0
  104. package/dist/render/RenderComponent.d.ts +52 -0
  105. package/dist/render/RenderComponent.d.ts.map +1 -0
  106. package/dist/render/RenderComponent.js +104 -0
  107. package/dist/render/RenderSystem.d.ts.map +1 -0
  108. package/dist/render/RenderSystem.js +65 -0
  109. package/dist/spine/SpineComponent.d.ts +10 -0
  110. package/dist/spine/SpineComponent.d.ts.map +1 -0
  111. package/dist/spine/SpineComponent.js +3 -0
  112. package/dist/spine/SpineSystem.d.ts +5 -0
  113. package/dist/spine/SpineSystem.d.ts.map +1 -0
  114. package/dist/spine/SpineSystem.js +25 -0
  115. package/dist/spine/index.d.ts +3 -0
  116. package/dist/spine/index.d.ts.map +1 -0
  117. package/dist/spine/index.js +2 -0
  118. package/dist/spine/lib/BatchableSpineSlot.d.ts +59 -0
  119. package/dist/spine/lib/BatchableSpineSlot.d.ts.map +1 -0
  120. package/dist/spine/lib/BatchableSpineSlot.js +86 -0
  121. package/dist/spine/lib/Spine.d.ts +239 -0
  122. package/dist/spine/lib/Spine.d.ts.map +1 -0
  123. package/dist/spine/lib/Spine.js +628 -0
  124. package/dist/spine/lib/SpineDebugRenderer.d.ts +109 -0
  125. package/dist/spine/lib/SpineDebugRenderer.d.ts.map +1 -0
  126. package/dist/spine/lib/SpineDebugRenderer.js +474 -0
  127. package/dist/spine/lib/SpinePipe.d.ts +49 -0
  128. package/dist/spine/lib/SpinePipe.d.ts.map +1 -0
  129. package/dist/spine/lib/SpinePipe.js +148 -0
  130. package/dist/spine/lib/SpineTexture.d.ts +45 -0
  131. package/dist/spine/lib/SpineTexture.d.ts.map +1 -0
  132. package/dist/spine/lib/SpineTexture.js +114 -0
  133. package/dist/spine/lib/assets/atlasLoader.d.ts +34 -0
  134. package/dist/spine/lib/assets/atlasLoader.d.ts.map +1 -0
  135. package/dist/spine/lib/assets/atlasLoader.js +122 -0
  136. package/dist/spine/lib/assets/skeletonLoader.d.ts +30 -0
  137. package/dist/spine/lib/assets/skeletonLoader.d.ts.map +1 -0
  138. package/dist/spine/lib/assets/skeletonLoader.js +70 -0
  139. package/dist/spine/lib/darktint/DarkTintBatchGeometry.d.ts +33 -0
  140. package/dist/spine/lib/darktint/DarkTintBatchGeometry.d.ts.map +1 -0
  141. package/dist/spine/lib/darktint/DarkTintBatchGeometry.js +84 -0
  142. package/dist/spine/lib/darktint/DarkTintBatcher.d.ts +50 -0
  143. package/dist/spine/lib/darktint/DarkTintBatcher.d.ts.map +1 -0
  144. package/dist/spine/lib/darktint/DarkTintBatcher.js +131 -0
  145. package/dist/spine/lib/darktint/DarkTintShader.d.ts +33 -0
  146. package/dist/spine/lib/darktint/DarkTintShader.d.ts.map +1 -0
  147. package/dist/spine/lib/darktint/DarkTintShader.js +59 -0
  148. package/dist/spine/lib/darktint/darkTintBit.d.ts +51 -0
  149. package/dist/spine/lib/darktint/darkTintBit.d.ts.map +1 -0
  150. package/dist/spine/lib/darktint/darkTintBit.js +75 -0
  151. package/dist/spine/lib/index.d.ts +42 -0
  152. package/dist/spine/lib/index.d.ts.map +1 -0
  153. package/dist/spine/lib/index.js +41 -0
  154. package/dist/spine/lib/require-shim.d.ts +33 -0
  155. package/dist/spine/lib/require-shim.d.ts.map +1 -0
  156. package/dist/spine/lib/require-shim.js +38 -0
  157. package/package.json +13 -9
  158. package/dist/components/RenderComponent.d.ts.map +0 -1
  159. package/dist/components/RenderComponent.js +0 -58
  160. package/dist/systems/GUISystem.d.ts.map +0 -1
  161. package/dist/systems/GUISystem.js +0 -90
  162. package/dist/systems/RenderSystem.d.ts.map +0 -1
  163. package/dist/systems/RenderSystem.js +0 -67
  164. /package/dist/{systems → render}/RenderSystem.d.ts +0 -0
@@ -1,16 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ProgressTimer = exports.LoadingBar = exports.LoadingBarMode = void 0;
4
- const pixi_js_1 = require("pixi.js");
5
- var LoadingBarMode;
1
+ import { Container, Graphics, Point, Sprite, Texture } from 'pixi.js';
2
+ export var LoadingBarMode;
6
3
  (function (LoadingBarMode) {
7
4
  LoadingBarMode[LoadingBarMode["BAR"] = 0] = "BAR";
8
5
  LoadingBarMode[LoadingBarMode["RADIAL"] = 1] = "RADIAL";
9
- })(LoadingBarMode || (exports.LoadingBarMode = LoadingBarMode = {}));
10
- class LoadingBar extends pixi_js_1.Graphics {
6
+ })(LoadingBarMode || (LoadingBarMode = {}));
7
+ export class LoadingBar extends Graphics {
11
8
  constructor(mode, spriteComp) {
12
9
  super();
13
- this.fillCenter = new pixi_js_1.Point(0.5, 0.5);
10
+ this.fillCenter = new Point(0.5, 0.5);
14
11
  this.spriteComp = spriteComp;
15
12
  this.mode = mode || LoadingBarMode.BAR;
16
13
  this.fill(0xffffff);
@@ -30,14 +27,13 @@ class LoadingBar extends pixi_js_1.Graphics {
30
27
  }
31
28
  }
32
29
  }
33
- exports.LoadingBar = LoadingBar;
34
- class ProgressTimer extends pixi_js_1.Container {
30
+ export class ProgressTimer extends Container {
35
31
  constructor(mode, spriteFrame) {
36
32
  super();
37
- this.fillCenter = new pixi_js_1.Point(0.5, 0.5);
38
- const texture = pixi_js_1.Texture.from(spriteFrame);
39
- this.spriteComp = pixi_js_1.Sprite.from(texture);
40
- this.graphics = new pixi_js_1.Graphics();
33
+ this.fillCenter = new Point(0.5, 0.5);
34
+ const texture = Texture.from(spriteFrame);
35
+ this.spriteComp = Sprite.from(texture);
36
+ this.graphics = new Graphics();
41
37
  this.mode = mode || LoadingBarMode.BAR;
42
38
  this.graphics.fill(0xffffff);
43
39
  this.graphics.rect(0, 0, this.spriteComp.width, this.spriteComp.height);
@@ -56,4 +52,3 @@ class ProgressTimer extends pixi_js_1.Container {
56
52
  }
57
53
  }
58
54
  }
59
- exports.ProgressTimer = ProgressTimer;
@@ -0,0 +1,9 @@
1
+ import { NodeComp } from "../components/NodeComp";
2
+ export declare class NodePool {
3
+ items: NodeComp[];
4
+ put(node: NodeComp): void;
5
+ get(): NodeComp;
6
+ size(): number;
7
+ clear(): void;
8
+ }
9
+ //# sourceMappingURL=NodePool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodePool.d.ts","sourceRoot":"","sources":["../../src/core/NodePool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,qBAAa,QAAQ;IACnB,KAAK,EAAE,QAAQ,EAAE,CAAK;IAEtB,GAAG,CAAC,IAAI,EAAE,QAAQ;IAQlB,GAAG,IAAI,QAAQ;IAMf,IAAI;IAIJ,KAAK;CAIN"}
@@ -0,0 +1,24 @@
1
+ export class NodePool {
2
+ constructor() {
3
+ this.items = [];
4
+ }
5
+ put(node) {
6
+ if (node) {
7
+ node.active = false;
8
+ node.removeFromParent();
9
+ this.items.push(node);
10
+ }
11
+ }
12
+ get() {
13
+ const node = this.items.pop();
14
+ node.active = true;
15
+ return node;
16
+ }
17
+ size() {
18
+ return this.items.length;
19
+ }
20
+ clear() {
21
+ this.items.forEach((node) => node.destroy());
22
+ this.items.length = 0;
23
+ }
24
+ }
package/dist/core/Size.js CHANGED
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Size = Size;
4
1
  class _Size {
5
2
  constructor(width = 0, height = 0) {
6
3
  if (!(this instanceof _Size)) {
@@ -14,6 +11,6 @@ class _Size {
14
11
  this.height = height;
15
12
  }
16
13
  }
17
- function Size(x, y) {
14
+ export function Size(x, y) {
18
15
  return new _Size(x, y);
19
16
  }
@@ -0,0 +1,3 @@
1
+ export declare function pauseAll(): void;
2
+ export declare function resumeAll(): void;
3
+ //# sourceMappingURL=director.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"director.d.ts","sourceRoot":"","sources":["../../src/core/director.ts"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,SAEvB;AAED,wBAAgB,SAAS,SAExB"}
@@ -0,0 +1,7 @@
1
+ import { app } from "../app";
2
+ export function pauseAll() {
3
+ app.ticker.stop();
4
+ }
5
+ export function resumeAll() {
6
+ app.ticker.start();
7
+ }
@@ -0,0 +1,4 @@
1
+ export declare function randomRangeInt(minInclude: Integer, maxExclude: Integer): number;
2
+ export declare function degreesToRadians(deg: Float): number;
3
+ export declare function radiansToDegrees(rad: Float): number;
4
+ //# sourceMappingURL=math.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/core/math.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,UAEtE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,KAAK,UAE1C;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,KAAK,UAE1C"}
@@ -0,0 +1,10 @@
1
+ import { DEG_TO_RAD, RAD_TO_DEG } from 'pixi.js';
2
+ export function randomRangeInt(minInclude, maxExclude) {
3
+ return Math.round(Math.random() * (maxExclude - minInclude - 1)) + minInclude;
4
+ }
5
+ export function degreesToRadians(deg) {
6
+ return DEG_TO_RAD * deg;
7
+ }
8
+ export function radiansToDegrees(rad) {
9
+ return RAD_TO_DEG * rad;
10
+ }
@@ -0,0 +1,17 @@
1
+ import { DragonBonesProps } from "../@types/safex";
2
+ import { ComponentX } from "../components/BaseComponent";
3
+ export type DragonBonesData = {
4
+ skeleton: any;
5
+ atlas: any;
6
+ texture: string;
7
+ };
8
+ export declare class DragonBones extends ComponentX<DragonBonesProps> {
9
+ data: DragonBonesData;
10
+ skin: string;
11
+ animation: string;
12
+ playTimes: number;
13
+ timeScale: number;
14
+ setAnimation(name: string, playTimes?: number): void;
15
+ setSkeletonData(data: string): void;
16
+ }
17
+ //# sourceMappingURL=DragonBonesComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DragonBonesComponent.d.ts","sourceRoot":"","sources":["../../src/dragonbones/DragonBonesComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAExD,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,MAAC;IACT,KAAK,MAAC;IACN,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AACD,qBAAa,WAAY,SAAQ,UAAU,CAAC,gBAAgB,CAAC;IAC3D,IAAI,EAAE,eAAe,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,SAAI;IACb,SAAS,EAAE,MAAM,CAAA;IAEjB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAI;IAOxC,eAAe,CAAC,IAAI,EAAE,MAAM;CAK7B"}
@@ -0,0 +1,18 @@
1
+ import { ComponentX } from "../components/BaseComponent";
2
+ export class DragonBones extends ComponentX {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.playTimes = 0;
6
+ }
7
+ setAnimation(name, playTimes = 0) {
8
+ const skel = this.node.instance;
9
+ if (skel.animation) {
10
+ skel.animation.play(name, playTimes);
11
+ }
12
+ }
13
+ setSkeletonData(data) {
14
+ const skel = this.node.instance;
15
+ const atlas = data.replace('.json', '.atlas');
16
+ skel.initWithArgs(data, atlas, this.node.scale);
17
+ }
18
+ }
@@ -0,0 +1,6 @@
1
+ import { EventManager, System } from 'entityx-ts';
2
+ import { GameWorld } from '../base';
3
+ export declare class DragonBonesSystem implements System {
4
+ configure(event_manager: EventManager<GameWorld>): void;
5
+ }
6
+ //# sourceMappingURL=DragonBonesSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DragonBonesSystem.d.ts","sourceRoot":"","sources":["../../src/dragonbones/DragonBonesSystem.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAc,MAAM,EAAE,MAAM,YAAY,CAAC;AAG9D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIpC,qBAAa,iBAAkB,YAAW,MAAM;IAC9C,SAAS,CAAC,aAAa,EAAE,YAAY,CAAC,SAAS,CAAC;CAyBjD"}
@@ -0,0 +1,29 @@
1
+ import { PixiFactory } from 'dragonbones-pixijs';
2
+ import { EventTypes } from 'entityx-ts';
3
+ import { Assets } from 'pixi.js';
4
+ import { NodeComp } from '../components/NodeComp';
5
+ import { DragonBones } from './DragonBonesComponent';
6
+ export class DragonBonesSystem {
7
+ configure(event_manager) {
8
+ event_manager.subscribe(EventTypes.ComponentAdded, DragonBones, ({ entity, component }) => {
9
+ const { data, animation, playTimes } = component;
10
+ const { skeleton, atlas, texture } = data;
11
+ const skeletonAsset = Assets.get(skeleton);
12
+ const atlasAsset = Assets.get(atlas);
13
+ const textureAsset = Assets.get(texture);
14
+ const armatureName = skeletonAsset.armature[0].name;
15
+ // console.log(skeletonAsset, textureAsset, atlasAsset)
16
+ const factory = PixiFactory.factory;
17
+ factory.parseDragonBonesData(skeletonAsset);
18
+ factory.parseTextureAtlasData(atlasAsset, textureAsset);
19
+ const armatureDisplay = factory.buildArmatureDisplay(armatureName);
20
+ armatureDisplay.debugDraw = false;
21
+ const node = armatureDisplay;
22
+ if (animation) {
23
+ armatureDisplay.animation.play(animation, playTimes);
24
+ }
25
+ component.node = entity.assign(new NodeComp(node, entity));
26
+ });
27
+ // event_manager.subscribe(EventTypes.ComponentRemoved, DragonBones, ({ }) => { })
28
+ }
29
+ }
@@ -0,0 +1,3 @@
1
+ export * from './DragonBonesComponent';
2
+ export * from './DragonBonesSystem';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dragonbones/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './DragonBonesComponent';
2
+ export * from './DragonBonesSystem';
@@ -0,0 +1,99 @@
1
+ import { CheckBox, CheckBoxOptions, Input, List, ProgressBar, RadioGroup, Slider, SliderOptions } from '@pixi/ui';
2
+ import { Container, FillInput, Point, Text } from 'pixi.js';
3
+ import TaggedText from 'pixi-tagged-text-plus';
4
+ import { ButtonCompProps, LabelCompProps, LabelOutlineCompProps, LabelShadowCompProps, ProgressTimerProps, ScrollViewProps } from '../@types/safex';
5
+ import { ComponentX, NoRenderComponentX } from '../components/BaseComponent';
6
+ import { Color4B } from '../core/Color';
7
+ import { LoadingBarMode, ProgressTimer } from '../core/LoadingBar';
8
+ export declare const FillType: {
9
+ HORIZONTAL: number;
10
+ VERTICAL: number;
11
+ RADIAL: number;
12
+ };
13
+ type Keys = keyof typeof FillType;
14
+ type Values = (typeof FillType)[Keys];
15
+ export declare class ButtonComp extends NoRenderComponentX<ButtonCompProps> {
16
+ normalImage: string;
17
+ selectedImage: string;
18
+ disableImage: string;
19
+ zoomScale: number;
20
+ onPress: (target: ButtonComp) => void;
21
+ setOnPress(cb: (target: ButtonComp) => void): void;
22
+ set enabled(val: any);
23
+ }
24
+ export declare class ProgressBarComp extends ComponentX<{}, ProgressBar> {
25
+ mode: LoadingBarMode;
26
+ isReverse: boolean;
27
+ bg: string;
28
+ fill: string;
29
+ get progress(): number;
30
+ set progress(val: number);
31
+ }
32
+ export declare class LabelComp extends ComponentX<LabelCompProps, Text> {
33
+ font: string;
34
+ string: string;
35
+ size: number;
36
+ getString(): string;
37
+ setString(val: string): void;
38
+ getSize(): number;
39
+ setSize(val: any): void;
40
+ getFont(): string;
41
+ setFont(val: string): void;
42
+ }
43
+ export declare class ScrollView extends NoRenderComponentX<ScrollViewProps> {
44
+ width: number;
45
+ height: number;
46
+ }
47
+ export declare class BlockInputEventsComp extends NoRenderComponentX {
48
+ }
49
+ export declare class ProgressTimerComp extends ComponentX<ProgressTimerProps & {
50
+ $ref?: ProgressTimerComp;
51
+ }, ProgressTimer> {
52
+ spriteFrame: string;
53
+ fillType?: Values;
54
+ fillRange?: number;
55
+ fillCenter?: Point;
56
+ isReverse?: boolean;
57
+ getFillRange(): number;
58
+ setFillStart(val: number): void;
59
+ setFillRange(val: number): void;
60
+ }
61
+ export declare class RichTextComp extends ComponentX<LabelCompProps, TaggedText> {
62
+ font: string;
63
+ string: string;
64
+ size: number;
65
+ getString(): string;
66
+ setString(val: string): void;
67
+ setSize(size: number): void;
68
+ setFont(font: string): void;
69
+ }
70
+ export declare class LabelOutlineComp extends NoRenderComponentX<LabelOutlineCompProps> {
71
+ color: Color4B;
72
+ width: number;
73
+ }
74
+ export declare class LabelShadowComp extends NoRenderComponentX<LabelShadowCompProps> {
75
+ color: Color4B;
76
+ blur: number;
77
+ offset: Point;
78
+ }
79
+ export declare class InputComp extends ComponentX<{}, Input> {
80
+ bg: string;
81
+ fill: FillInput;
82
+ font: string;
83
+ string: string;
84
+ size: number;
85
+ }
86
+ export declare class ListComp extends ComponentX<{}, List> {
87
+ }
88
+ export declare class SliderComp extends ComponentX<{}, Slider> {
89
+ bg: string;
90
+ fill: SliderOptions['fill'];
91
+ slider: Container;
92
+ }
93
+ export declare class RadioGroupComp extends ComponentX<{}, RadioGroup> {
94
+ }
95
+ export declare class CheckBoxComp extends ComponentX<{}, CheckBox> {
96
+ style: CheckBoxOptions['style'];
97
+ }
98
+ export {};
99
+ //# sourceMappingURL=GUIComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GUIComponent.d.ts","sourceRoot":"","sources":["../../src/gui/GUIComponent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ import { Assets, Text } from 'pixi.js';
2
+ import { ComponentX, NoRenderComponentX } from '../components/BaseComponent';
3
+ import { LoadingBarMode } from '../core/LoadingBar';
4
+ import { generateStringFromStyledElements, generateStylesFromStyledElements, parseFontString, transformToStyledElements } from '../helper/html-text-parser';
5
+ export const FillType = {
6
+ HORIZONTAL: 0,
7
+ VERTICAL: 1,
8
+ RADIAL: 2,
9
+ };
10
+ export class ButtonComp extends NoRenderComponentX {
11
+ setOnPress(cb) {
12
+ this.onPress = cb;
13
+ }
14
+ set enabled(val) {
15
+ this.node.instance.interactive = val;
16
+ }
17
+ }
18
+ export class ProgressBarComp extends ComponentX {
19
+ constructor() {
20
+ super(...arguments);
21
+ this.mode = LoadingBarMode.BAR;
22
+ }
23
+ get progress() {
24
+ return this.node.instance.progress;
25
+ }
26
+ set progress(val) {
27
+ this.node.instance.progress = val;
28
+ }
29
+ }
30
+ export class LabelComp extends ComponentX {
31
+ constructor() {
32
+ super(...arguments);
33
+ this.size = 64;
34
+ }
35
+ getString() {
36
+ if (this.node.instance instanceof Text) {
37
+ return this.node.instance.text;
38
+ }
39
+ }
40
+ setString(val) {
41
+ if (this.node.instance instanceof Text) {
42
+ this.node.instance.text = val;
43
+ }
44
+ }
45
+ getSize() {
46
+ if (this.node.instance instanceof Text) {
47
+ return this.node.instance.style.fontSize;
48
+ }
49
+ }
50
+ setSize(val) {
51
+ if (this.node.instance instanceof Text) {
52
+ this.node.instance.style.fontSize = val;
53
+ }
54
+ }
55
+ getFont() {
56
+ if (this.node.instance instanceof Text) {
57
+ return this.node.instance.style.fontFamily;
58
+ }
59
+ }
60
+ setFont(val) {
61
+ // console.log('set font', val, Assets.get(val))
62
+ if (this.node.instance instanceof Text) {
63
+ if (Assets.get(val))
64
+ this.node.instance.style.fontFamily = Assets.get(val).family;
65
+ }
66
+ }
67
+ }
68
+ export class ScrollView extends NoRenderComponentX {
69
+ }
70
+ export class BlockInputEventsComp extends NoRenderComponentX {
71
+ }
72
+ export class ProgressTimerComp extends ComponentX {
73
+ getFillRange() {
74
+ return this.node.instance.progress;
75
+ }
76
+ setFillStart(val) {
77
+ this.node.instance.fillCenter.x = val;
78
+ }
79
+ setFillRange(val) {
80
+ // console.log('setFillRange', this.node.instance);
81
+ this.node.instance.progress = val;
82
+ }
83
+ }
84
+ export class RichTextComp extends ComponentX {
85
+ getString() {
86
+ return this.string;
87
+ }
88
+ setString(val) {
89
+ this.string = val;
90
+ const jObj = parseFontString(val);
91
+ const styledOutput = transformToStyledElements(jObj);
92
+ const newText = generateStringFromStyledElements(styledOutput);
93
+ const styles = generateStylesFromStyledElements(styledOutput);
94
+ // console.log(styledOutput)
95
+ const wrapped = `<root>${newText}</root>`;
96
+ this.node.instance.setText(wrapped);
97
+ this.node.instance.setTagStyles(styles);
98
+ }
99
+ setSize(size) {
100
+ this.node.instance.setStyleForTag('root', { fontSize: size, color: '#fff' });
101
+ }
102
+ setFont(font) {
103
+ this.node.instance.setStyleForTag('root', { color: '#fff', fontFamily: font });
104
+ }
105
+ }
106
+ export class LabelOutlineComp extends NoRenderComponentX {
107
+ }
108
+ export class LabelShadowComp extends NoRenderComponentX {
109
+ }
110
+ export class InputComp extends ComponentX {
111
+ constructor() {
112
+ super(...arguments);
113
+ this.size = 64;
114
+ }
115
+ }
116
+ export class ListComp extends ComponentX {
117
+ }
118
+ export class SliderComp extends ComponentX {
119
+ }
120
+ export class RadioGroupComp extends ComponentX {
121
+ }
122
+ export class CheckBoxComp extends ComponentX {
123
+ }
@@ -1,5 +1,5 @@
1
- import { GameWorld } from '@safe-engine/core';
2
1
  import { EventManager, System } from 'entityx-ts';
2
+ import { GameWorld } from '../base';
3
3
  export declare class GUISystem implements System {
4
4
  configure(event_manager: EventManager<GameWorld>): void;
5
5
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GUISystem.d.ts","sourceRoot":"","sources":["../../src/gui/GUISystem.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EAEZ,MAAM,EACP,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAOnC,qBAAa,SAAU,YAAW,MAAM;IACtC,SAAS,CAAC,aAAa,EAAE,YAAY,CAAC,SAAS,CAAC;CA8FjD"}
@@ -0,0 +1,100 @@
1
+ import { Button, CheckBox, Input, List, ProgressBar, RadioGroup, ScrollBox, Slider } from '@pixi/ui';
2
+ import { EventTypes } from 'entityx-ts';
3
+ import { callFunc, easeBackIn, scaleTo, sequence } from 'pixi-action-ease';
4
+ import { Text } from 'pixi.js';
5
+ import TaggedText from 'pixi-tagged-text-plus';
6
+ import { NodeComp } from '..';
7
+ import { LoadingBarMode, ProgressTimer } from '../core/LoadingBar';
8
+ import { ButtonComp, CheckBoxComp, InputComp, LabelComp, ListComp, ProgressBarComp, ProgressTimerComp, RadioGroupComp, RichTextComp, ScrollView, SliderComp } from './GUIComponent';
9
+ export class GUISystem {
10
+ configure(event_manager) {
11
+ event_manager.subscribe(EventTypes.ComponentAdded, ButtonComp, ({ entity, component }) => {
12
+ const nodeComp = entity.getComponent(NodeComp);
13
+ // const { normalImage, selectedImage, disableImage, texType, zoomScale } = button
14
+ // console.log('onPress.ButtonComp', component)
15
+ const button = new Button(nodeComp.instance);
16
+ // node.setZoomScale(zoomScale - 1)
17
+ component.node = nodeComp;
18
+ // component.node = entity.assign(new NodeComp(node, entity))
19
+ button.onPress.connect(() => {
20
+ // console.log('onPress.connect')
21
+ const scale = scaleTo(0.5, 1.2);
22
+ const scaleDown = scaleTo(0.5, 1);
23
+ const seq = sequence(scale, callFunc(() => {
24
+ if (Object.prototype.hasOwnProperty.call(component, 'onPress')) {
25
+ component.onPress(component);
26
+ }
27
+ }), scaleDown);
28
+ const ease = easeBackIn(seq);
29
+ component.node.runAction(ease);
30
+ });
31
+ });
32
+ event_manager.subscribe(EventTypes.ComponentAdded, ProgressBarComp, ({ entity, component }) => {
33
+ const { progress = 1, bg, fill } = component;
34
+ const node = new ProgressBar({ bg, fill, progress });
35
+ component.node = entity.assign(new NodeComp(node, entity));
36
+ });
37
+ event_manager.subscribe(EventTypes.ComponentAdded, ProgressTimerComp, ({ entity, component }) => {
38
+ // console.log(component, '.progress')
39
+ const { spriteFrame, fillCenter } = component;
40
+ const node = new ProgressTimer(LoadingBarMode.BAR, spriteFrame);
41
+ if (fillCenter) {
42
+ node.fillCenter = fillCenter;
43
+ }
44
+ component.node = entity.assign(new NodeComp(node, entity));
45
+ });
46
+ event_manager.subscribe(EventTypes.ComponentAdded, ScrollView, ({ entity, component }) => {
47
+ const { width, height } = component;
48
+ const view = new ScrollBox({ width, height });
49
+ component.node = entity.assign(new NodeComp(view, entity));
50
+ });
51
+ event_manager.subscribe(EventTypes.ComponentAdded, ListComp, ({ entity, component }) => {
52
+ const view = new List();
53
+ component.node = entity.assign(new NodeComp(view, entity));
54
+ });
55
+ event_manager.subscribe(EventTypes.ComponentAdded, SliderComp, ({ entity, component }) => {
56
+ const { bg, slider, fill } = component;
57
+ const view = new Slider({ bg, fill, slider });
58
+ component.node = entity.assign(new NodeComp(view, entity));
59
+ });
60
+ event_manager.subscribe(EventTypes.ComponentAdded, RadioGroupComp, ({ entity, component }) => {
61
+ const view = new RadioGroup();
62
+ component.node = entity.assign(new NodeComp(view, entity));
63
+ });
64
+ event_manager.subscribe(EventTypes.ComponentAdded, CheckBoxComp, ({ entity, component }) => {
65
+ const { style } = component;
66
+ const view = new CheckBox({ style });
67
+ component.node = entity.assign(new NodeComp(view, entity));
68
+ });
69
+ event_manager.subscribe(EventTypes.ComponentAdded, InputComp, ({ entity, component }) => {
70
+ const { bg, size = 48, fill } = component;
71
+ const view = new Input({ bg, textStyle: { fontSize: size, fill } });
72
+ component.node = entity.assign(new NodeComp(view, entity));
73
+ });
74
+ event_manager.subscribe(EventTypes.ComponentAdded, LabelComp, ({ entity, component }) => {
75
+ // console.log('ComponentAddedEvent LabelComp', component)
76
+ const node = new Text();
77
+ // node.texture.rotate = 8
78
+ node.style.fill = '#fff';
79
+ component.node = entity.assign(new NodeComp(node, entity));
80
+ const { string = '', font = '', size } = component;
81
+ if (font)
82
+ component.setFont(font);
83
+ component.setSize(size);
84
+ component.setString(string);
85
+ });
86
+ event_manager.subscribe(EventTypes.ComponentAdded, RichTextComp, ({ entity, component }) => {
87
+ // console.log('ComponentAddedEvent LabelComp', component)
88
+ const { string = '', font, size } = component;
89
+ const node = new TaggedText(string);
90
+ // node.defaultStyle = { }
91
+ component.node = entity.assign(new NodeComp(node, entity));
92
+ component.setString(string);
93
+ if (font)
94
+ component.setFont(font);
95
+ if (size)
96
+ component.setSize(size);
97
+ });
98
+ // event_manager.subscribe(EventTypes.ComponentAdded, BlockInputEventsComp), this);
99
+ }
100
+ }
@@ -1,30 +1,20 @@
1
- /****************************************************************************
2
- Copyright (c) 2013-2016 Chukong Technologies Inc.
3
- Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
4
-
5
- https://www.cocos.com/
6
-
7
- Permission is hereby granted, free of charge, to any person obtaining a copy
8
- of this software and associated engine source code (the "Software"), a limited,
9
- worldwide, royalty-free, non-assignable, revocable and non-exclusive license
10
- to use Cocos Creator solely to develop games on your target platforms. You shall
11
- not use Cocos Creator software for developing other software or tools that's
12
- used for developing games. You are not granted to publish, distribute,
13
- sublicense, and/or sell copies of Cocos Creator.
14
-
15
- The software or tools in this License Agreement are licensed, not sold.
16
- Xiamen Yaji Software Co., Ltd. reserves all rights not expressly granted to you.
17
-
18
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
- THE SOFTWARE.
25
- ****************************************************************************/
26
- /**
27
- * A utils class for parsing HTML texts. The parsed results will be an object array.
28
- */
29
- export declare const HtmlTextParser: () => void;
1
+ interface FontTag {
2
+ color?: string;
3
+ size?: number;
4
+ text: string;
5
+ }
6
+ type ParsedResult = FontTag[];
7
+ type StyledElement = {
8
+ tag?: string;
9
+ style?: {
10
+ color?: string;
11
+ size?: number;
12
+ };
13
+ text: string;
14
+ };
15
+ export declare function parseFontString(input: string): ParsedResult;
16
+ export declare function transformToStyledElements(parsed: ParsedResult): StyledElement[];
17
+ export declare function generateStringFromStyledElements(elements: StyledElement[]): string;
18
+ export declare function generateStylesFromStyledElements(elements: StyledElement[]): {};
19
+ export {};
30
20
  //# sourceMappingURL=html-text-parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"html-text-parser.d.ts","sourceRoot":"","sources":["../../src/helper/html-text-parser.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;8EAwB8E;AAK9E;;GAEG;AACH,eAAO,MAAM,cAAc,YAS1B,CAAA"}
1
+ {"version":3,"file":"html-text-parser.d.ts","sourceRoot":"","sources":["../../src/helper/html-text-parser.ts"],"names":[],"mappings":"AAAA,UAAU,OAAO;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,KAAK,YAAY,GAAG,OAAO,EAAE,CAAC;AAE9B,KAAK,aAAa,GAAG;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAiC3D;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,EAAE,CAa/E;AAED,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,CASlF;AAED,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,aAAa,EAAE,MAWzE"}