@urso/core 0.2.5 → 0.3.0

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 (146) hide show
  1. package/.babelrc +11 -11
  2. package/README.md +10 -10
  3. package/build/js/index.js +1 -1
  4. package/build/js/index.js.LICENSE.txt +75 -47
  5. package/package.json +51 -52
  6. package/src/js/app.js +77 -76
  7. package/src/js/components/_info.js +8 -8
  8. package/src/js/components/base/_info.js +3 -3
  9. package/src/js/components/base/controller.js +78 -78
  10. package/src/js/components/debug/_info.js +6 -6
  11. package/src/js/components/debug/controller.js +38 -38
  12. package/src/js/components/debug/coords.js +23 -23
  13. package/src/js/components/debug/fps.js +34 -34
  14. package/src/js/components/debug/template.js +33 -33
  15. package/src/js/components/deviceRotate/_info.js +3 -3
  16. package/src/js/components/deviceRotate/controller.js +86 -86
  17. package/src/js/components/fullscreen/_info.js +6 -6
  18. package/src/js/components/fullscreen/android.js +104 -104
  19. package/src/js/components/fullscreen/controller.js +64 -64
  20. package/src/js/components/fullscreen/desktop.js +49 -49
  21. package/src/js/components/fullscreen/ios.js +111 -111
  22. package/src/js/components/loader/_info.js +4 -4
  23. package/src/js/components/loader/controller.js +66 -66
  24. package/src/js/components/loader/template.js +70 -70
  25. package/src/js/components/soundInitialPopup/_info.js +3 -3
  26. package/src/js/components/soundInitialPopup/controller.js +42 -42
  27. package/src/js/components/soundInitialPopup/template.js +109 -109
  28. package/src/js/components/stateDriven/_info.js +3 -3
  29. package/src/js/components/stateDriven/controller.js +96 -96
  30. package/src/js/config/load.js +5 -5
  31. package/src/js/config/main.js +10 -9
  32. package/src/js/extra/_info.js +21 -23
  33. package/src/js/extra/browserEvents.js +32 -32
  34. package/src/js/index.js +8 -8
  35. package/src/js/lib/_info.js +13 -13
  36. package/src/js/lib/cache.js +98 -98
  37. package/src/js/lib/composition.js +89 -89
  38. package/src/js/lib/device.js +1276 -1276
  39. package/src/js/lib/helper.js +539 -524
  40. package/src/js/lib/loader.js +121 -121
  41. package/src/js/lib/localData.js +15 -15
  42. package/src/js/lib/logger.js +22 -22
  43. package/src/js/lib/math.js +20 -20
  44. package/src/js/lib/objectPool.js +54 -54
  45. package/src/js/lib/time.js +18 -18
  46. package/src/js/lib/tween.js +147 -147
  47. package/src/js/modules/_info.js +11 -11
  48. package/src/js/modules/assets/_info.js +7 -7
  49. package/src/js/modules/assets/baseModel.js +18 -18
  50. package/src/js/modules/assets/config.js +35 -35
  51. package/src/js/modules/assets/controller.js +39 -37
  52. package/src/js/modules/assets/models/_info.js +11 -12
  53. package/src/js/modules/assets/models/atlas.js +8 -8
  54. package/src/js/modules/assets/models/audiosprite.js +27 -27
  55. package/src/js/modules/assets/models/bitmapFont.js +8 -8
  56. package/src/js/modules/assets/models/container.js +16 -16
  57. package/src/js/modules/assets/models/font.js +8 -8
  58. package/src/js/modules/assets/models/image.js +14 -14
  59. package/src/js/modules/assets/models/json.js +8 -8
  60. package/src/js/modules/assets/models/sound.js +14 -14
  61. package/src/js/modules/assets/models/spine.js +8 -8
  62. package/src/js/modules/assets/service.js +327 -330
  63. package/src/js/modules/instances/_info.js +3 -3
  64. package/src/js/modules/instances/controller.js +219 -218
  65. package/src/js/modules/logic/_info.js +4 -5
  66. package/src/js/modules/logic/config/_info.js +2 -3
  67. package/src/js/modules/logic/config/sounds.js +23 -23
  68. package/src/js/modules/logic/controller.js +48 -48
  69. package/src/js/modules/logic/sounds.js +96 -96
  70. package/src/js/modules/objects/_info.js +11 -11
  71. package/src/js/modules/objects/baseModel.js +161 -161
  72. package/src/js/modules/objects/cache.js +99 -99
  73. package/src/js/modules/objects/controller.js +121 -115
  74. package/src/js/modules/objects/create.js +230 -246
  75. package/src/js/modules/objects/find.js +140 -140
  76. package/src/js/modules/objects/models/_info.js +24 -25
  77. package/src/js/modules/objects/models/atlasImage.js +50 -50
  78. package/src/js/modules/objects/models/bitmapText.js +23 -23
  79. package/src/js/modules/objects/models/button.js +184 -184
  80. package/src/js/modules/objects/models/buttonComposite.js +35 -35
  81. package/src/js/modules/objects/models/checkbox.js +95 -96
  82. package/src/js/modules/objects/models/collection.js +54 -54
  83. package/src/js/modules/objects/models/component.js +44 -44
  84. package/src/js/modules/objects/models/container.js +19 -19
  85. package/src/js/modules/objects/models/emitter.js +54 -54
  86. package/src/js/modules/objects/models/graphics.js +38 -38
  87. package/src/js/modules/objects/models/group.js +19 -19
  88. package/src/js/modules/objects/models/hitArea.js +104 -104
  89. package/src/js/modules/objects/models/image.js +34 -34
  90. package/src/js/modules/objects/models/imagesAnimation.js +113 -113
  91. package/src/js/modules/objects/models/mask.js +38 -38
  92. package/src/js/modules/objects/models/scrollbox.js +61 -61
  93. package/src/js/modules/objects/models/slider.js +199 -154
  94. package/src/js/modules/objects/models/spine.js +83 -83
  95. package/src/js/modules/objects/models/text.js +38 -38
  96. package/src/js/modules/objects/models/textInput.js +55 -55
  97. package/src/js/modules/objects/models/toggle.js +169 -169
  98. package/src/js/modules/objects/models/world.js +19 -19
  99. package/src/js/modules/objects/propertyAdapter.js +421 -421
  100. package/src/js/modules/objects/proxy.js +179 -179
  101. package/src/js/modules/objects/styles.js +116 -116
  102. package/src/js/modules/observer/_info.js +4 -4
  103. package/src/js/modules/observer/controller.js +99 -99
  104. package/src/js/modules/observer/events.js +33 -32
  105. package/src/js/modules/scenes/_info.js +8 -8
  106. package/src/js/modules/scenes/controller.js +34 -34
  107. package/src/js/modules/scenes/model.js +35 -35
  108. package/src/js/modules/scenes/pixiWrapper.js +194 -194
  109. package/src/js/modules/scenes/resolutions.js +168 -161
  110. package/src/js/modules/scenes/resolutionsConfig.js +73 -73
  111. package/src/js/modules/scenes/service.js +84 -84
  112. package/src/js/modules/soundManager/_info.js +3 -3
  113. package/src/js/modules/soundManager/controller.js +99 -99
  114. package/src/js/modules/soundManager/soundSprite.js +202 -202
  115. package/src/js/modules/statesManager/_info.js +12 -12
  116. package/src/js/modules/statesManager/action.js +55 -55
  117. package/src/js/modules/statesManager/actions/_info.js +3 -3
  118. package/src/js/modules/statesManager/all.js +23 -23
  119. package/src/js/modules/statesManager/configStates.js +71 -71
  120. package/src/js/modules/statesManager/controller.js +131 -132
  121. package/src/js/modules/statesManager/functionsStorage.js +82 -82
  122. package/src/js/modules/statesManager/helper.js +27 -27
  123. package/src/js/modules/statesManager/race.js +75 -75
  124. package/src/js/modules/statesManager/sequence.js +47 -47
  125. package/src/js/modules/template/_info.js +6 -6
  126. package/src/js/modules/template/controller.js +28 -28
  127. package/src/js/modules/template/model.js +11 -11
  128. package/src/js/modules/template/service.js +125 -125
  129. package/src/js/modules/template/types.js +44 -46
  130. package/src/js/modules/transport/_info.js +8 -8
  131. package/src/js/modules/transport/baseConnectionType.js +24 -24
  132. package/src/js/modules/transport/config.js +22 -22
  133. package/src/js/modules/transport/connectionTypes/_info.js +3 -3
  134. package/src/js/modules/transport/connectionTypes/websocket.js +74 -74
  135. package/src/js/modules/transport/connectionTypes/xhr.js +41 -41
  136. package/src/js/modules/transport/controller.js +48 -48
  137. package/src/js/modules/transport/decorator.js +16 -16
  138. package/src/js/modules/transport/service.js +140 -138
  139. package/src/js/templates/_info.js +4 -4
  140. package/src/js/templates/groups/_info.js +1 -1
  141. package/src/js/templates/scenes/_info.js +1 -1
  142. package/webpack.config.js +47 -47
  143. package/src/js/modules/assets/models/dragonBones.js +0 -27
  144. package/src/js/modules/logic/buttons.js +0 -120
  145. package/src/js/modules/logic/config/buttons.js +0 -63
  146. package/src/js/modules/objects/models/dragonBones.js +0 -250
