@urso/core 0.2.3-dev → 0.2.7

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 (147) 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 +41 -39
  5. package/package.json +52 -49
  6. package/src/js/app.js +76 -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 -4
  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 +9 -9
  32. package/src/js/extra/_info.js +23 -22
  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 +524 -513
  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 +37 -37
  52. package/src/js/modules/assets/models/_info.js +12 -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/dragonBones.js +26 -26
  58. package/src/js/modules/assets/models/font.js +8 -8
  59. package/src/js/modules/assets/models/image.js +14 -14
  60. package/src/js/modules/assets/models/json.js +8 -8
  61. package/src/js/modules/assets/models/sound.js +14 -14
  62. package/src/js/modules/assets/models/spine.js +8 -8
  63. package/src/js/modules/assets/service.js +330 -330
  64. package/src/js/modules/instances/_info.js +3 -3
  65. package/src/js/modules/instances/controller.js +218 -218
  66. package/src/js/modules/logic/_info.js +5 -5
  67. package/src/js/modules/logic/buttons.js +120 -120
  68. package/src/js/modules/logic/config/_info.js +3 -3
  69. package/src/js/modules/logic/config/buttons.js +63 -63
  70. package/src/js/modules/logic/config/sounds.js +23 -23
  71. package/src/js/modules/logic/controller.js +48 -48
  72. package/src/js/modules/logic/sounds.js +96 -96
  73. package/src/js/modules/objects/_info.js +11 -11
  74. package/src/js/modules/objects/baseModel.js +161 -161
  75. package/src/js/modules/objects/cache.js +99 -99
  76. package/src/js/modules/objects/controller.js +115 -115
  77. package/src/js/modules/objects/create.js +246 -231
  78. package/src/js/modules/objects/find.js +140 -140
  79. package/src/js/modules/objects/models/_info.js +25 -20
  80. package/src/js/modules/objects/models/atlasImage.js +50 -50
  81. package/src/js/modules/objects/models/bitmapText.js +23 -23
  82. package/src/js/modules/objects/models/button.js +184 -184
  83. package/src/js/modules/objects/models/buttonComposite.js +35 -35
  84. package/src/js/modules/objects/models/checkbox.js +95 -0
  85. package/src/js/modules/objects/models/collection.js +54 -54
  86. package/src/js/modules/objects/models/component.js +44 -44
  87. package/src/js/modules/objects/models/container.js +19 -19
  88. package/src/js/modules/objects/models/dragonBones.js +250 -250
  89. package/src/js/modules/objects/models/emitter.js +54 -54
  90. package/src/js/modules/objects/models/graphics.js +38 -38
  91. package/src/js/modules/objects/models/group.js +19 -19
  92. package/src/js/modules/objects/models/hitArea.js +104 -104
  93. package/src/js/modules/objects/models/image.js +34 -34
  94. package/src/js/modules/objects/models/imagesAnimation.js +113 -113
  95. package/src/js/modules/objects/models/mask.js +38 -38
  96. package/src/js/modules/objects/models/scrollbox.js +62 -0
  97. package/src/js/modules/objects/models/slider.js +199 -0
  98. package/src/js/modules/objects/models/spine.js +83 -83
  99. package/src/js/modules/objects/models/text.js +38 -38
  100. package/src/js/modules/objects/models/textInput.js +55 -0
  101. package/src/js/modules/objects/models/toggle.js +169 -0
  102. package/src/js/modules/objects/models/world.js +19 -19
  103. package/src/js/modules/objects/propertyAdapter.js +421 -416
  104. package/src/js/modules/objects/proxy.js +179 -179
  105. package/src/js/modules/objects/styles.js +116 -116
  106. package/src/js/modules/observer/_info.js +4 -4
  107. package/src/js/modules/observer/controller.js +99 -99
  108. package/src/js/modules/observer/events.js +32 -28
  109. package/src/js/modules/scenes/_info.js +8 -8
  110. package/src/js/modules/scenes/controller.js +34 -34
  111. package/src/js/modules/scenes/model.js +35 -35
  112. package/src/js/modules/scenes/pixiWrapper.js +194 -194
  113. package/src/js/modules/scenes/resolutions.js +161 -161
  114. package/src/js/modules/scenes/resolutionsConfig.js +73 -73
  115. package/src/js/modules/scenes/service.js +84 -84
  116. package/src/js/modules/soundManager/_info.js +3 -3
  117. package/src/js/modules/soundManager/controller.js +99 -99
  118. package/src/js/modules/soundManager/soundSprite.js +202 -202
  119. package/src/js/modules/statesManager/_info.js +12 -12
  120. package/src/js/modules/statesManager/action.js +55 -55
  121. package/src/js/modules/statesManager/actions/_info.js +3 -3
  122. package/src/js/modules/statesManager/all.js +23 -23
  123. package/src/js/modules/statesManager/configStates.js +71 -71
  124. package/src/js/modules/statesManager/controller.js +132 -132
  125. package/src/js/modules/statesManager/functionsStorage.js +82 -82
  126. package/src/js/modules/statesManager/helper.js +27 -27
  127. package/src/js/modules/statesManager/race.js +75 -75
  128. package/src/js/modules/statesManager/sequence.js +47 -47
  129. package/src/js/modules/template/_info.js +6 -6
  130. package/src/js/modules/template/controller.js +28 -28
  131. package/src/js/modules/template/model.js +11 -11
  132. package/src/js/modules/template/service.js +125 -125
  133. package/src/js/modules/template/types.js +46 -41
  134. package/src/js/modules/transport/_info.js +8 -8
  135. package/src/js/modules/transport/baseConnectionType.js +24 -24
  136. package/src/js/modules/transport/config.js +22 -22
  137. package/src/js/modules/transport/connectionTypes/_info.js +3 -3
  138. package/src/js/modules/transport/connectionTypes/websocket.js +74 -74
  139. package/src/js/modules/transport/connectionTypes/xhr.js +41 -41
  140. package/src/js/modules/transport/controller.js +48 -48
  141. package/src/js/modules/transport/decorator.js +16 -16
  142. package/src/js/modules/transport/service.js +138 -138
  143. package/src/js/templates/_info.js +4 -4
  144. package/src/js/templates/groups/_info.js +1 -1
  145. package/src/js/templates/scenes/_info.js +1 -1
  146. package/webpack.config.js +47 -47
  147. package/src/js/components/stateDriven/actionConfig.js +0 -7
@@ -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,4 +1,3 @@
1
- Urso.Core.Components.StateDriven = {
2
- ActionConfig: require('./actionConfig.js'),
3
- Controller: require('./controller.js')
4
- };
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 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;