@safe-engine/pixi 1.0.1 → 7.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/app.d.ts +3 -2
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +41 -81
  4. package/dist/components/GUIComponent.d.ts +15 -14
  5. package/dist/components/GUIComponent.d.ts.map +1 -1
  6. package/dist/components/GUIComponent.js +68 -138
  7. package/dist/components/NodeComp.d.ts +7 -6
  8. package/dist/components/NodeComp.d.ts.map +1 -1
  9. package/dist/components/NodeComp.js +223 -305
  10. package/dist/components/RenderComponent.d.ts +8 -7
  11. package/dist/components/RenderComponent.d.ts.map +1 -1
  12. package/dist/components/RenderComponent.js +25 -56
  13. package/dist/core/Color.js +1 -1
  14. package/dist/core/LoadingBar.d.ts +9 -1
  15. package/dist/core/LoadingBar.d.ts.map +1 -1
  16. package/dist/core/LoadingBar.js +50 -46
  17. package/dist/core/Size.js +3 -6
  18. package/dist/helper/html-text-parser.js +34 -34
  19. package/dist/helper/utils.d.ts +2 -8
  20. package/dist/helper/utils.d.ts.map +1 -1
  21. package/dist/helper/utils.js +22 -46
  22. package/dist/index.d.ts +4 -6
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +4 -18
  25. package/dist/systems/GUISystem.d.ts +3 -4
  26. package/dist/systems/GUISystem.d.ts.map +1 -1
  27. package/dist/systems/GUISystem.js +67 -89
  28. package/dist/systems/RenderSystem.d.ts +1 -3
  29. package/dist/systems/RenderSystem.d.ts.map +1 -1
  30. package/dist/systems/RenderSystem.js +51 -85
  31. package/package.json +4 -4
  32. package/src/app.ts +53 -51
  33. package/src/components/GUIComponent.ts +140 -145
  34. package/src/components/NodeComp.ts +416 -409
  35. package/src/components/RenderComponent.ts +7 -6
  36. package/src/core/LoadingBar.ts +63 -33
  37. package/src/index.ts +4 -6
  38. package/src/systems/GUISystem.ts +67 -82
  39. package/src/systems/RenderSystem.ts +70 -100
  40. package/tsconfig.json +1 -1
  41. package/src/components/EnhancedComponent.ts +0 -57
  42. package/src/core/Scene.ts +0 -17
  43. package/src/core/decorator.ts +0 -18
  44. package/src/gworld.ts +0 -17
  45. package/src/helper/utils.ts +0 -64
