@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,14 +1,15 @@
1
- import { ColorSource, Point, Sprite, Texture, TextureSource } from 'pixi.js'
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
@@ -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 { addGameCanvasTo, app, initWorld,setupResolution } from './app'
1
+ export * from './app'
2
2
  export * from './components/GUIComponent'
3
- export { NodeComp } from './components/NodeComp'
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 { GameWorld } from './gworld'
9
- export { instantiate, registerSystem } from './helper/utils'
6
+ export * from './systems/GUISystem'
7
+ export * from './systems/RenderSystem'
@@ -1,95 +1,80 @@
1
1
  import { Button, ScrollBox } from '@pixi/ui'
2
+ import { GameWorld } from '@safe-engine/core'
2
3
  import {
3
- ComponentAddedEvent, EventManager, EventReceive,
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(ComponentAddedEvent(ButtonComp), this)
16
- event_manager.subscribe(ComponentAddedEvent(ProgressBarComp), this)
17
- event_manager.subscribe(ComponentAddedEvent(ScrollView), this)
18
- event_manager.subscribe(ComponentAddedEvent(LabelComp), this)
19
- // event_manager.subscribe(ComponentAddedEvent(BlockInputEventsComp), this);
20
- }
21
- receive(type: string, event: EventReceive) {
22
- switch (type) {
23
- case ComponentAddedEvent(ButtonComp): {
24
- console.log('ComponentAddedEvent ButtonComp', event)
25
- const ett = event.entity
26
- const button = ett.getComponent(ButtonComp)
27
- const nodeComp = ett.getComponent(NodeComp)
28
- // const { normalImage, selectedImage, disableImage, texType, zoomScale } = button
29
- const node = new Button(nodeComp.instance)
30
- // node.setZoomScale(zoomScale - 1)
31
- button.node = nodeComp
32
- // button.node = ett.assign(new NodeComp(node, ett))
33
- node.onPress.connect(() => {
34
- // console.log('onPress.connect')
35
- const scale = ScaleTo.create(0.12, 1.2)
36
- const scaleDown = ScaleTo.create(0.12, 1)
37
- const seq = Sequence.create(
38
- scale,
39
- CallFunc.create(() => {
40
- if (Object.prototype.hasOwnProperty.call(button, 'onPress')) {
41
- button.onPress(button)
42
- }
43
- }),
44
- scaleDown,
45
- )
46
- const ease = EaseBackIn.create(seq)
47
- button.node.runAction(ease)
48
- })
49
- break
50
- }
51
- case ComponentAddedEvent(ProgressBarComp): {
52
- console.log('ComponentAddedEvent ProgressBarComp', event)
53
- const ett = event.entity
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
- case ComponentAddedEvent(LabelComp): {
74
- console.log('ComponentAddedEvent LabelComp', event)
75
- const ett = event.entity
76
- const label = ett.getComponent(LabelComp)
77
- const node = new Text()
78
- // node.texture.rotate = 8
79
- node.style.fill = '#fff'
80
- label.node = ett.assign(new NodeComp(node, ett))
81
- const { string = '', font = '', size } = label
82
- if (font) label.setFont(font)
83
- label.setSize(size)
84
- label.setString(string)
85
- break
86
- }
87
-
88
- default:
89
- break
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
- ComponentAddedEvent, ComponentRemovedEvent, EventManager, EventReceive,
3
- System
4
- } from 'entityx-ts'
5
- import { Container, Graphics, Sprite } from 'pixi.js'
6
-
7
- import { NodeComp } from '..'
8
- import { GraphicsRender, NodeRender, SpriteRender } from '../components/RenderComponent'
9
- import { LoadingBar } from '../core/LoadingBar'
10
-
11
- export enum SpriteTypes {
12
- SIMPLE,
13
- SLICED,
14
- TILED,
15
- FILLED,
16
- MESH,
17
- ANIMATION,
18
- }
19
-
20
- export class RenderSystem implements System {
21
- configure(event_manager: EventManager) {
22
- event_manager.subscribe(ComponentAddedEvent(NodeRender), this)
23
- event_manager.subscribe(ComponentAddedEvent(SpriteRender), this)
24
- // event_manager.subscribe(ComponentAddedEvent(ImageRender), this)
25
- // event_manager.subscribe(ComponentAddedEvent(MaskRender), this)
26
- event_manager.subscribe(ComponentAddedEvent(GraphicsRender), this)
27
- event_manager.subscribe(ComponentAddedEvent(NodeComp), this)
28
- event_manager.subscribe(ComponentRemovedEvent(NodeComp), this)
29
- }
30
-
31
- receive(type: string, event: EventReceive) {
32
- switch (type) {
33
- case ComponentAddedEvent(NodeRender): {
34
- // console.log('NodeRender', event)
35
- const ett = event.entity
36
- const nodeRenderComp = ett.getComponent(NodeRender)
37
- const node = new Container()
38
- nodeRenderComp.node = ett.assign(new NodeComp(node, ett))
39
- break
40
- }
41
-
42
- case ComponentAddedEvent(SpriteRender): {
43
- // console.log('ComponentAddedEvent SpriteRender', event)
44
- const ett = event.entity
45
- const spriteComp = ett.getComponent(SpriteRender)
46
- const { spriteFrame, type, fillType, fillRange, fillCenter } = spriteComp
47
- const node = Sprite.from(spriteFrame)
48
- if (type === SpriteTypes.FILLED) {
49
- // console.log('fillType', fillType)
50
- const loadingBar = new LoadingBar(fillType, node)
51
- if (fillRange) loadingBar.progress = fillRange
52
- if (fillCenter) loadingBar.fillCenter = fillCenter
53
- spriteComp.loadingBar = loadingBar
54
- // node.setMidpoint(fillCenter)
55
- }
56
- // node.texture.rotate = 8
57
- spriteComp.node = ett.assign(new NodeComp(node, ett))
58
- // spriteComp.node.anchorX = 0.5
59
- // spriteComp.node.anchorY = 0.5
60
- break
61
- }
62
-
63
- // case ComponentAddedEvent(MaskRender): {
64
- // console.log('MaskRender', event.component);
65
- // const ett = event.entity
66
- // const maskComp = event.entity.getComponent(MaskRender)
67
- // const { type, segments, inverted } = maskComp
68
- // const node = new cc.ClippingNode()
69
- // node.setInverted(inverted)
70
- // maskComp.node = ett.assign(new NodeComp(node, ett))
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
@@ -5,7 +5,7 @@
5
5
  "dom"
6
6
  ],
7
7
  "outDir": "dist",
8
- "target": "es5",
8
+ "target": "ES6",
9
9
  "declaration": true,
10
10
  "declarationMap": true,
11
11
  "skipLibCheck": true,
@@ -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
- }
@@ -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
- }