@safe-engine/pixi 1.0.2 → 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/.github/workflows/npm-publish.yml +35 -0
- package/README.md +4 -4
- 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 +6 -5
- 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/core/Vec2.d.ts +20 -0
- package/dist/core/Vec2.d.ts.map +1 -0
- package/dist/core/Vec2.js +70 -0
- package/dist/helper/html-text-parser.js +34 -34
- package/dist/helper/utils.d.ts +1 -1
- package/dist/helper/utils.d.ts.map +1 -1
- package/dist/helper/utils.js +20 -24
- 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 +2 -2
- package/dist/systems/GUISystem.d.ts.map +1 -1
- package/dist/systems/GUISystem.js +39 -40
- package/dist/systems/RenderSystem.d.ts +0 -1
- package/dist/systems/RenderSystem.d.ts.map +1 -1
- package/dist/systems/RenderSystem.js +24 -35
- package/package.json +4 -3
- package/src/app.ts +53 -0
- package/src/components/GUIComponent.ts +141 -0
- package/src/components/NodeComp.ts +416 -0
- package/src/components/RenderComponent.ts +66 -0
- package/src/core/Color.ts +3 -0
- package/src/core/LoadingBar.ts +63 -0
- package/src/core/Size.ts +21 -0
- package/src/helper/html-text-parser.ts +364 -0
- package/src/index.ts +7 -0
- package/src/systems/GUISystem.ts +80 -0
- package/src/systems/RenderSystem.ts +70 -0
- package/tsconfig.json +24 -0
package/dist/index.js
CHANGED
|
@@ -14,24 +14,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
|
|
18
|
-
var app_1 = require("./app");
|
|
19
|
-
Object.defineProperty(exports, "addGameCanvasTo", { enumerable: true, get: function () { return app_1.addGameCanvasTo; } });
|
|
20
|
-
Object.defineProperty(exports, "app", { enumerable: true, get: function () { return app_1.app; } });
|
|
21
|
-
Object.defineProperty(exports, "initWorld", { enumerable: true, get: function () { return app_1.initWorld; } });
|
|
22
|
-
Object.defineProperty(exports, "setupResolution", { enumerable: true, get: function () { return app_1.setupResolution; } });
|
|
17
|
+
__exportStar(require("./app"), exports);
|
|
23
18
|
__exportStar(require("./components/GUIComponent"), exports);
|
|
24
|
-
|
|
25
|
-
Object.defineProperty(exports, "NodeComp", { enumerable: true, get: function () { return NodeComp_1.NodeComp; } });
|
|
19
|
+
__exportStar(require("./components/NodeComp"), exports);
|
|
26
20
|
__exportStar(require("./components/RenderComponent"), exports);
|
|
27
|
-
var decorator_1 = require("./core/decorator");
|
|
28
|
-
Object.defineProperty(exports, "ComponentX", { enumerable: true, get: function () { return decorator_1.ComponentX; } });
|
|
29
|
-
Object.defineProperty(exports, "NoRenderComponentX", { enumerable: true, get: function () { return decorator_1.NoRenderComponentX; } });
|
|
30
|
-
var Scene_1 = require("./core/Scene");
|
|
31
|
-
Object.defineProperty(exports, "SceneComponent", { enumerable: true, get: function () { return Scene_1.SceneComponent; } });
|
|
32
21
|
__exportStar(require("./core/Size"), exports);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
var utils_1 = require("./helper/utils");
|
|
36
|
-
Object.defineProperty(exports, "instantiate", { enumerable: true, get: function () { return utils_1.instantiate; } });
|
|
37
|
-
Object.defineProperty(exports, "registerSystem", { enumerable: true, get: function () { return utils_1.registerSystem; } });
|
|
22
|
+
__exportStar(require("./systems/GUISystem"), exports);
|
|
23
|
+
__exportStar(require("./systems/RenderSystem"), exports);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { GameWorld } from '@safe-engine/core';
|
|
1
2
|
import { EventManager, System } from 'entityx-ts';
|
|
2
3
|
export declare class GUISystem implements System {
|
|
3
|
-
configure(event_manager: EventManager): void;
|
|
4
|
-
update(): void;
|
|
4
|
+
configure(event_manager: EventManager<GameWorld>): void;
|
|
5
5
|
}
|
|
6
6
|
//# sourceMappingURL=GUISystem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GUISystem.d.ts","sourceRoot":"","sources":["../../src/systems/GUISystem.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EAEZ,MAAM,EACP,MAAM,YAAY,CAAA;AAQnB,qBAAa,SAAU,YAAW,MAAM;IACtC,SAAS,CAAC,aAAa,EAAE,YAAY
|
|
1
|
+
{"version":3,"file":"GUISystem.d.ts","sourceRoot":"","sources":["../../src/systems/GUISystem.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EACL,YAAY,EAEZ,MAAM,EACP,MAAM,YAAY,CAAA;AAQnB,qBAAa,SAAU,YAAW,MAAM;IACtC,SAAS,CAAC,aAAa,EAAE,YAAY,CAAC,SAAS,CAAC;CAgEjD"}
|
|
@@ -1,73 +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
|
-
event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, GUIComponent_1.ButtonComp, function (_a) {
|
|
16
|
-
var entity = _a.entity, component = _a.component;
|
|
17
|
-
var nodeComp = entity.getComponent(__1.NodeComp);
|
|
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);
|
|
18
15
|
// const { normalImage, selectedImage, disableImage, texType, zoomScale } = button
|
|
19
|
-
|
|
16
|
+
const node = new ui_1.Button(nodeComp.instance);
|
|
20
17
|
// node.setZoomScale(zoomScale - 1)
|
|
21
18
|
component.node = nodeComp;
|
|
22
19
|
// component.node = entity.assign(new NodeComp(node, entity))
|
|
23
|
-
node.onPress.connect(
|
|
20
|
+
node.onPress.connect(() => {
|
|
24
21
|
// console.log('onPress.connect')
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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(() => {
|
|
28
25
|
if (Object.prototype.hasOwnProperty.call(component, 'onPress')) {
|
|
29
26
|
component.onPress(component);
|
|
30
27
|
}
|
|
31
28
|
}), scaleDown);
|
|
32
|
-
|
|
29
|
+
const ease = pixi_action_ease_1.EaseBackIn.create(seq);
|
|
33
30
|
component.node.runAction(ease);
|
|
34
31
|
});
|
|
35
32
|
});
|
|
36
|
-
event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, GUIComponent_1.ProgressBarComp,
|
|
37
|
-
|
|
38
|
-
var spriteComp = entity.getComponent(__1.SpriteRender);
|
|
33
|
+
event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, GUIComponent_1.ProgressBarComp, ({ entity, component }) => {
|
|
34
|
+
const spriteComp = entity.getComponent(__1.SpriteRender);
|
|
39
35
|
if (!spriteComp)
|
|
40
36
|
throw Error('ProgressBarComp need SpriteRender');
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
const { progress, mode } = component;
|
|
38
|
+
const node = new LoadingBar_1.LoadingBar(mode, spriteComp.node.instance);
|
|
43
39
|
spriteComp.node.instance.mask = node;
|
|
44
40
|
component.node = entity.assign(new __1.NodeComp(node, entity));
|
|
45
41
|
node.progress = progress;
|
|
46
42
|
});
|
|
47
|
-
event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, GUIComponent_1.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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;
|
|
49
|
+
}
|
|
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 });
|
|
51
55
|
component.node = entity.assign(new __1.NodeComp(view, entity));
|
|
52
56
|
});
|
|
53
|
-
event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, GUIComponent_1.LabelComp,
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
var node = new pixi_js_1.Text();
|
|
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();
|
|
57
60
|
// node.texture.rotate = 8
|
|
58
61
|
node.style.fill = '#fff';
|
|
59
62
|
component.node = entity.assign(new __1.NodeComp(node, entity));
|
|
60
|
-
|
|
63
|
+
const { string = '', font = '', size } = component;
|
|
61
64
|
if (font)
|
|
62
65
|
component.setFont(font);
|
|
63
66
|
component.setSize(size);
|
|
64
67
|
component.setString(string);
|
|
65
68
|
});
|
|
66
69
|
// event_manager.subscribe(EventTypes.ComponentAdded, BlockInputEventsComp), this);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// throw new Error('Method not implemented.');
|
|
70
|
-
};
|
|
71
|
-
return GUISystem;
|
|
72
|
-
}());
|
|
70
|
+
}
|
|
71
|
+
}
|
|
73
72
|
exports.GUISystem = GUISystem;
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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,23 +15,20 @@ 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
|
-
var entity = _a.entity;
|
|
24
|
-
var nodeRenderComp = entity.getComponent(RenderComponent_1.NodeRender);
|
|
25
|
-
var node = new pixi_js_1.Container();
|
|
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();
|
|
26
23
|
nodeRenderComp.node = entity.assign(new __1.NodeComp(node, entity));
|
|
27
24
|
});
|
|
28
|
-
event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, RenderComponent_1.SpriteRender,
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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);
|
|
32
29
|
if (type === SpriteTypes.FILLED) {
|
|
33
30
|
// console.log('fillType', fillType)
|
|
34
|
-
|
|
31
|
+
const loadingBar = new LoadingBar_1.LoadingBar(fillType, node);
|
|
35
32
|
if (fillRange)
|
|
36
33
|
loadingBar.progress = fillRange;
|
|
37
34
|
if (fillCenter)
|
|
@@ -44,34 +41,26 @@ var RenderSystem = /** @class */ (function () {
|
|
|
44
41
|
// component.node.anchorX = 0.5
|
|
45
42
|
// component.node.anchorY = 0.5
|
|
46
43
|
});
|
|
47
|
-
event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, RenderComponent_1.MaskRender,
|
|
48
|
-
var component = _a.component;
|
|
44
|
+
event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, RenderComponent_1.MaskRender, ({ component }) => {
|
|
49
45
|
console.log('MaskRender', component);
|
|
50
46
|
// const { type, segments, inverted } = maskComp
|
|
51
47
|
// const node = new cc.ClippingNode()
|
|
52
48
|
// node.setInverted(inverted)
|
|
53
49
|
// maskComp.node = ett.assign(new NodeComp(node, ett))
|
|
54
50
|
});
|
|
55
|
-
event_manager.subscribe(entityx_ts_1.EventTypes.ComponentAdded, RenderComponent_1.GraphicsRender,
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
node.
|
|
60
|
-
node.fillStyle = strokeColor;
|
|
61
|
-
node.width = lineWidth;
|
|
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);
|
|
62
56
|
component.node = entity.assign(new __1.NodeComp(node, entity));
|
|
63
57
|
// node.drawCircle(0, 0, 100)
|
|
64
58
|
});
|
|
65
|
-
event_manager.subscribe(entityx_ts_1.EventTypes.ComponentRemoved, __1.NodeComp,
|
|
66
|
-
var component = _a.component;
|
|
59
|
+
event_manager.subscribe(entityx_ts_1.EventTypes.ComponentRemoved, __1.NodeComp, ({ component }) => {
|
|
67
60
|
if (component) {
|
|
68
61
|
component.instance.removeFromParent();
|
|
69
62
|
}
|
|
70
63
|
});
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// throw new Error('Method not implemented.');
|
|
74
|
-
};
|
|
75
|
-
return RenderSystem;
|
|
76
|
-
}());
|
|
64
|
+
}
|
|
65
|
+
}
|
|
77
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,10 +17,11 @@
|
|
|
17
17
|
"license": "ISC",
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@pixi/ui": "^2.1.5",
|
|
20
|
-
"
|
|
20
|
+
"@safe-engine/core": "1.0.1",
|
|
21
|
+
"entityx-ts": "2.0.2",
|
|
21
22
|
"lodash": "^4.17.21",
|
|
22
23
|
"pixi-action-ease": "^1.0.12",
|
|
23
|
-
"pixi.js": "^
|
|
24
|
+
"pixi.js": "^7.4.2"
|
|
24
25
|
},
|
|
25
26
|
"devDependencies": {
|
|
26
27
|
"@types/lodash": "^4.17.7",
|
package/src/app.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { ComponentX, NoRenderComponentX } from '@safe-engine/core'
|
|
2
|
+
import { Assets, Container, Point, Text } from 'pixi.js'
|
|
3
|
+
|
|
4
|
+
import { Color4B } from '../core/Color'
|
|
5
|
+
import { LoadingBar, LoadingBarMode, ProgressTimer } from '../core/LoadingBar'
|
|
6
|
+
import { NodeComp } from './NodeComp'
|
|
7
|
+
|
|
8
|
+
// const _htmlTextParser = new HtmlTextParser()
|
|
9
|
+
export const FillType = {
|
|
10
|
+
HORIZONTAL: 0,
|
|
11
|
+
VERTICAL: 1,
|
|
12
|
+
RADIAL: 2,
|
|
13
|
+
}
|
|
14
|
+
type Keys = keyof typeof FillType
|
|
15
|
+
type Values = (typeof FillType)[Keys]
|
|
16
|
+
|
|
17
|
+
export class ButtonComp extends NoRenderComponentX<NodeComp> {
|
|
18
|
+
normalImage: string
|
|
19
|
+
selectedImage: string
|
|
20
|
+
disableImage: string
|
|
21
|
+
zoomScale: number
|
|
22
|
+
onPress: (target: ButtonComp) => void
|
|
23
|
+
|
|
24
|
+
setOnPress(cb: (target: ButtonComp) => void) {
|
|
25
|
+
this.onPress = cb
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
set enabled(val) {
|
|
29
|
+
this.node.instance.interactive = val
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export class ProgressBarComp extends NoRenderComponentX<NodeComp<LoadingBar>> {
|
|
34
|
+
mode = LoadingBarMode.BAR
|
|
35
|
+
private _progress: number
|
|
36
|
+
isReverse: boolean
|
|
37
|
+
|
|
38
|
+
get progress() {
|
|
39
|
+
return this._progress
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
set progress(val: number) {
|
|
43
|
+
this._progress = val
|
|
44
|
+
this.node.instance.progress = val
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export class LabelComp extends ComponentX<NodeComp<Text>> {
|
|
49
|
+
font: string
|
|
50
|
+
string: string
|
|
51
|
+
size = 64
|
|
52
|
+
|
|
53
|
+
getString() {
|
|
54
|
+
if (this.node.instance instanceof Text) {
|
|
55
|
+
return this.node.instance.text
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
setString(val: string) {
|
|
60
|
+
if (this.node.instance instanceof Text) {
|
|
61
|
+
this.node.instance.text = val
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
getSize() {
|
|
66
|
+
if (this.node.instance instanceof Text) {
|
|
67
|
+
return this.node.instance.style.fontSize
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
setSize(val) {
|
|
71
|
+
if (this.node.instance instanceof Text) {
|
|
72
|
+
this.node.instance.style.fontSize = val
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
getFont() {
|
|
77
|
+
if (this.node.instance instanceof Text) {
|
|
78
|
+
return this.node.instance.style.fontFamily as string
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
setFont(val: string) {
|
|
83
|
+
// console.log('set font', val, Assets.get(val))
|
|
84
|
+
if (this.node.instance instanceof Text) {
|
|
85
|
+
if (Assets.get(val)) this.node.instance.style.fontFamily = Assets.get(val).family
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export class ScrollView extends ComponentX<NodeComp<Container>> {
|
|
91
|
+
width: number
|
|
92
|
+
height: number
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export class BlockInputEventsComp extends NoRenderComponentX<NodeComp<Container>> { }
|
|
96
|
+
|
|
97
|
+
export class ProgressTimerComp extends ComponentX<NodeComp<ProgressTimer>> {
|
|
98
|
+
spriteFrame: string
|
|
99
|
+
fillType: Values
|
|
100
|
+
fillRange: number
|
|
101
|
+
fillCenter: Point
|
|
102
|
+
isReverse: boolean
|
|
103
|
+
|
|
104
|
+
getFillRange() {
|
|
105
|
+
return this.node.instance.progress
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
setFillStart(val: number) {
|
|
109
|
+
this.node.instance.fillCenter.x = val
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
setFillRange(val: number) {
|
|
113
|
+
// console.log('setFillRange', this.node.instance);
|
|
114
|
+
this.node.instance.progress = val
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export class RichTextComp extends ComponentX<NodeComp<Text>> {
|
|
119
|
+
protected font: string
|
|
120
|
+
protected string: string
|
|
121
|
+
protected size: number
|
|
122
|
+
|
|
123
|
+
getString() {
|
|
124
|
+
return this.string
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
setString(val: string) {
|
|
128
|
+
this.string = val
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export class LabelOutlineComp extends NoRenderComponentX<NodeComp> {
|
|
133
|
+
color: typeof Color4B
|
|
134
|
+
width: number
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export class LabelShadowComp extends NoRenderComponentX<NodeComp> {
|
|
138
|
+
color: typeof Color4B
|
|
139
|
+
blur: number
|
|
140
|
+
offset: Point
|
|
141
|
+
}
|