@@ -1,94 +1,72 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GUISystem = void 0;
4
- var ui_1 = require("@pixi/ui");
5
- var entityx_ts_1 = require("entityx-ts");
6
- var pixi_js_1 = require("pixi.js");
7
- var pixi_action_ease_1 = require("pixi-action-ease");
8
- var __1 = require("..");
9
- var GUIComponent_1 = require("../components/GUIComponent");
10
- var LoadingBar_1 = require("../core/LoadingBar");
11
- var GUISystem = /** @class */ (function () {
12
- function GUISystem() {
13
- }
14
- GUISystem.prototype.configure = function (event_manager) {
15
- event_manager.subscribe((0, entityx_ts_1.ComponentAddedEvent)(GUIComponent_1.ButtonComp), this);
16
- event_manager.subscribe((0, entityx_ts_1.ComponentAddedEvent)(GUIComponent_1.ProgressBarComp), this);
17
- event_manager.subscribe((0, entityx_ts_1.ComponentAddedEvent)(GUIComponent_1.ScrollView), this);
18
- event_manager.subscribe((0, entityx_ts_1.ComponentAddedEvent)(GUIComponent_1.LabelComp), this);
19
- // event_manager.subscribe(ComponentAddedEvent(BlockInputEventsComp), this);
20
- };
21
- GUISystem.prototype.receive = function (type, event) {
22
- switch (type) {
23
- case (0, entityx_ts_1.ComponentAddedEvent)(GUIComponent_1.ButtonComp): {
24
- console.log('ComponentAddedEvent ButtonComp', event);
25
- var ett = event.entity;
26
- var button_1 = ett.getComponent(GUIComponent_1.ButtonComp);
27
- var nodeComp = ett.getComponent(__1.NodeComp);
28
- // const { normalImage, selectedImage, disableImage, texType, zoomScale } = button
29
- var node = new ui_1.Button(nodeComp.instance);
30
- // node.setZoomScale(zoomScale - 1)
31
- button_1.node = nodeComp;
32
- // button.node = ett.assign(new NodeComp(node, ett))
33
- node.onPress.connect(function () {
34
- // console.log('onPress.connect')
35
- var scale = pixi_action_ease_1.ScaleTo.create(0.12, 1.2);
36
- var scaleDown = pixi_action_ease_1.ScaleTo.create(0.12, 1);
37
- var seq = pixi_action_ease_1.Sequence.create(scale, pixi_action_ease_1.CallFunc.create(function () {
38
- if (Object.prototype.hasOwnProperty.call(button_1, 'onPress')) {
39
- button_1.onPress(button_1);
40
- }
41
- }), scaleDown);
42
- var ease = pixi_action_ease_1.EaseBackIn.create(seq);
43
- button_1.node.runAction(ease);
44
- });
45
- break;
46
- }
47
- case (0, entityx_ts_1.ComponentAddedEvent)(GUIComponent_1.ProgressBarComp): {
48
- console.log('ComponentAddedEvent ProgressBarComp', event);
49
- var ett = event.entity;
50
- var bar = ett.getComponent(GUIComponent_1.ProgressBarComp);
51
- var spriteComp = ett.getComponent(__1.SpriteRender);
52
- if (!spriteComp)
53
- throw Error('ProgressBarComp need SpriteRender');
54
- var progress = bar.progress, mode = bar.mode;
55
- var node = new LoadingBar_1.LoadingBar(mode, spriteComp.node.instance);
56
- spriteComp.node.instance.mask = node;
57
- bar.node = ett.assign(new __1.NodeComp(node, ett));
58
- node.progress = progress;
59
- break;
60
- }
61
- case (0, entityx_ts_1.ComponentAddedEvent)(GUIComponent_1.ScrollView): {
62
- console.log('ComponentAddedEvent ScrollView', event);
63
- var ett = event.entity;
64
- var scroll_1 = event.component;
65
- var width = scroll_1.width, height = scroll_1.height;
66
- var view = new ui_1.ScrollBox({ width: width, height: height });
67
- scroll_1.node = ett.assign(new __1.NodeComp(view, ett));
68
- break;
4
+ const ui_1 = require("@pixi/ui");
5
+ const entityx_ts_1 = require("entityx-ts");
6
+ const pixi_js_1 = require("pixi.js");
7
+ const pixi_action_ease_1 = require("pixi-action-ease");
8
+ const __1 = require("..");
9
+ const GUIComponent_1 = require("../components/GUIComponent");
10
+ const LoadingBar_1 = require("../core/LoadingBar");
11
+ class GUISystem {
12
+ configure(event_manager) {
13
+ event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, GUIComponent_1.ButtonComp, ({ entity, component }) => {
14
+ const nodeComp = entity.getComponent(__1.NodeComp);
15
+ // const { normalImage, selectedImage, disableImage, texType, zoomScale } = button
16
+ const node = new ui_1.Button(nodeComp.instance);
17
+ // node.setZoomScale(zoomScale - 1)
18
+ component.node = nodeComp;
19
+ // component.node = entity.assign(new NodeComp(node, entity))
20
+ node.onPress.connect(() => {
21
+ // console.log('onPress.connect')
22
+ const scale = pixi_action_ease_1.ScaleTo.create(0.12, 1.2);
23
+ const scaleDown = pixi_action_ease_1.ScaleTo.create(0.12, 1);
24
+ const seq = pixi_action_ease_1.Sequence.create(scale, pixi_action_ease_1.CallFunc.create(() => {
25
+ if (Object.prototype.hasOwnProperty.call(component, 'onPress')) {
26
+ component.onPress(component);
27
+ }
28
+ }), scaleDown);
29
+ const ease = pixi_action_ease_1.EaseBackIn.create(seq);
30
+ component.node.runAction(ease);
31
+ });
32
+ });
33
+ event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, GUIComponent_1.ProgressBarComp, ({ entity, component }) => {
34
+ const spriteComp = entity.getComponent(__1.SpriteRender);
35
+ if (!spriteComp)
36
+ throw Error('ProgressBarComp need SpriteRender');
37
+ const { progress, mode } = component;
38
+ const node = new LoadingBar_1.LoadingBar(mode, spriteComp.node.instance);
39
+ spriteComp.node.instance.mask = node;
40
+ component.node = entity.assign(new __1.NodeComp(node, entity));
41
+ node.progress = progress;
42
+ });
43
+ event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, GUIComponent_1.ProgressTimerComp, ({ entity, component }) => {
44
+ // console.log(component, '.progress')
45
+ const { spriteFrame, fillCenter } = component;
46
+ const node = new LoadingBar_1.ProgressTimer(LoadingBar_1.LoadingBarMode.BAR, spriteFrame);
47
+ if (fillCenter) {
48
+ node.fillCenter = fillCenter;
69
49
  }
70
- case (0, entityx_ts_1.ComponentAddedEvent)(GUIComponent_1.LabelComp): {
71
- console.log('ComponentAddedEvent LabelComp', event);
72
- var ett = event.entity;
73
- var label = ett.getComponent(GUIComponent_1.LabelComp);
74
- var node = new pixi_js_1.Text();
75
- // node.texture.rotate = 8
76
- node.style.fill = '#fff';
77
- label.node = ett.assign(new __1.NodeComp(node, ett));
78
- var _a = label.string, string = _a === void 0 ? '' : _a, _b = label.font, font = _b === void 0 ? '' : _b, size = label.size;
79
- if (font)
80
- label.setFont(font);
81
- label.setSize(size);
82
- label.setString(string);
83
- break;
84
- }
85
- default:
86
- break;
87
- }
88
- };
89
- GUISystem.prototype.update = function () {
90
- // throw new Error('Method not implemented.');
91
- };
92
- return GUISystem;
93
- }());
50
+ component.node = entity.assign(new __1.NodeComp(node, entity));
51
+ });
52
+ event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, GUIComponent_1.ScrollView, ({ entity, component }) => {
53
+ const { width, height } = component;
54
+ const view = new ui_1.ScrollBox({ width, height });
55
+ component.node = entity.assign(new __1.NodeComp(view, entity));
56
+ });
57
+ event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, GUIComponent_1.LabelComp, ({ entity, component }) => {
58
+ // console.log('ComponentAddedEvent LabelComp', component)
59
+ const node = new pixi_js_1.Text();
60
+ // node.texture.rotate = 8
61
+ node.style.fill = '#fff';
62
+ component.node = entity.assign(new __1.NodeComp(node, entity));
63
+ const { string = '', font = '', size } = component;
64
+ if (font)
65
+ component.setFont(font);
66
+ component.setSize(size);
67
+ component.setString(string);
68
+ });
69
+ // event_manager.subscribe(EventTypes.ComponentAdded, BlockInputEventsComp), this);
70
+ }
71
+ }
94
72
  exports.GUISystem = GUISystem;
