@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,14 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ComponentX } from '@safe-engine/core'
|
|
2
|
+
import { ColorSource, Graphics, Point, Sprite, Texture, TextureSource } from 'pixi.js'
|
|
2
3
|
|
|
3
|
-
import { ComponentX } from '../core/decorator'
|
|
4
4
|
import { LoadingBar, LoadingBarMode } from '../core/LoadingBar'
|
|
5
5
|
import { SpriteTypes } from '../systems/RenderSystem'
|
|
6
|
+
import { NodeComp } from './NodeComp'
|
|
6
7
|
|
|
7
|
-
export class NodeRender extends ComponentX {
|
|
8
|
+
export class NodeRender extends ComponentX<NodeComp> {
|
|
8
9
|
nodeName?: string
|
|
9
10
|
}
|
|
10
11
|
|
|
11
|
-
export class SpriteRender extends ComponentX {
|
|
12
|
+
export class SpriteRender extends ComponentX<NodeComp<Sprite>> {
|
|
12
13
|
public spriteFrame: TextureSource
|
|
13
14
|
public type: SpriteTypes
|
|
14
15
|
public fillType: LoadingBarMode = LoadingBarMode.BAR
|
|
@@ -52,13 +53,13 @@ export class SpriteRender extends ComponentX {
|
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
55
|
|
|
55
|
-
export class GraphicsRender extends ComponentX {
|
|
56
|
+
export class GraphicsRender extends ComponentX<NodeComp<Graphics>> {
|
|
56
57
|
lineWidth = 2
|
|
57
58
|
strokeColor: ColorSource
|
|
58
59
|
fillColor: ColorSource
|
|
59
60
|
}
|
|
60
61
|
|
|
61
|
-
export class MaskRender extends ComponentX {
|
|
62
|
+
export class MaskRender extends ComponentX<NodeComp> {
|
|
62
63
|
type: number
|
|
63
64
|
segments: number
|
|
64
65
|
inverted: boolean
|
package/src/core/LoadingBar.ts
CHANGED
|
@@ -1,33 +1,63 @@
|
|
|
1
|
-
import { Graphics, Point, Sprite } from 'pixi.js'
|
|
2
|
-
|
|
3
|
-
export enum LoadingBarMode {
|
|
4
|
-
BAR,
|
|
5
|
-
RADIAL,
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export class LoadingBar extends Graphics {
|
|
9
|
-
spriteComp: Sprite
|
|
10
|
-
mode: LoadingBarMode
|
|
11
|
-
fillCenter = new Point(0.5, 0.5)
|
|
12
|
-
constructor(mode: LoadingBarMode, spriteComp: Sprite) {
|
|
13
|
-
super()
|
|
14
|
-
this.spriteComp = spriteComp
|
|
15
|
-
this.mode = mode || LoadingBarMode.BAR
|
|
16
|
-
this.beginFill(0xffffff)
|
|
17
|
-
this.drawRect(0, 0, spriteComp.width, spriteComp.height)
|
|
18
|
-
spriteComp.mask = this
|
|
19
|
-
spriteComp.addChild(this)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
set progress(val: number) {
|
|
23
|
-
this.clear()
|
|
24
|
-
this.beginFill(0xffffff)
|
|
25
|
-
if (this.mode === LoadingBarMode.BAR) {
|
|
26
|
-
const spriteComp = this.spriteComp
|
|
27
|
-
this.drawRect(0, 0, spriteComp.width * val, spriteComp.height)
|
|
28
|
-
// console.log('new length', spriteComp.width)
|
|
29
|
-
this.x = -spriteComp.width * 0.5
|
|
30
|
-
this.y = -spriteComp.height * 0.5
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
1
|
+
import { Container, Graphics, Point, Sprite, Texture } from 'pixi.js'
|
|
2
|
+
|
|
3
|
+
export enum LoadingBarMode {
|
|
4
|
+
BAR,
|
|
5
|
+
RADIAL,
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export class LoadingBar extends Graphics {
|
|
9
|
+
spriteComp: Sprite
|
|
10
|
+
mode: LoadingBarMode
|
|
11
|
+
fillCenter = new Point(0.5, 0.5)
|
|
12
|
+
constructor(mode: LoadingBarMode, spriteComp: Sprite) {
|
|
13
|
+
super()
|
|
14
|
+
this.spriteComp = spriteComp
|
|
15
|
+
this.mode = mode || LoadingBarMode.BAR
|
|
16
|
+
this.beginFill(0xffffff)
|
|
17
|
+
this.drawRect(0, 0, spriteComp.width, spriteComp.height)
|
|
18
|
+
spriteComp.mask = this
|
|
19
|
+
spriteComp.addChild(this)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
set progress(val: number) {
|
|
23
|
+
this.clear()
|
|
24
|
+
this.beginFill(0xffffff)
|
|
25
|
+
if (this.mode === LoadingBarMode.BAR) {
|
|
26
|
+
const spriteComp = this.spriteComp
|
|
27
|
+
this.drawRect(0, 0, spriteComp.width * val, spriteComp.height)
|
|
28
|
+
// console.log('new length', spriteComp.width)
|
|
29
|
+
this.x = -spriteComp.width * 0.5
|
|
30
|
+
this.y = -spriteComp.height * 0.5
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export class ProgressTimer extends Container {
|
|
36
|
+
graphics: Graphics
|
|
37
|
+
spriteComp: Sprite
|
|
38
|
+
mode: LoadingBarMode
|
|
39
|
+
fillCenter = new Point(0.5, 0.5)
|
|
40
|
+
constructor(mode: LoadingBarMode, spriteFrame: string) {
|
|
41
|
+
super()
|
|
42
|
+
const texture = Texture.from(spriteFrame)
|
|
43
|
+
this.spriteComp = Sprite.from(texture)
|
|
44
|
+
this.graphics = new Graphics()
|
|
45
|
+
this.mode = mode || LoadingBarMode.BAR
|
|
46
|
+
this.graphics.beginFill(0xffffff)
|
|
47
|
+
this.graphics.drawRect(0, 0, this.spriteComp.width, this.spriteComp.height)
|
|
48
|
+
this.spriteComp.mask = this.graphics
|
|
49
|
+
this.addChild(this.graphics)
|
|
50
|
+
this.addChild(this.spriteComp)
|
|
51
|
+
// this.graphics.x = -this.spriteComp.width * this.fillCenter.x
|
|
52
|
+
// this.graphics.y = -this.spriteComp.height * this.fillCenter.y
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
set progress(val: number) {
|
|
56
|
+
this.graphics.clear()
|
|
57
|
+
if (this.mode === LoadingBarMode.BAR) {
|
|
58
|
+
this.graphics.beginFill(0xffffff)
|
|
59
|
+
this.graphics.drawRect(0, 0, this.spriteComp.width * val, this.spriteComp.height)
|
|
60
|
+
// console.log('new length', this.width)
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
export
|
|
1
|
+
export * from './app'
|
|
2
2
|
export * from './components/GUIComponent'
|
|
3
|
-
export
|
|
3
|
+
export * from './components/NodeComp'
|
|
4
4
|
export * from './components/RenderComponent'
|
|
5
|
-
export { ComponentX, NoRenderComponentX } from './core/decorator'
|
|
6
|
-
export { SceneComponent } from './core/Scene'
|
|
7
5
|
export * from './core/Size'
|
|
8
|
-
export
|
|
9
|
-
export
|
|
6
|
+
export * from './systems/GUISystem'
|
|
7
|
+
export * from './systems/RenderSystem'
|
package/src/systems/GUISystem.ts
CHANGED
|
@@ -1,95 +1,80 @@
|
|
|
1
1
|
import { Button, ScrollBox } from '@pixi/ui'
|
|
2
|
+
import { GameWorld } from '@safe-engine/core'
|
|
2
3
|
import {
|
|
3
|
-
|
|
4
|
+
EventManager,
|
|
5
|
+
EventTypes,
|
|
4
6
|
System
|
|
5
7
|
} from 'entityx-ts'
|
|
6
8
|
import { Sprite, Text } from 'pixi.js'
|
|
7
9
|
import { CallFunc, EaseBackIn, ScaleTo, Sequence } from 'pixi-action-ease'
|
|
8
10
|
|
|
9
11
|
import { NodeComp, SpriteRender } from '..'
|
|
10
|
-
import { ButtonComp, LabelComp, ProgressBarComp, ScrollView } from '../components/GUIComponent'
|
|
11
|
-
import { LoadingBar } from '../core/LoadingBar'
|
|
12
|
+
import { ButtonComp, LabelComp, ProgressBarComp, ProgressTimerComp, ScrollView } from '../components/GUIComponent'
|
|
13
|
+
import { LoadingBar, LoadingBarMode, ProgressTimer } from '../core/LoadingBar'
|
|
12
14
|
|
|
13
15
|
export class GUISystem implements System {
|
|
14
|
-
configure(event_manager: EventManager) {
|
|
15
|
-
event_manager.subscribe(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
const
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const bar = ett.getComponent(ProgressBarComp)
|
|
55
|
-
const spriteComp = ett.getComponent(SpriteRender)
|
|
56
|
-
if (!spriteComp) throw Error('ProgressBarComp need SpriteRender')
|
|
57
|
-
const { progress, mode } = bar
|
|
58
|
-
const node = new LoadingBar(mode, spriteComp.node.instance as Sprite)
|
|
59
|
-
spriteComp.node.instance.mask = node
|
|
60
|
-
bar.node = ett.assign(new NodeComp(node, ett))
|
|
61
|
-
node.progress = progress
|
|
62
|
-
break
|
|
63
|
-
}
|
|
64
|
-
case ComponentAddedEvent(ScrollView): {
|
|
65
|
-
console.log('ComponentAddedEvent ScrollView', event)
|
|
66
|
-
const ett = event.entity
|
|
67
|
-
const scroll = event.component as ScrollView
|
|
68
|
-
const { width, height } = scroll
|
|
69
|
-
const view = new ScrollBox({ width, height })
|
|
70
|
-
scroll.node = ett.assign(new NodeComp(view, ett))
|
|
71
|
-
break
|
|
16
|
+
configure(event_manager: EventManager<GameWorld>) {
|
|
17
|
+
event_manager.subscribe(EventTypes.ComponentAdded, ButtonComp, ({ entity, component }) => {
|
|
18
|
+
const nodeComp = entity.getComponent(NodeComp)
|
|
19
|
+
// const { normalImage, selectedImage, disableImage, texType, zoomScale } = button
|
|
20
|
+
const node = new Button(nodeComp.instance)
|
|
21
|
+
// node.setZoomScale(zoomScale - 1)
|
|
22
|
+
component.node = nodeComp
|
|
23
|
+
// component.node = entity.assign(new NodeComp(node, entity))
|
|
24
|
+
node.onPress.connect(() => {
|
|
25
|
+
// console.log('onPress.connect')
|
|
26
|
+
const scale = ScaleTo.create(0.12, 1.2)
|
|
27
|
+
const scaleDown = ScaleTo.create(0.12, 1)
|
|
28
|
+
const seq = Sequence.create(
|
|
29
|
+
scale,
|
|
30
|
+
CallFunc.create(() => {
|
|
31
|
+
if (Object.prototype.hasOwnProperty.call(component, 'onPress')) {
|
|
32
|
+
component.onPress(component)
|
|
33
|
+
}
|
|
34
|
+
}),
|
|
35
|
+
scaleDown,
|
|
36
|
+
)
|
|
37
|
+
const ease = EaseBackIn.create(seq)
|
|
38
|
+
component.node.runAction(ease)
|
|
39
|
+
})
|
|
40
|
+
})
|
|
41
|
+
event_manager.subscribe(EventTypes.ComponentAdded, ProgressBarComp, ({ entity, component }) => {
|
|
42
|
+
const spriteComp = entity.getComponent(SpriteRender)
|
|
43
|
+
if (!spriteComp) throw Error('ProgressBarComp need SpriteRender')
|
|
44
|
+
const { progress, mode } = component
|
|
45
|
+
const node = new LoadingBar(mode, spriteComp.node.instance as Sprite)
|
|
46
|
+
spriteComp.node.instance.mask = node
|
|
47
|
+
component.node = entity.assign(new NodeComp(node, entity))
|
|
48
|
+
node.progress = progress
|
|
49
|
+
})
|
|
50
|
+
event_manager.subscribe(EventTypes.ComponentAdded, ProgressTimerComp, ({ entity, component }) => {
|
|
51
|
+
// console.log(component, '.progress')
|
|
52
|
+
const { spriteFrame, fillCenter } = component
|
|
53
|
+
const node = new ProgressTimer(LoadingBarMode.BAR, spriteFrame)
|
|
54
|
+
if (fillCenter) {
|
|
55
|
+
node.fillCenter = fillCenter
|
|
72
56
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
update() {
|
|
93
|
-
// throw new Error('Method not implemented.');
|
|
57
|
+
component.node = entity.assign(new NodeComp(node, entity))
|
|
58
|
+
})
|
|
59
|
+
event_manager.subscribe(EventTypes.ComponentAdded, ScrollView, ({ entity, component }) => {
|
|
60
|
+
const { width, height } = component
|
|
61
|
+
const view = new ScrollBox({ width, height })
|
|
62
|
+
component.node = entity.assign(new NodeComp(view, entity))
|
|
63
|
+
})
|
|
64
|
+
event_manager.subscribe(EventTypes.ComponentAdded, LabelComp, ({ entity, component }) => {
|
|
65
|
+
// console.log('ComponentAddedEvent LabelComp', component)
|
|
66
|
+
const node = new Text()
|
|
67
|
+
// node.texture.rotate = 8
|
|
68
|
+
node.style.fill = '#fff'
|
|
69
|
+
component.node = entity.assign(new NodeComp(node, entity))
|
|
70
|
+
const { string = '', font = '', size } = component
|
|
71
|
+
if (font) component.setFont(font)
|
|
72
|
+
component.setSize(size)
|
|
73
|
+
component.setString(string)
|
|
74
|
+
})
|
|
75
|
+
// event_manager.subscribe(EventTypes.ComponentAdded, BlockInputEventsComp), this);
|
|
94
76
|
}
|
|
77
|
+
// update() {
|
|
78
|
+
// throw new Error('Method not implemented.');
|
|
79
|
+
// }
|
|
95
80
|
}
|
|
@@ -1,100 +1,70 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
event_manager.subscribe(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
event_manager.subscribe(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
// break
|
|
72
|
-
// }
|
|
73
|
-
|
|
74
|
-
case ComponentAddedEvent(GraphicsRender): {
|
|
75
|
-
console.log('MaskRender', event.component)
|
|
76
|
-
const ett = event.entity
|
|
77
|
-
const graphics = event.entity.getComponent(GraphicsRender)
|
|
78
|
-
const { lineWidth, strokeColor, fillColor } = graphics
|
|
79
|
-
const node = new Graphics()
|
|
80
|
-
node.beginFill(fillColor)
|
|
81
|
-
node.lineStyle(lineWidth, strokeColor)
|
|
82
|
-
graphics.node = ett.assign(new NodeComp(node, ett))
|
|
83
|
-
// node.drawCircle(0, 0, 100)
|
|
84
|
-
break
|
|
85
|
-
}
|
|
86
|
-
case ComponentRemovedEvent(NodeComp): {
|
|
87
|
-
const node = event.component as NodeComp
|
|
88
|
-
if (node) {
|
|
89
|
-
node.instance.removeFromParent()
|
|
90
|
-
}
|
|
91
|
-
break
|
|
92
|
-
}
|
|
93
|
-
default:
|
|
94
|
-
break
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
update() {
|
|
98
|
-
// throw new Error('Method not implemented.');
|
|
99
|
-
}
|
|
100
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
EventManager,
|
|
3
|
+
EventTypes,
|
|
4
|
+
System
|
|
5
|
+
} from 'entityx-ts'
|
|
6
|
+
import { Container, Graphics, Sprite } from 'pixi.js'
|
|
7
|
+
|
|
8
|
+
import { NodeComp } from '..'
|
|
9
|
+
import { GraphicsRender, MaskRender, NodeRender, SpriteRender } from '../components/RenderComponent'
|
|
10
|
+
import { LoadingBar } from '../core/LoadingBar'
|
|
11
|
+
|
|
12
|
+
export enum SpriteTypes {
|
|
13
|
+
SIMPLE,
|
|
14
|
+
SLICED,
|
|
15
|
+
TILED,
|
|
16
|
+
FILLED,
|
|
17
|
+
MESH,
|
|
18
|
+
ANIMATION,
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export class RenderSystem implements System {
|
|
22
|
+
configure(event_manager: EventManager) {
|
|
23
|
+
event_manager.subscribe(EventTypes.ComponentAdded, NodeRender, ({ entity }) => {
|
|
24
|
+
const nodeRenderComp = entity.getComponent(NodeRender)
|
|
25
|
+
const node = new Container()
|
|
26
|
+
nodeRenderComp.node = entity.assign(new NodeComp(node, entity))
|
|
27
|
+
})
|
|
28
|
+
event_manager.subscribe(EventTypes.ComponentAdded, SpriteRender, ({ entity, component }) => {
|
|
29
|
+
const { spriteFrame, type, fillType, fillRange, fillCenter } = component
|
|
30
|
+
// console.log('SpriteRender', component)
|
|
31
|
+
const node = Sprite.from(spriteFrame)
|
|
32
|
+
if (type === SpriteTypes.FILLED) {
|
|
33
|
+
// console.log('fillType', fillType)
|
|
34
|
+
const loadingBar = new LoadingBar(fillType, node)
|
|
35
|
+
if (fillRange) loadingBar.progress = fillRange
|
|
36
|
+
if (fillCenter) loadingBar.fillCenter = fillCenter
|
|
37
|
+
component.loadingBar = loadingBar
|
|
38
|
+
// node.setMidpoint(fillCenter)
|
|
39
|
+
}
|
|
40
|
+
// node.texture.rotate = 8
|
|
41
|
+
component.node = entity.assign(new NodeComp(node, entity))
|
|
42
|
+
// component.node.anchorX = 0.5
|
|
43
|
+
// component.node.anchorY = 0.5
|
|
44
|
+
})
|
|
45
|
+
event_manager.subscribe(EventTypes.ComponentAdded, MaskRender, ({ component }) => {
|
|
46
|
+
console.log('MaskRender', component);
|
|
47
|
+
// const { type, segments, inverted } = maskComp
|
|
48
|
+
// const node = new cc.ClippingNode()
|
|
49
|
+
// node.setInverted(inverted)
|
|
50
|
+
// maskComp.node = ett.assign(new NodeComp(node, ett))
|
|
51
|
+
})
|
|
52
|
+
event_manager.subscribe(EventTypes.ComponentAdded, GraphicsRender, ({ entity, component }) => {
|
|
53
|
+
const { lineWidth, strokeColor, fillColor } = component
|
|
54
|
+
const node = new Graphics()
|
|
55
|
+
node.beginFill(fillColor)
|
|
56
|
+
node.lineStyle(lineWidth, strokeColor)
|
|
57
|
+
component.node = entity.assign(new NodeComp(node, entity))
|
|
58
|
+
// node.drawCircle(0, 0, 100)
|
|
59
|
+
})
|
|
60
|
+
event_manager.subscribe(EventTypes.ComponentRemoved, NodeComp, ({ component }) => {
|
|
61
|
+
if (component) {
|
|
62
|
+
component.instance.removeFromParent()
|
|
63
|
+
}
|
|
64
|
+
})
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// update() {
|
|
68
|
+
// throw new Error('Method not implemented.');
|
|
69
|
+
// }
|
|
70
|
+
}
|
package/tsconfig.json
CHANGED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { Constructor } from 'entityx-ts'
|
|
2
|
-
import { actionManager, Animation, CallFunc, DelayTime, Repeat, Sequence } from 'pixi-action-ease'
|
|
3
|
-
|
|
4
|
-
import { NodeComp } from './NodeComp'
|
|
5
|
-
|
|
6
|
-
export class EnhancedComponent {
|
|
7
|
-
constructor(...args: any[]) {
|
|
8
|
-
const [data] = args
|
|
9
|
-
if (data) {
|
|
10
|
-
// console.log('constructor', this.constructor.name, data)
|
|
11
|
-
Object.keys(data).forEach((key) => {
|
|
12
|
-
this[key] = data[key]
|
|
13
|
-
})
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
node: NodeComp
|
|
17
|
-
static hasRender = true
|
|
18
|
-
actionsMap: { [key: string]: Animation } = {}
|
|
19
|
-
addComponent<T extends EnhancedComponent>(instance): T {
|
|
20
|
-
return this.node.addComponent(instance)
|
|
21
|
-
}
|
|
22
|
-
getComponent<T extends ComponentType>(component: Constructor<T>): T {
|
|
23
|
-
return this.node.getComponent(component)
|
|
24
|
-
}
|
|
25
|
-
schedule(callback: (dt?: number) => void, interval: number, repeat = -1, delay = 0, key?: string) {
|
|
26
|
-
const action = Sequence.create(DelayTime.create(interval), CallFunc.create(callback))
|
|
27
|
-
const repeatAct = Repeat.create(action, repeat)
|
|
28
|
-
const seq = Sequence.create(DelayTime.create(delay), repeatAct)
|
|
29
|
-
const animation = actionManager.runAction(this.node.instance as any, seq)
|
|
30
|
-
this.actionsMap[key] = animation
|
|
31
|
-
}
|
|
32
|
-
unschedule(callback: (arg?: unknown) => void, key?: string) {
|
|
33
|
-
// this.node.instance.unschedule(callback.bind(this))
|
|
34
|
-
this.actionsMap[key].stop()
|
|
35
|
-
}
|
|
36
|
-
unscheduleAllCallbacks() {
|
|
37
|
-
Object.values(this.actionsMap).forEach((action: Animation) => {
|
|
38
|
-
action.stop()
|
|
39
|
-
})
|
|
40
|
-
}
|
|
41
|
-
scheduleOnce(callback: (arg?: unknown) => void, delay: number, key?: string) {
|
|
42
|
-
const action = Sequence.create(DelayTime.create(delay), CallFunc.create(callback))
|
|
43
|
-
const animation = actionManager.runAction(this.node.instance as any, action)
|
|
44
|
-
this.actionsMap[key] = animation
|
|
45
|
-
}
|
|
46
|
-
getComponentsInChildren<T extends ComponentType>(component: Constructor<T>): T[] {
|
|
47
|
-
return this.node.getComponentsInChildren(component)
|
|
48
|
-
}
|
|
49
|
-
getComponentInChildren<T extends ComponentType>(component: Constructor<T>): T {
|
|
50
|
-
return this.node.getComponentInChildren(component)
|
|
51
|
-
}
|
|
52
|
-
isEqual(other: EnhancedComponent) {
|
|
53
|
-
return this.node.entity.id === other.node.entity.id
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export type ComponentType = EnhancedComponent | NodeComp
|
package/src/core/Scene.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { app } from '../app'
|
|
2
|
-
import { EnhancedComponent } from '../components/EnhancedComponent'
|
|
3
|
-
import { NodeComp } from '../components/NodeComp'
|
|
4
|
-
import { GameWorld } from '../gworld'
|
|
5
|
-
|
|
6
|
-
export class SceneComponent extends EnhancedComponent {
|
|
7
|
-
static boot: () => void
|
|
8
|
-
static create() {
|
|
9
|
-
const world = GameWorld.Instance
|
|
10
|
-
world.entities.reset()
|
|
11
|
-
const root = world.entities.create()
|
|
12
|
-
const node = root.assign(new NodeComp(app.stage, root))
|
|
13
|
-
const sceneComponent = root.assign(new SceneComponent())
|
|
14
|
-
sceneComponent.node = node
|
|
15
|
-
return sceneComponent
|
|
16
|
-
}
|
|
17
|
-
}
|
package/src/core/decorator.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { EnhancedComponent } from '../components/EnhancedComponent'
|
|
2
|
-
import { GameWorld } from '../gworld'
|
|
3
|
-
|
|
4
|
-
export class NoRenderComponentX extends EnhancedComponent {
|
|
5
|
-
static hasRender = false
|
|
6
|
-
static create(data?: any) {
|
|
7
|
-
return new this(data)
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export class ComponentX extends EnhancedComponent {
|
|
12
|
-
static create(data?: any) {
|
|
13
|
-
const world = GameWorld.Instance
|
|
14
|
-
const root = world.entities.create()
|
|
15
|
-
const comp = root.assign(new this(data))
|
|
16
|
-
return comp
|
|
17
|
-
}
|
|
18
|
-
}
|
package/src/gworld.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Constructor, System, World } from 'entityx-ts'
|
|
2
|
-
|
|
3
|
-
export class GameWorld extends World {
|
|
4
|
-
listUpdate: (System | Constructor<System>)[] = []
|
|
5
|
-
update(dt: number) {
|
|
6
|
-
this.listUpdate.forEach((system: any) => {
|
|
7
|
-
this.systems.update(system, dt)
|
|
8
|
-
})
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
private static _instance: GameWorld
|
|
12
|
-
|
|
13
|
-
public static get Instance() {
|
|
14
|
-
// Do you need arguments? Make it a regular static method instead.
|
|
15
|
-
return this._instance || (this._instance = new this())
|
|
16
|
-
}
|
|
17
|
-
}
|