@@ -1,71 +1,71 @@
1
- class ComponentsLoaderTemplate {
2
- constructor() {
3
- this.styles = {
4
- '.loadingTextStyle': {
5
- fill: 0xFFFFFF,
6
- fontSize: 32,
7
- fontWeight: 'bold'
8
- }
9
- };
10
-
11
- this.assets = [];
12
-
13
- this.objects = [
14
- {
15
- type: Urso.types.objects.CONTAINER,
16
- name: 'loaderContainer',
17
- contents: [
18
- {
19
- type: Urso.types.objects.GRAPHICS,
20
- name: 'bgLoader',
21
- figure: {
22
- rectangle: [0, 20, 500, 20],
23
- fillColor: 0x66f542
24
- }
25
- },
26
- {
27
- type: Urso.types.objects.CONTAINER,
28
- contents: [
29
- {
30
- type: Urso.types.objects.GRAPHICS,
31
- figure: {
32
- rectangle: [4, 24, 492, 13],
33
- }
34
- },
35
- {
36
- type: Urso.types.objects.GRAPHICS,
37
- name: 'loaderBg',
38
- figure: {
39
- rectangle: [4, 24, 492, 13],
40
- fillColor: 0x66f542
41
- }
42
- },
43
- {
44
- type: Urso.types.objects.GRAPHICS,
45
- name: 'loaderBgMask',
46
- figure: {
47
- rectangle: [4, 24, 492, 13]
48
- }
49
- },
50
- {
51
- type: Urso.types.objects.CONTAINER,
52
- x: 260,
53
- y: 50,
54
- contents: [
55
- {
56
- type: Urso.types.objects.TEXT,
57
- class: 'loadingTextStyle loadAmountText',
58
- anchorX: 0.5,
59
- text: '100%'
60
- }
61
- ]
62
- }
63
- ]
64
- }
65
- ]
66
- }
67
- ];
68
- };
69
- };
70
-
1
+ class ComponentsLoaderTemplate {
2
+ constructor() {
3
+ this.styles = {
4
+ '.loadingTextStyle': {
5
+ fill: 0xFFFFFF,
6
+ fontSize: 32,
7
+ fontWeight: 'bold'
8
+ }
9
+ };
10
+
11
+ this.assets = [];
12
+
13
+ this.objects = [
14
+ {
15
+ type: Urso.types.objects.CONTAINER,
16
+ name: 'loaderContainer',
17
+ contents: [
18
+ {
19
+ type: Urso.types.objects.GRAPHICS,
20
+ name: 'bgLoader',
21
+ figure: {
22
+ rectangle: [0, 20, 500, 20],
23
+ fillColor: 0x66f542
24
+ }
25
+ },
26
+ {
27
+ type: Urso.types.objects.CONTAINER,
28
+ contents: [
29
+ {
30
+ type: Urso.types.objects.GRAPHICS,
31
+ figure: {
32
+ rectangle: [4, 24, 492, 13],
33
+ }
34
+ },
35
+ {
36
+ type: Urso.types.objects.GRAPHICS,
37
+ name: 'loaderBg',
38
+ figure: {
39
+ rectangle: [4, 24, 492, 13],
40
+ fillColor: 0x66f542
41
+ }
42
+ },
43
+ {
44
+ type: Urso.types.objects.GRAPHICS,
45
+ name: 'loaderBgMask',
46
+ figure: {
47
+ rectangle: [4, 24, 492, 13]
48
+ }
49
+ },
50
+ {
51
+ type: Urso.types.objects.CONTAINER,
52
+ x: 260,
53
+ y: 50,
54
+ contents: [
55
+ {
56
+ type: Urso.types.objects.TEXT,
57
+ class: 'loadingTextStyle loadAmountText',
58
+ anchorX: 0.5,
59
+ text: '100%'
60
+ }
61
+ ]
62
+ }
63
+ ]
64
+ }
65
+ ]
66
+ }
67
+ ];
68
+ };
69
+ };
70
+
71
71
  module.exports = ComponentsLoaderTemplate;