@@ -1,4 +1,4 @@
1
- import { EventManager, EventReceive, System } from 'entityx-ts';
1
+ import { EventManager, System } from 'entityx-ts';
2
2
  export declare enum SpriteTypes {
3
3
  SIMPLE = 0,
4
4
  SLICED = 1,
@@ -9,7 +9,5 @@ export declare enum SpriteTypes {
9
9
  }
10
10
  export declare class RenderSystem implements System {
11
11
  configure(event_manager: EventManager): void;
12
- receive(type: string, event: EventReceive): void;
13
- update(): void;
14
12
  }
15
13
  //# sourceMappingURL=RenderSystem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RenderSystem.d.ts","sourceRoot":"","sources":["../../src/systems/RenderSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EACuC,YAAY,EAAE,YAAY,EACtE,MAAM,EACP,MAAM,YAAY,CAAA;AAOnB,oBAAY,WAAW;IACrB,MAAM,IAAA;IACN,MAAM,IAAA;IACN,KAAK,IAAA;IACL,MAAM,IAAA;IACN,IAAI,IAAA;IACJ,SAAS,IAAA;CACV;AAED,qBAAa,YAAa,YAAW,MAAM;IACzC,SAAS,CAAC,aAAa,EAAE,YAAY;IAUrC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY;IAkEzC,MAAM;CAGP"}
1
+ {"version":3,"file":"RenderSystem.d.ts","sourceRoot":"","sources":["../../src/systems/RenderSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAEZ,MAAM,EACP,MAAM,YAAY,CAAA;AAOnB,oBAAY,WAAW;IACrB,MAAM,IAAA;IACN,MAAM,IAAA;IACN,KAAK,IAAA;IACL,MAAM,IAAA;IACN,IAAI,IAAA;IACJ,SAAS,IAAA;CACV;AAED,qBAAa,YAAa,YAAW,MAAM;IACzC,SAAS,CAAC,aAAa,EAAE,YAAY;CAgDtC"}
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RenderSystem = exports.SpriteTypes = void 0;
4
- var entityx_ts_1 = require("entityx-ts");
5
- var pixi_js_1 = require("pixi.js");
6
- var __1 = require("..");
7
- var RenderComponent_1 = require("../components/RenderComponent");
8
- var LoadingBar_1 = require("../core/LoadingBar");
4
+ const entityx_ts_1 = require("entityx-ts");
5
+ const pixi_js_1 = require("pixi.js");
6
+ const __1 = require("..");
7
+ const RenderComponent_1 = require("../components/RenderComponent");
8
+ const LoadingBar_1 = require("../core/LoadingBar");
9
9
  var SpriteTypes;
10
10
  (function (SpriteTypes) {
11
11
  SpriteTypes[SpriteTypes["SIMPLE"] = 0] = "SIMPLE";
@@ -15,86 +15,52 @@ var SpriteTypes;
15
15
  SpriteTypes[SpriteTypes["MESH"] = 4] = "MESH";
16
16
  SpriteTypes[SpriteTypes["ANIMATION"] = 5] = "ANIMATION";
17
17
  })(SpriteTypes || (exports.SpriteTypes = SpriteTypes = {}));
18
- var RenderSystem = /** @class */ (function () {
19
- function RenderSystem() {
20
- }
21
- RenderSystem.prototype.configure = function (event_manager) {
22
- event_manager.subscribe((0, entityx_ts_1.ComponentAddedEvent)(RenderComponent_1.NodeRender), this);
23
- event_manager.subscribe((0, entityx_ts_1.ComponentAddedEvent)(RenderComponent_1.SpriteRender), this);
24
- // event_manager.subscribe(ComponentAddedEvent(ImageRender), this)
25
- // event_manager.subscribe(ComponentAddedEvent(MaskRender), this)
26
- event_manager.subscribe((0, entityx_ts_1.ComponentAddedEvent)(RenderComponent_1.GraphicsRender), this);
27
- event_manager.subscribe((0, entityx_ts_1.ComponentAddedEvent)(__1.NodeComp), this);
28
- event_manager.subscribe((0, entityx_ts_1.ComponentRemovedEvent)(__1.NodeComp), this);
29
- };
30
- RenderSystem.prototype.receive = function (type, event) {
31
- switch (type) {
32
- case (0, entityx_ts_1.ComponentAddedEvent)(RenderComponent_1.NodeRender): {
33
- // console.log('NodeRender', event)
34
- var ett = event.entity;
35
- var nodeRenderComp = ett.getComponent(RenderComponent_1.NodeRender);
36
- var node = new pixi_js_1.Container();
37
- nodeRenderComp.node = ett.assign(new __1.NodeComp(node, ett));
38
- break;
39
- }
40
- case (0, entityx_ts_1.ComponentAddedEvent)(RenderComponent_1.SpriteRender): {
41
- // console.log('ComponentAddedEvent SpriteRender', event)
42
- var ett = event.entity;
43
- var spriteComp = ett.getComponent(RenderComponent_1.SpriteRender);
44
- var spriteFrame = spriteComp.spriteFrame, type_1 = spriteComp.type, fillType = spriteComp.fillType, fillRange = spriteComp.fillRange, fillCenter = spriteComp.fillCenter;
45
- var node = pixi_js_1.Sprite.from(spriteFrame);
46
- if (type_1 === SpriteTypes.FILLED) {
47
- // console.log('fillType', fillType)
48
- var loadingBar = new LoadingBar_1.LoadingBar(fillType, node);
49
- if (fillRange)
50
- loadingBar.progress = fillRange;
51
- if (fillCenter)
52
- loadingBar.fillCenter = fillCenter;
53
- spriteComp.loadingBar = loadingBar;
54
- // node.setMidpoint(fillCenter)
55
- }
56
- // node.texture.rotate = 8
57
- spriteComp.node = ett.assign(new __1.NodeComp(node, ett));
58
- // spriteComp.node.anchorX = 0.5
59
- // spriteComp.node.anchorY = 0.5
60
- break;
18
+ class RenderSystem {
19
+ configure(event_manager) {
20
+ event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, RenderComponent_1.NodeRender, ({ entity }) => {
21
+ const nodeRenderComp = entity.getComponent(RenderComponent_1.NodeRender);
22
+ const node = new pixi_js_1.Container();
23
+ nodeRenderComp.node = entity.assign(new __1.NodeComp(node, entity));
24
+ });
25
+ event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, RenderComponent_1.SpriteRender, ({ entity, component }) => {
26
+ const { spriteFrame, type, fillType, fillRange, fillCenter } = component;
27
+ // console.log('SpriteRender', component)
28
+ const node = pixi_js_1.Sprite.from(spriteFrame);
29
+ if (type === SpriteTypes.FILLED) {
30
+ // console.log('fillType', fillType)
31
+ const loadingBar = new LoadingBar_1.LoadingBar(fillType, node);
32
+ if (fillRange)
33
+ loadingBar.progress = fillRange;
34
+ if (fillCenter)
35
+ loadingBar.fillCenter = fillCenter;
36
+ component.loadingBar = loadingBar;
37
+ // node.setMidpoint(fillCenter)
61
38
  }
62
- // case ComponentAddedEvent(MaskRender): {
63
- // console.log('MaskRender', event.component);
64
- // const ett = event.entity
65
- // const maskComp = event.entity.getComponent(MaskRender)
66
- // const { type, segments, inverted } = maskComp
67
- // const node = new cc.ClippingNode()
68
- // node.setInverted(inverted)
69
- // maskComp.node = ett.assign(new NodeComp(node, ett))
70
- // break
71
- // }
72
- case (0, entityx_ts_1.ComponentAddedEvent)(RenderComponent_1.GraphicsRender): {
73
- console.log('MaskRender', event.component);
74
- var ett = event.entity;
75
- var graphics = event.entity.getComponent(RenderComponent_1.GraphicsRender);
76
- var lineWidth = graphics.lineWidth, strokeColor = graphics.strokeColor, fillColor = graphics.fillColor;
77
- var node = new pixi_js_1.Graphics();
78
- node.beginFill(fillColor);
79
- node.lineStyle(lineWidth, strokeColor);
80
- graphics.node = ett.assign(new __1.NodeComp(node, ett));
81
- // node.drawCircle(0, 0, 100)
82
- break;
39
+ // node.texture.rotate = 8
40
+ component.node = entity.assign(new __1.NodeComp(node, entity));
41
+ // component.node.anchorX = 0.5
42
+ // component.node.anchorY = 0.5
43
+ });
44
+ event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, RenderComponent_1.MaskRender, ({ component }) => {
45
+ console.log('MaskRender', component);
46
+ // const { type, segments, inverted } = maskComp
47
+ // const node = new cc.ClippingNode()
48
+ // node.setInverted(inverted)
49
+ // maskComp.node = ett.assign(new NodeComp(node, ett))
50
+ });
51
+ event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, RenderComponent_1.GraphicsRender, ({ entity, component }) => {
52
+ const { lineWidth, strokeColor, fillColor } = component;
53
+ const node = new pixi_js_1.Graphics();
54
+ node.beginFill(fillColor);
55
+ node.lineStyle(lineWidth, strokeColor);
56
+ component.node = entity.assign(new __1.NodeComp(node, entity));
57
+ // node.drawCircle(0, 0, 100)
58
+ });
59
+ event_manager.subscribe(entityx_ts_1.EventTypes.ComponentRemoved, __1.NodeComp, ({ component }) => {
60
+ if (component) {
61
+ component.instance.removeFromParent();
83
62
  }
84
- case (0, entityx_ts_1.ComponentRemovedEvent)(__1.NodeComp): {
85
- var node = event.component;
86
- if (node) {
87
- node.instance.removeFromParent();
88
- }
89
- break;
90
- }
91
- default:
92
- break;
93
- }
94
- };
95
- RenderSystem.prototype.update = function () {
96
- // throw new Error('Method not implemented.');
97
- };
98
- return RenderSystem;
99
- }());
63
+ });
64
+ }
65
+ }
100
66
  exports.RenderSystem = RenderSystem;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@safe-engine/pixi",
