@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.
- package/dist/app.d.ts +3 -2
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +41 -81
- package/dist/components/GUIComponent.d.ts +15 -14
- package/dist/components/GUIComponent.d.ts.map +1 -1
- package/dist/components/GUIComponent.js +68 -138
- package/dist/components/NodeComp.d.ts +7 -6
- package/dist/components/NodeComp.d.ts.map +1 -1
- package/dist/components/NodeComp.js +223 -305
- package/dist/components/RenderComponent.d.ts +8 -7
- package/dist/components/RenderComponent.d.ts.map +1 -1
- package/dist/components/RenderComponent.js +25 -56
- package/dist/core/Color.js +1 -1
- package/dist/core/LoadingBar.d.ts +9 -1
- package/dist/core/LoadingBar.d.ts.map +1 -1
- package/dist/core/LoadingBar.js +50 -46
- package/dist/core/Size.js +3 -6
- package/dist/helper/html-text-parser.js +34 -34
- package/dist/helper/utils.d.ts +2 -8
- package/dist/helper/utils.d.ts.map +1 -1
- package/dist/helper/utils.js +22 -46
- package/dist/index.d.ts +4 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -18
- package/dist/systems/GUISystem.d.ts +3 -4
- package/dist/systems/GUISystem.d.ts.map +1 -1
- package/dist/systems/GUISystem.js +67 -89
- package/dist/systems/RenderSystem.d.ts +1 -3
- package/dist/systems/RenderSystem.d.ts.map +1 -1
- package/dist/systems/RenderSystem.js +51 -85
- package/package.json +4 -4
- package/src/app.ts +53 -51
- package/src/components/GUIComponent.ts +140 -145
- package/src/components/NodeComp.ts +416 -409
- package/src/components/RenderComponent.ts +7 -6
- package/src/core/LoadingBar.ts +63 -33
- package/src/index.ts +4 -6
- package/src/systems/GUISystem.ts +67 -82
- package/src/systems/RenderSystem.ts +70 -100
- package/tsconfig.json +1 -1
- package/src/components/EnhancedComponent.ts +0 -57
- package/src/core/Scene.ts +0 -17
- package/src/core/decorator.ts +0 -18
- package/src/gworld.ts +0 -17
- 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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
//
|
|
63
|
-
|
|
64
|
-
//
|
|
65
|
-
//
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
//
|
|
70
|
-
//
|
|
71
|
-
//
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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": "
|
|
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
|
-
"
|
|
21
|
-
"
|
|
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": "^
|
|
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 {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
export const app = new Application(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
+
}
|