@@ -1,4 +1,4 @@
1
- Urso.Core.Components.SoundInitialPopup = {
2
- Controller: require('./controller.js'),
3
- Template: require('./template.js'),
1
+ Urso.Core.Components.SoundInitialPopup = {
2
+ Controller: require('./controller.js'),
3
+ Template: require('./template.js'),
4
4
  }
@@ -1,43 +1,43 @@
1
- ComponentsBaseController = require('./../base/controller.js');
2
-
3
- class ComponentsSoundInitialPopupController extends ComponentsBaseController {
4
-
5
- constructor() {
6
- super();
7
-
8
- this.yesButton = null;
9
- this.noButton = null;
10
- }
11
-
12
- create() {
13
- this.yesButton = this.common.findOne('^soundInitialPopupButtonYesGraphics');
14
- this.noButton = this.common.findOne('^soundInitialPopupButtonNoGraphics');
15
- }
16
-
17
- _tintHandler({ buttonName, pointerOver }) {
18
- let button = buttonName === 'yes' ? this.yesButton : this.noButton;
19
- button._baseObject.tint = (pointerOver) ? 0xd4be69 : 0xFFFFFF;
20
- }
21
-
22
- _buttonPressHandler({ name }) {
23
- switch (name) {
24
- case 'soundInitialPopupButtonYesHit':
25
- this.emit(Urso.events.MODULES_SOUND_MANAGER_SET_GLOBAL_VOLUME, 1);
26
- break;
27
- case 'soundInitialPopupButtonNoHit':
28
- this.emit(Urso.events.MODULES_SOUND_MANAGER_SET_GLOBAL_VOLUME, 0);
29
- break;
30
- default:
31
- return;
32
- }
33
-
34
- this.common.object.visible = false;
35
- }
36
-
37
- _subscribeOnce() {
38
- this.addListener('components.soundInitialPopup.pointerAction.popupButton', this._tintHandler.bind(this));
39
- this.addListener(Urso.events.MODULES_OBJECTS_HIT_AREA_PRESS, this._buttonPressHandler.bind(this));
40
- }
41
- }
42
-
1
+ ComponentsBaseController = require('./../base/controller.js');
2
+
3
+ class ComponentsSoundInitialPopupController extends ComponentsBaseController {
4
+
5
+ constructor() {
6
+ super();
7
+
8
+ this.yesButton = null;
9
+ this.noButton = null;
10
+ }
11
+
12
+ create() {
13
+ this.yesButton = this.common.findOne('^soundInitialPopupButtonYesGraphics');
14
+ this.noButton = this.common.findOne('^soundInitialPopupButtonNoGraphics');
15
+ }
16
+
17
+ _tintHandler({ buttonName, pointerOver }) {
18
+ let button = buttonName === 'yes' ? this.yesButton : this.noButton;
19
+ button._baseObject.tint = (pointerOver) ? 0xd4be69 : 0xFFFFFF;
20
+ }
21
+
22
+ _buttonPressHandler({ name }) {
23
+ switch (name) {
24
+ case 'soundInitialPopupButtonYesHit':
25
+ this.emit(Urso.events.MODULES_SOUND_MANAGER_SET_GLOBAL_VOLUME, 1);
26
+ break;
27
+ case 'soundInitialPopupButtonNoHit':
28
+ this.emit(Urso.events.MODULES_SOUND_MANAGER_SET_GLOBAL_VOLUME, 0);
29
+ break;
30
+ default:
31
+ return;
32
+ }
33
+
34
+ this.common.object.visible = false;
35
+ }
36
+
37
+ _subscribeOnce() {
38
+ this.addListener('components.soundInitialPopup.pointerAction.popupButton', this._tintHandler.bind(this));
39
+ this.addListener(Urso.events.MODULES_OBJECTS_HIT_AREA_PRESS, this._buttonPressHandler.bind(this));
40
+ }
41
+ }
42
+
43
43
  module.exports = ComponentsSoundInitialPopupController;
@@ -1,110 +1,110 @@
1
- class ComponentsSoundInitialPopupTemplate {
2
- constructor(){
3
-
4
- this.objects = [
5
- {
6
- type: Urso.types.objects.HITAREA,
7
- x: -50,
8
- y: -50,
9
- width: 2000,
10
- height: 1200
11
- },
12
- {
13
- type: Urso.types.objects.GRAPHICS,
14
- figure: {
15
- rectangle: [0, 0, 1920, 1080],
16
- fillColor: 'black'
17
- }
18
- },
19
- {
20
- type: Urso.types.objects.TEXT,
21
- y: -100,
22
- alignX: 'center',
23
- alignY: 'center',
24
- anchorX: 0.5,
25
- anchorY: 0.5,
26
- fill: 'gray',
27
- fontFamilu: 'Helvetica',
28
- fontSize: 72,
29
- fontWeight: 800,
30
- text: 'Enable sound?'
31
- },
32
- {
33
- type: Urso.types.objects.CONTAINER,
34
- x: 600,
35
- y: 650,
36
- with: 200,
37
- height: 70,
38
- contents: [
39
- {
40
- type: Urso.types.objects.GRAPHICS,
41
- name: 'soundInitialPopupButtonYesGraphics',
42
- figure: {
43
- rectangle: [0, 0, 200, 70],
44
- fillColor: 0xd8ac03
45
- }
46
- },
47
- {
48
- type: Urso.types.objects.TEXT,
49
- anchorX: 0.5,
50
- anchorY: 0.5,
51
- x: 100,
52
- alignY: 'center',
53
- fill: 'black',
54
- fontFamilu: 'Helvetica',
55
- fontSize: 40,
56
- fontWeight: 800,
57
- text: 'YES'
58
- },
59
- {
60
- type: Urso.types.objects.HITAREA,
61
- name: 'soundInitialPopupButtonYesHit',
62
- width: 200,
63
- height: 70,
64
- onOverCallback: () => this.emit('components.soundInitialPopup.pointerAction.popupButton', {buttonName: 'yes', pointerOver: true}),
65
- onOutCallback: () => this.emit('components.soundInitialPopup.pointerAction.popupButton', {buttonName: 'yes', pointerOver: false}),
66
- },
67
- ]
68
- },
69
- {
70
- type: Urso.types.objects.CONTAINER,
71
- x: 1150,
72
- y: 650,
73
- with: 200,
74
- height: 70,
75
- contents: [
76
- {
77
- type: Urso.types.objects.GRAPHICS,
78
- name: 'soundInitialPopupButtonNoGraphics',
79
- figure: {
80
- rectangle: [0, 0, 200, 70],
81
- fillColor: 0xd8ac03
82
- }
83
- },
84
- {
85
- type: Urso.types.objects.TEXT,
86
- anchorX: 0.5,
87
- anchorY: 0.5,
88
- x: 100,
89
- alignY: 'center',
90
- fill: 'black',
91
- fontFamilu: 'Helvetica',
92
- fontSize: 40,
93
- fontWeight: 800,
94
- text: 'NO'
95
- },
96
- {
97
- type: Urso.types.objects.HITAREA,
98
- name: 'soundInitialPopupButtonNoHit',
99
- width: 200,
100
- height: 70,
101
- onOverCallback: () => this.emit('components.soundInitialPopup.pointerAction.popupButton', {buttonName: 'no', pointerOver: true}),
102
- onOutCallback: () => this.emit('components.soundInitialPopup.pointerAction.popupButton', {buttonName: 'no', pointerOver: false}),
103
- },
104
- ]
105
- }
106
- ]
107
- }
108
- };
109
-
1
+ class ComponentsSoundInitialPopupTemplate {
2
+ constructor(){
3
+
4
+ this.objects = [
5
+ {
6
+ type: Urso.types.objects.HITAREA,
7
+ x: -50,
8
+ y: -50,
9
+ width: 2000,
10
+ height: 1200
11
+ },
12
+ {
13
+ type: Urso.types.objects.GRAPHICS,
14
+ figure: {
15
+ rectangle: [0, 0, 1920, 1080],
16
+ fillColor: 'black'
17
+ }
18
+ },
19
+ {
20
+ type: Urso.types.objects.TEXT,
21
+ y: -100,
22
+ alignX: 'center',
23
+ alignY: 'center',
24
+ anchorX: 0.5,
25
+ anchorY: 0.5,
26
+ fill: 'gray',
27
+ fontFamilu: 'Helvetica',
28
+ fontSize: 72,
29
+ fontWeight: 800,
30
+ text: 'Enable sound?'
31
+ },
32
+ {
33
+ type: Urso.types.objects.CONTAINER,
34
+ x: 600,
35
+ y: 650,
36
+ with: 200,
37
+ height: 70,
38
+ contents: [
39
+ {
40
+ type: Urso.types.objects.GRAPHICS,
41
+ name: 'soundInitialPopupButtonYesGraphics',
42
+ figure: {
43
+ rectangle: [0, 0, 200, 70],
44
+ fillColor: 0xd8ac03
45
+ }
46
+ },
47
+ {
48
+ type: Urso.types.objects.TEXT,
49
+ anchorX: 0.5,
50
+ anchorY: 0.5,
51
+ x: 100,
52
+ alignY: 'center',
53
+ fill: 'black',
54
+ fontFamilu: 'Helvetica',
55
+ fontSize: 40,
56
+ fontWeight: 800,
57
+ text: 'YES'
58
+ },
59
+ {
60
+ type: Urso.types.objects.HITAREA,
61
+ name: 'soundInitialPopupButtonYesHit',
62
+ width: 200,
63
+ height: 70,
64
+ onOverCallback: () => this.emit('components.soundInitialPopup.pointerAction.popupButton', {buttonName: 'yes', pointerOver: true}),
65
+ onOutCallback: () => this.emit('components.soundInitialPopup.pointerAction.popupButton', {buttonName: 'yes', pointerOver: false}),
66
+ },
67
+ ]
68
+ },
69
+ {
70
+ type: Urso.types.objects.CONTAINER,
71
+ x: 1150,
72
+ y: 650,
73
+ with: 200,
74
+ height: 70,
75
+ contents: [
76
+ {
77
+ type: Urso.types.objects.GRAPHICS,
78
+ name: 'soundInitialPopupButtonNoGraphics',
79
+ figure: {
80
+ rectangle: [0, 0, 200, 70],
81
+ fillColor: 0xd8ac03
82
+ }
83
+ },
84
+ {
85
+ type: Urso.types.objects.TEXT,
86
+ anchorX: 0.5,
87
+ anchorY: 0.5,
88
+ x: 100,
89
+ alignY: 'center',
90
+ fill: 'black',
91
+ fontFamilu: 'Helvetica',
92
+ fontSize: 40,
93
+ fontWeight: 800,
94
+ text: 'NO'
95
+ },
96
+ {
97
+ type: Urso.types.objects.HITAREA,
98
+ name: 'soundInitialPopupButtonNoHit',
99
+ width: 200,
100
+ height: 70,
101
+ onOverCallback: () => this.emit('components.soundInitialPopup.pointerAction.popupButton', {buttonName: 'no', pointerOver: true}),
102
+ onOutCallback: () => this.emit('components.soundInitialPopup.pointerAction.popupButton', {buttonName: 'no', pointerOver: false}),
103
+ },
104
+ ]
105
+ }
106
+ ]
107
+ }
108
+ };
109
+
110
110
  module.exports = ComponentsSoundInitialPopupTemplate;
@@ -1,3 +1,3 @@
1
- Urso.Core.Components.StateDriven = {
2
- Controller: require('./controller.js')
3
- };
1
+ Urso.Core.Components.StateDriven = {
2
+ Controller: require('./controller.js')
3
+ };
@@ -1,96 +1,96 @@
1
- ComponentsBaseController = require('./../base/controller.js');
2
-
3
- class ComponentsStateDrivenController extends ComponentsBaseController {
4
-
5
- //config for the states guards
6
- configStates = {
7
- /*IDLE: {
8
- guard: () => { log(123, 'IDLE guard'); return true; }
9
- }*/
10
- };
11
-
12
- //config for the actions configs. Guard and terminate functions are optional. Run will called when action starts.
13
- //call finish callback in the run handler to immidiately finish this action
14
- //use this.callFinish(actionKey) when its need after run handler called to delayed finish this action
15
- configActions = {
16
- /*startSpin: {
17
- guard: () => { log(123, 'guard'); return true; },
18
- run: (finish) => { log(123, 'run'); finish(); },
19
- terminate: () => { log(123, 'terminate'); }
20
- }*/
21
- };
22
-
23
- //system callbacks storage
24
- _finishCallbacks = {};
25
-
26
-
27
- /**
28
- * caller for delayed finish callback
29
- * @param {String} actionKey
30
- */
31
- callFinish(actionKey) {
32
- if (!this._finishCallbacks.actionKey) {
33
- Urso.logger.error('ComponentsStateDrivenController: no finish for actionKey', actionKey, this);
34
- return;
35
- }
36
-
37
- this._finishCallbacks.actionKey();
38
- delete this._finishCallbacks.actionKey;
39
- }
40
-
41
- _processStates() {
42
- for (const stateKey in this.configStates) {
43
- Urso.statesManager.setStateGuard(stateKey, this.configStates[stateKey].guard.bind(this));
44
- }
45
- }
46
-
47
- _processActions() {
48
- for (const actionKey in this.configActions) {
49
-
50
- //const actionCfg = this.getInstance('ActionConfig', this.configActions[actionKey]);
51
- const actionCfg = this.configActions[actionKey];
52
-
53
- if (actionCfg.run)
54
- Urso.statesManager.addActionRun(actionKey, (finish) => {
55
- this._saveFinish(actionKey, finish);
56
- actionCfg.run(() => this.callFinish(actionKey));
57
- });
58
- else {
59
- Urso.logger.error('ComponentsStateDrivenController: no run function in config', actionKey, this);
60
- continue;
61
- }
62
-
63
- if (actionCfg.terminate)
64
- Urso.statesManager.addActionTerminate(actionKey, actionCfg.terminate.bind(this));
65
-
66
- if (actionCfg.guard)
67
- Urso.statesManager.addActionGuard(actionKey, actionCfg.guard.bind(this));
68
- }
69
- }
70
-
71
- /**
72
- * saver for delayed finish callback
73
- * @param {String} actionKey
74
- * @param {Function} finish
75
- */
76
- _saveFinish(actionKey, finish) {
77
- if (this._finishCallbacks.actionKey)
78
- Urso.logger.error('ComponentsStateDrivenController: actionKey alredy exists', actionKey, finish, this);
79
-
80
- this._finishCallbacks.actionKey = finish;
81
- }
82
-
83
- _subscribeOnce() {
84
- //do not forget use super._subscribeOnce() , if you will use _subscribeOnce in the component
85
- this._processStates();
86
- this._processActions();
87
- }
88
-
89
- //todo
90
- destroy() {
91
- Urso.logger.error('ComponentsStateDrivenController will remove States and Actions by configs');
92
- }
93
-
94
- }
95
-
96
- module.exports = ComponentsStateDrivenController;
1
+ ComponentsBaseController = require('./../base/controller.js');
2
+
3
+ class ComponentsStateDrivenController extends ComponentsBaseController {
4
+
5
+ //config for the states guards
6
+ configStates = {
7
+ /*IDLE: {
8
+ guard: () => { log(123, 'IDLE guard'); return true; }
9
+ }*/
10
+ };
11
+
12
+ //config for the actions configs. Guard and terminate functions are optional. Run will called when action starts.
13
+ //call finish callback in the run handler to immidiately finish this action
14
+ //use this.callFinish(actionKey) when its need after run handler called to delayed finish this action
15
+ configActions = {
16
+ /*startSpin: {
17
+ guard: () => { log(123, 'guard'); return true; },
18
+ run: (finish) => { log(123, 'run'); finish(); },
19
+ terminate: () => { log(123, 'terminate'); }
20
+ }*/
21
+ };
22
+
23
+ //system callbacks storage
24
+ _finishCallbacks = {};
25
+
26
+
27
+ /**
28
+ * caller for delayed finish callback
29
+ * @param {String} actionKey
30
+ */
31
+ callFinish(actionKey) {
32
+ if (!this._finishCallbacks[actionKey]) {
33
+ Urso.logger.error('ComponentsStateDrivenController: no finish for actionKey', actionKey, this);
34
+ return;
35
+ }
36
+
37
+ this._finishCallbacks[actionKey]();
38
+ delete this._finishCallbacks[actionKey];
39
+ }
40
+
41
+ _processStates() {
42
+ for (const stateKey in this.configStates) {
43
+ Urso.statesManager.setStateGuard(stateKey, this.configStates[stateKey].guard.bind(this));
44
+ }
45
+ }
46
+
47
+ _processActions() {
48
+ for (const actionKey in this.configActions) {
49
+
50
+ //const actionCfg = this.getInstance('ActionConfig', this.configActions[actionKey]);
51
+ const actionCfg = this.configActions[actionKey];
52
+
53
+ if (actionCfg.run)
54
+ Urso.statesManager.addActionRun(actionKey, (finish) => {
55
+ this._saveFinish(actionKey, finish);
56
+ actionCfg.run(() => this.callFinish(actionKey));
57
+ });
58
+ else {
59
+ Urso.logger.error('ComponentsStateDrivenController: no run function in config', actionKey, this);
60
+ continue;
61
+ }
62
+
63
+ if (actionCfg.terminate)
64
+ Urso.statesManager.addActionTerminate(actionKey, actionCfg.terminate.bind(this));
65
+
66
+ if (actionCfg.guard)
67
+ Urso.statesManager.addActionGuard(actionKey, actionCfg.guard.bind(this));
68
+ }
69
+ }
70
+
71
+ /**
72
+ * saver for delayed finish callback
73
+ * @param {String} actionKey
74
+ * @param {Function} finish
75
+ */
76
+ _saveFinish(actionKey, finish) {
77
+ if (this._finishCallbacks[actionKey])
78
+ Urso.logger.error('ComponentsStateDrivenController: actionKey alredy exists', actionKey, finish, this);
79
+
80
+ this._finishCallbacks[actionKey] = finish;
81
+ }
82
+
83
+ _subscribeOnce() {
84
+ //do not forget use super._subscribeOnce() , if you will use _subscribeOnce in the component
85
+ this._processStates();
86
+ this._processActions();
87
+ }
88
+
89
+ //todo
90
+ destroy() {
91
+ Urso.logger.error('ComponentsStateDrivenController will remove States and Actions by configs');
92
+ }
93
+
94
+ }
95
+
96
+ module.exports = ComponentsStateDrivenController;