3
- "version": "1.0.1",
3
+ "version": "7.0.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -17,11 +17,11 @@
17
17
  "license": "ISC",
18
18
  "dependencies": {
19
19
  "@pixi/ui": "^2.1.5",
20
- "entityx-ts": "^1.0.0",
21
- "howler-pixi-loader-middleware": "^5.0.0",
20
+ "@safe-engine/core": "1.0.1",
21
+ "entityx-ts": "2.0.2",
22
22
  "lodash": "^4.17.21",
23
23
  "pixi-action-ease": "^1.0.12",
24
- "pixi.js": "^8.4.0"
24
+ "pixi.js": "^7.4.2"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/lodash": "^4.17.7",
package/src/app.ts CHANGED
@@ -1,51 +1,53 @@
1
- import { Application } from 'pixi.js'
2
- import { actionManager } from 'pixi-action-ease'
3
-
4
- import { GameWorld } from './gworld'
5
- import { GUISystem } from './systems/GUISystem'
6
- import { RenderSystem } from './systems/RenderSystem'
7
-
8
- export const app = new Application()
9
-
10
- export function setupResolution(designedResolution = { width: 720, height: 1280 }) {
11
- const { width, height } = designedResolution
12
- app.renderer.resize(width, height)
13
- // app.stage.position.y = app.renderer.height / app.renderer.resolution
14
- // app.stage.scale.y = -1
15
- }
16
-
17
- export async function addGameCanvasTo(id = 'game') {
18
- await app.init({
19
- antialias: true,
20
- resolution: window.devicePixelRatio,
21
- eventFeatures: {
22
- move: true,
23
- /** disables the global move events which can be very expensive in large scenes */
24
- globalMove: false,
25
- click: true,
26
- wheel: false,
27
- },
28
- })
29
- // app.ticker.speed = 0.5
30
- // Listen for frame updates
31
- app.ticker.add(() => {
32
- const dt = app.ticker.deltaMS * 0.001
33
- actionManager.update(dt)
34
- GameWorld.Instance.update(dt)
35
- })
36
- Object.assign(app.canvas.style, {
37
- width: `${window.innerWidth}px`,
38
- // height: `${window.innerHeight}px`,
39
- overflow: 'hidden',
40
- })
41
-
42
- const gameDiv = document.getElementById(id)
43
- gameDiv.appendChild(app.canvas)
44
- }
45
-
46
- export function initWorld() {
47
- GameWorld.Instance.systems.add(RenderSystem)
48
- GameWorld.Instance.systems.add(GUISystem)
49
- GameWorld.Instance.systems.configureOnce(RenderSystem)
50
- GameWorld.Instance.systems.configureOnce(GUISystem)
51
- }
1
+ import { GameWorld } from '@safe-engine/core'
2
+ import { Constructor, System } from 'entityx-ts'
3
+ import { Application } from 'pixi.js'
4
+ import { actionManager } from 'pixi-action-ease'
5
+
6
+ import { NodeComp } from './components/NodeComp'
7
+
8
+ export const app = new Application({
9
+ width: 1080,
10
+ height: 1920,
11
+ antialias: true,
12
+ resolution: window.devicePixelRatio,
13
+ })
14
+
15
+ export function setupResolution(designedResolution = { width: 720, height: 1280 }) {
16
+ const { width, height } = designedResolution
17
+ app.renderer.resize(width, height)
18
+ }
19
+
20
+ export async function addGameCanvasTo(id = 'game') {
21
+ Object.assign(app.view.style, {
22
+ width: `${window.innerWidth}px`,
23
+ // height: `${window.innerHeight}px`,
24
+ overflow: 'hidden',
25
+ })
26
+
27
+ const gameDiv = document.getElementById(id)
28
+ gameDiv.appendChild(app.view as never)
29
+ GameWorld.Instance.setup(NodeComp, app.stage)
30
+ }
31
+
32
+ function startGameLoop(world: GameWorld) {
33
+ // Listen for frame updates
34
+ app.ticker.add(() => {
35
+ const dt = app.ticker.deltaMS * 0.001
36
+ actionManager.update(dt)
37
+ world.update(dt)
38
+ })
39
+ // app.ticker.speed = 0.5
40
+ }
41
+
42
+ export function startGameWithSystems(systemsList: Constructor<System>[]) {
43
+ const world = GameWorld.Instance
44
+ systemsList.forEach(system => {
45
+ world.systems.add(system)
46
+ const sys = world.systemsMap[system.name]
47
+ if (sys.update) {
48
+ world.listUpdate.push(system)
49
+ }
50
+ })
51
+ world.systems.configure()
52
+ startGameLoop(world)
53
+ }