@urso/core 0.8.21 → 0.9.0-dev
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/LICENSE +20 -20
- package/README.md +227 -227
- package/build/js/index.js +77216 -2
- package/package.json +36 -50
- package/src/js/app.js +105 -104
- package/src/js/components/base/controller.js +76 -78
- package/src/js/components/debug/controller.js +39 -39
- package/src/js/components/debug/coords.js +23 -23
- package/src/js/components/debug/fps.js +36 -36
- package/src/js/components/debug/template.js +55 -55
- package/src/js/components/debug/timescale.js +60 -60
- package/src/js/components/deviceRotate/controller.js +95 -95
- package/src/js/components/editor/api.js +127 -127
- package/src/js/components/editor/controller.js +13 -13
- package/src/js/components/fullscreen/android.js +104 -104
- package/src/js/components/fullscreen/controller.js +76 -76
- package/src/js/components/fullscreen/desktop.js +49 -49
- package/src/js/components/fullscreen/ios.js +115 -115
- package/src/js/components/layersSwitcher/config.js +26 -26
- package/src/js/components/layersSwitcher/controller.js +36 -36
- package/src/js/components/loader/controller.js +66 -66
- package/src/js/components/loader/template.js +71 -71
- package/src/js/components/soundInitialPopup/controller.js +43 -43
- package/src/js/components/soundInitialPopup/template.js +110 -110
- package/src/js/components/stateDriven/controller.js +123 -123
- package/src/js/config/load.js +325 -194
- package/src/js/config/main.js +17 -17
- package/src/js/extra/browserEvents.js +57 -57
- package/src/js/extra/main.js +23 -25
- package/src/js/extra/pixiPatch.js +173 -171
- package/src/js/index.js +7 -7
- package/src/js/lib/cache.js +199 -125
- package/src/js/lib/composition.js +85 -85
- package/src/js/lib/device.js +1215 -1215
- package/src/js/lib/helper.js +678 -678
- package/src/js/lib/loader.js +216 -218
- package/src/js/lib/localData.js +29 -29
- package/src/js/lib/logger.js +69 -69
- package/src/js/lib/math.js +161 -161
- package/src/js/lib/objectPool.js +208 -208
- package/src/js/lib/time.js +19 -19
- package/src/js/lib/tween.js +153 -153
- package/src/js/modules/assets/baseModel.js +21 -21
- package/src/js/modules/assets/config.js +38 -38
- package/src/js/modules/assets/controller.js +65 -65
- package/src/js/modules/assets/models/atlas.js +19 -19
- package/src/js/modules/assets/models/audiosprite.js +28 -28
- package/src/js/modules/assets/models/bitmapFont.js +11 -11
- package/src/js/modules/assets/models/container.js +19 -19
- package/src/js/modules/assets/models/font.js +11 -11
- package/src/js/modules/assets/models/html.js +11 -11
- package/src/js/modules/assets/models/image.js +17 -17
- package/src/js/modules/assets/models/json.js +11 -11
- package/src/js/modules/assets/models/jsonAtlas.js +11 -11
- package/src/js/modules/assets/models/sound.js +17 -17
- package/src/js/modules/assets/models/spine.js +18 -17
- package/src/js/modules/assets/models/spineAtlas.js +11 -0
- package/src/js/modules/assets/service.js +564 -553
- package/src/js/modules/i18n/config.js +17 -17
- package/src/js/modules/i18n/controller.js +71 -71
- package/src/js/modules/instances/controller.js +357 -357
- package/src/js/modules/logic/config/sounds.js +23 -23
- package/src/js/modules/logic/controller.js +52 -52
- package/src/js/modules/logic/main.js +8 -8
- package/src/js/modules/logic/sounds.js +103 -103
- package/src/js/modules/objects/baseModel.js +205 -207
- package/src/js/modules/objects/cache.js +99 -99
- package/src/js/modules/objects/config.js +10 -10
- package/src/js/modules/objects/controller.js +139 -139
- package/src/js/modules/objects/find.js +58 -58
- package/src/js/modules/objects/models/bitmapText.js +56 -49
- package/src/js/modules/objects/models/button.js +208 -209
- package/src/js/modules/objects/models/buttonComposite.js +38 -38
- package/src/js/modules/objects/models/checkbox.js +100 -100
- package/src/js/modules/objects/models/collection.js +56 -54
- package/src/js/modules/objects/models/component.js +48 -48
- package/src/js/modules/objects/models/container.js +22 -22
- package/src/js/modules/objects/models/emitterFx.js +103 -114
- package/src/js/modules/objects/models/graphics.js +40 -40
- package/src/js/modules/objects/models/group.js +22 -22
- package/src/js/modules/objects/models/hitArea.js +187 -187
- package/src/js/modules/objects/models/image.js +36 -36
- package/src/js/modules/objects/models/imagesAnimation.js +115 -115
- package/src/js/modules/objects/models/mask.js +40 -40
- package/src/js/modules/objects/models/nineSlicePlane.js +32 -32
- package/src/js/modules/objects/models/slider.js +357 -357
- package/src/js/modules/objects/models/spine.js +354 -339
- package/src/js/modules/objects/models/text.js +70 -70
- package/src/js/modules/objects/models/toggle.js +186 -186
- package/src/js/modules/objects/models/world.js +22 -22
- package/src/js/modules/objects/pool.js +68 -68
- package/src/js/modules/objects/propertyAdapter.js +592 -592
- package/src/js/modules/objects/proxy.js +299 -298
- package/src/js/modules/objects/selector.js +136 -136
- package/src/js/modules/objects/service.js +255 -254
- package/src/js/modules/objects/styles.js +210 -210
- package/src/js/modules/observer/controller.js +168 -168
- package/src/js/modules/observer/events.js +51 -56
- package/src/js/modules/scenes/controller.js +126 -127
- package/src/js/modules/scenes/model.js +28 -28
- package/src/js/modules/scenes/pixiWrapper.js +359 -351
- package/src/js/modules/scenes/resolutions.js +173 -173
- package/src/js/modules/scenes/resolutionsConfig.js +73 -73
- package/src/js/modules/scenes/service.js +144 -146
- package/src/js/modules/soundManager/controller.js +103 -103
- package/src/js/modules/soundManager/soundSprite.js +314 -314
- package/src/js/modules/statesManager/action.js +97 -97
- package/src/js/modules/statesManager/all.js +23 -23
- package/src/js/modules/statesManager/configStates.js +77 -77
- package/src/js/modules/statesManager/controller.js +219 -219
- package/src/js/modules/statesManager/functionsStorage.js +83 -83
- package/src/js/modules/statesManager/helper.js +27 -27
- package/src/js/modules/statesManager/race.js +91 -91
- package/src/js/modules/statesManager/sequence.js +48 -48
- package/src/js/modules/template/controller.js +28 -28
- package/src/js/modules/template/model.js +11 -11
- package/src/js/modules/template/service.js +137 -137
- package/src/js/modules/template/types.js +50 -49
- package/src/js/modules/transport/baseConnectionType.js +25 -25
- package/src/js/modules/transport/config.js +13 -13
- package/src/js/modules/transport/connectionTypes/websocket.js +77 -77
- package/src/js/modules/transport/connectionTypes/xhr.js +47 -47
- package/src/js/modules/transport/controller.js +48 -48
- package/src/js/modules/transport/decorator.js +17 -17
- package/src/js/modules/transport/service.js +150 -150
- package/vite.config.js +31 -0
- package/.babelrc +0 -12
- package/build/js/index.js.LICENSE.txt +0 -227
- package/src/js/modules/objects/models/atlasImage.js +0 -52
- package/src/js/modules/objects/models/dragContainer.js +0 -665
- package/src/js/modules/objects/models/emitter.js +0 -69
- package/src/js/modules/objects/models/scrollbox.js +0 -67
- package/src/js/modules/objects/models/textInput.js +0 -68
- package/webpack.config.js +0 -47
|
@@ -1,219 +1,219 @@
|
|
|
1
|
-
class ModulesStatesManagerController {
|
|
2
|
-
|
|
3
|
-
constructor() {
|
|
4
|
-
this.singleton = true;
|
|
5
|
-
|
|
6
|
-
this._configStates;
|
|
7
|
-
this._currentState;
|
|
8
|
-
this._currentAction;
|
|
9
|
-
this._forceNextStateKey = null;
|
|
10
|
-
this._started = false;
|
|
11
|
-
this._paused = false;
|
|
12
|
-
this._pauseNeedResume = false;
|
|
13
|
-
|
|
14
|
-
this.statesGuards = this.getInstance('FunctionsStorage');
|
|
15
|
-
this.actionsGuards = this.getInstance('FunctionsStorage');
|
|
16
|
-
this.actionsRuns = this.getInstance('FunctionsStorage');
|
|
17
|
-
this.actionsTerminations = this.getInstance('FunctionsStorage');
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
this._iterator; //will be defined after start
|
|
21
|
-
this._nextState = this._nextState.bind(this);
|
|
22
|
-
this._statesCallStatistic = {};
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
start() {
|
|
26
|
-
if (this._started)
|
|
27
|
-
return;
|
|
28
|
-
|
|
29
|
-
this._currentState = null;
|
|
30
|
-
this._iterator = this._iteratorConstructor();
|
|
31
|
-
this._started = true;
|
|
32
|
-
this._configStates = this.getInstance('ConfigStates').get();
|
|
33
|
-
this._nextState();
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
restart() {
|
|
37
|
-
this.stop();
|
|
38
|
-
|
|
39
|
-
this._started = false;
|
|
40
|
-
this._paused = false;
|
|
41
|
-
|
|
42
|
-
this.start();
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
stop() {
|
|
46
|
-
this._currentAction && this._currentAction.forceDestroy();
|
|
47
|
-
this._currentAction = null;
|
|
48
|
-
this.emit(Urso.events.MODULES_STATES_MANAGER_STOP);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
pause() {
|
|
52
|
-
this._paused = true;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
resume() {
|
|
56
|
-
this._paused = false;
|
|
57
|
-
|
|
58
|
-
if (this._pauseNeedResume) {
|
|
59
|
-
this._pauseNeedResume = false;
|
|
60
|
-
this._nextState();
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
setForceNextState(stateKey) {
|
|
65
|
-
if (!this._configStates[stateKey]) {
|
|
66
|
-
Urso.logger.error('ModulesStatesManagerController: setForceNextState name error', stateKey);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
this._forceNextStateKey = stateKey
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
_iteratorConstructor() {
|
|
73
|
-
let nextIndex = 0;
|
|
74
|
-
|
|
75
|
-
const getNextStateByOrder = () => {
|
|
76
|
-
let statesArray = Object.keys(this._configStates);
|
|
77
|
-
|
|
78
|
-
if (nextIndex === statesArray.length)
|
|
79
|
-
nextIndex = 0;
|
|
80
|
-
|
|
81
|
-
return statesArray[nextIndex++];
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
return {
|
|
85
|
-
next: (() => {
|
|
86
|
-
let statesArray = Object.keys(this._configStates);
|
|
87
|
-
|
|
88
|
-
//force next state
|
|
89
|
-
if (this._forceNextStateKey) {
|
|
90
|
-
const forceNextStateKey = this._forceNextStateKey;
|
|
91
|
-
this._forceNextStateKey = null;
|
|
92
|
-
nextIndex = statesArray.indexOf(forceNextStateKey) + 1;
|
|
93
|
-
return forceNextStateKey;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
//nextState
|
|
97
|
-
if (this._currentState) {
|
|
98
|
-
const currentState = this._configStates[this._currentState];
|
|
99
|
-
|
|
100
|
-
if (currentState.nextState) { //nextState: ["PICK_GAME2", "PICK_GAME1", "IDLE"]
|
|
101
|
-
for (const stateKey of currentState.nextState) {
|
|
102
|
-
if (this.checkStateGuard(stateKey)) {
|
|
103
|
-
nextIndex = statesArray.indexOf(stateKey) + 1;
|
|
104
|
-
|
|
105
|
-
if (nextIndex === -1) {
|
|
106
|
-
Urso.logger.error('ModulesStatesManagerController: nextState name error', stateKey);
|
|
107
|
-
continue;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return stateKey;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
//go next state by order
|
|
117
|
-
let stateName;
|
|
118
|
-
|
|
119
|
-
do {
|
|
120
|
-
stateName = getNextStateByOrder();
|
|
121
|
-
} while (!this.checkStateGuard(stateName));
|
|
122
|
-
|
|
123
|
-
return stateName;
|
|
124
|
-
}).bind(this)
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
_nextState() {
|
|
129
|
-
if (this._paused) {
|
|
130
|
-
this._pauseNeedResume = true;
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
this._currentState = this._iterator.next();
|
|
135
|
-
|
|
136
|
-
//fill states call statistic
|
|
137
|
-
if (!this._statesCallStatistic[this._currentState]) this._statesCallStatistic[this._currentState] = 0;
|
|
138
|
-
this._statesCallStatistic[this._currentState]++;
|
|
139
|
-
|
|
140
|
-
this.emit(Urso.events.MODULES_STATES_MANAGER_STATE_CHANGE, this._currentState);
|
|
141
|
-
|
|
142
|
-
log('%c State ' + this._currentState, 'background: #bada55; color: #000')
|
|
143
|
-
|
|
144
|
-
let config = this._configStates[this._currentState];
|
|
145
|
-
let classInstance = this.getInstance('Helper').getActionByConfig(config);
|
|
146
|
-
|
|
147
|
-
//actions instances guard
|
|
148
|
-
if (!classInstance.guard())
|
|
149
|
-
return this._nextState();
|
|
150
|
-
|
|
151
|
-
this._currentAction = classInstance;
|
|
152
|
-
classInstance.run(this._nextState);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
//actions guards
|
|
156
|
-
addActionGuard = (key, guard) => {
|
|
157
|
-
this.actionsGuards.add(key, guard, true);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
checkActionGuard = (key) => {
|
|
161
|
-
return this.actionsGuards.checkGuard(key);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
removeActionGuard = (key, guard) => {
|
|
165
|
-
this.actionsGuards.remove(key, guard);
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
//actions runs
|
|
169
|
-
addActionRun = (key, runFunction) => {
|
|
170
|
-
this.actionsRuns.add(key, runFunction);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
runAction = (key, onFinishCallback) => {
|
|
174
|
-
this.actionsRuns.runAndCallbackOnFinish(key, onFinishCallback);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
removeActionRun = (key, runFunction) => {
|
|
178
|
-
this.actionsRuns.remove(key, runFunction);
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
//actions terminations
|
|
182
|
-
addActionTerminate = (key, terminateFunction) => {
|
|
183
|
-
this.actionsTerminations.add(key, terminateFunction);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
terminateAction = (key) => {
|
|
187
|
-
this.actionsTerminations.run(key);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
removeActionTerminate = (key, terminateFunction) => {
|
|
191
|
-
this.actionsTerminations.remove(key, terminateFunction);
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
//states guards
|
|
195
|
-
setStateGuard = (key, guard) => {
|
|
196
|
-
this.statesGuards.add(key, guard, true);
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
checkStateGuard = (key) => {
|
|
200
|
-
//auto guard will check callLimit and return false, if limit is reached
|
|
201
|
-
const callLimit = this._configStates[key].callLimit;
|
|
202
|
-
|
|
203
|
-
if (
|
|
204
|
-
callLimit &&
|
|
205
|
-
callLimit <= (this._statesCallStatistic[key] || 0)
|
|
206
|
-
) { return false; }
|
|
207
|
-
|
|
208
|
-
const guardResult = this.statesGuards.checkGuard(key);
|
|
209
|
-
log('%c State guard ' + key + ' is ' + guardResult, 'background: #DA55C4; color: #000')
|
|
210
|
-
return guardResult;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
removeStateGuard = (key, guard) => {
|
|
214
|
-
this.statesGuards.remove(key, guard);
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
|
|
1
|
+
class ModulesStatesManagerController {
|
|
2
|
+
|
|
3
|
+
constructor() {
|
|
4
|
+
this.singleton = true;
|
|
5
|
+
|
|
6
|
+
this._configStates;
|
|
7
|
+
this._currentState;
|
|
8
|
+
this._currentAction;
|
|
9
|
+
this._forceNextStateKey = null;
|
|
10
|
+
this._started = false;
|
|
11
|
+
this._paused = false;
|
|
12
|
+
this._pauseNeedResume = false;
|
|
13
|
+
|
|
14
|
+
this.statesGuards = this.getInstance('FunctionsStorage');
|
|
15
|
+
this.actionsGuards = this.getInstance('FunctionsStorage');
|
|
16
|
+
this.actionsRuns = this.getInstance('FunctionsStorage');
|
|
17
|
+
this.actionsTerminations = this.getInstance('FunctionsStorage');
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
this._iterator; //will be defined after start
|
|
21
|
+
this._nextState = this._nextState.bind(this);
|
|
22
|
+
this._statesCallStatistic = {};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
start() {
|
|
26
|
+
if (this._started)
|
|
27
|
+
return;
|
|
28
|
+
|
|
29
|
+
this._currentState = null;
|
|
30
|
+
this._iterator = this._iteratorConstructor();
|
|
31
|
+
this._started = true;
|
|
32
|
+
this._configStates = this.getInstance('ConfigStates').get();
|
|
33
|
+
this._nextState();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
restart() {
|
|
37
|
+
this.stop();
|
|
38
|
+
|
|
39
|
+
this._started = false;
|
|
40
|
+
this._paused = false;
|
|
41
|
+
|
|
42
|
+
this.start();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
stop() {
|
|
46
|
+
this._currentAction && this._currentAction.forceDestroy();
|
|
47
|
+
this._currentAction = null;
|
|
48
|
+
this.emit(Urso.events.MODULES_STATES_MANAGER_STOP);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
pause() {
|
|
52
|
+
this._paused = true;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
resume() {
|
|
56
|
+
this._paused = false;
|
|
57
|
+
|
|
58
|
+
if (this._pauseNeedResume) {
|
|
59
|
+
this._pauseNeedResume = false;
|
|
60
|
+
this._nextState();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
setForceNextState(stateKey) {
|
|
65
|
+
if (!this._configStates[stateKey]) {
|
|
66
|
+
Urso.logger.error('ModulesStatesManagerController: setForceNextState name error', stateKey);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
this._forceNextStateKey = stateKey
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
_iteratorConstructor() {
|
|
73
|
+
let nextIndex = 0;
|
|
74
|
+
|
|
75
|
+
const getNextStateByOrder = () => {
|
|
76
|
+
let statesArray = Object.keys(this._configStates);
|
|
77
|
+
|
|
78
|
+
if (nextIndex === statesArray.length)
|
|
79
|
+
nextIndex = 0;
|
|
80
|
+
|
|
81
|
+
return statesArray[nextIndex++];
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return {
|
|
85
|
+
next: (() => {
|
|
86
|
+
let statesArray = Object.keys(this._configStates);
|
|
87
|
+
|
|
88
|
+
//force next state
|
|
89
|
+
if (this._forceNextStateKey) {
|
|
90
|
+
const forceNextStateKey = this._forceNextStateKey;
|
|
91
|
+
this._forceNextStateKey = null;
|
|
92
|
+
nextIndex = statesArray.indexOf(forceNextStateKey) + 1;
|
|
93
|
+
return forceNextStateKey;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
//nextState
|
|
97
|
+
if (this._currentState) {
|
|
98
|
+
const currentState = this._configStates[this._currentState];
|
|
99
|
+
|
|
100
|
+
if (currentState.nextState) { //nextState: ["PICK_GAME2", "PICK_GAME1", "IDLE"]
|
|
101
|
+
for (const stateKey of currentState.nextState) {
|
|
102
|
+
if (this.checkStateGuard(stateKey)) {
|
|
103
|
+
nextIndex = statesArray.indexOf(stateKey) + 1;
|
|
104
|
+
|
|
105
|
+
if (nextIndex === -1) {
|
|
106
|
+
Urso.logger.error('ModulesStatesManagerController: nextState name error', stateKey);
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return stateKey;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
//go next state by order
|
|
117
|
+
let stateName;
|
|
118
|
+
|
|
119
|
+
do {
|
|
120
|
+
stateName = getNextStateByOrder();
|
|
121
|
+
} while (!this.checkStateGuard(stateName));
|
|
122
|
+
|
|
123
|
+
return stateName;
|
|
124
|
+
}).bind(this)
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
_nextState() {
|
|
129
|
+
if (this._paused) {
|
|
130
|
+
this._pauseNeedResume = true;
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
this._currentState = this._iterator.next();
|
|
135
|
+
|
|
136
|
+
//fill states call statistic
|
|
137
|
+
if (!this._statesCallStatistic[this._currentState]) this._statesCallStatistic[this._currentState] = 0;
|
|
138
|
+
this._statesCallStatistic[this._currentState]++;
|
|
139
|
+
|
|
140
|
+
this.emit(Urso.events.MODULES_STATES_MANAGER_STATE_CHANGE, this._currentState);
|
|
141
|
+
|
|
142
|
+
log('%c State ' + this._currentState, 'background: #bada55; color: #000')
|
|
143
|
+
|
|
144
|
+
let config = this._configStates[this._currentState];
|
|
145
|
+
let classInstance = this.getInstance('Helper').getActionByConfig(config);
|
|
146
|
+
|
|
147
|
+
//actions instances guard
|
|
148
|
+
if (!classInstance.guard())
|
|
149
|
+
return this._nextState();
|
|
150
|
+
|
|
151
|
+
this._currentAction = classInstance;
|
|
152
|
+
classInstance.run(this._nextState);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
//actions guards
|
|
156
|
+
addActionGuard = (key, guard) => {
|
|
157
|
+
this.actionsGuards.add(key, guard, true);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
checkActionGuard = (key) => {
|
|
161
|
+
return this.actionsGuards.checkGuard(key);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
removeActionGuard = (key, guard) => {
|
|
165
|
+
this.actionsGuards.remove(key, guard);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
//actions runs
|
|
169
|
+
addActionRun = (key, runFunction) => {
|
|
170
|
+
this.actionsRuns.add(key, runFunction);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
runAction = (key, onFinishCallback) => {
|
|
174
|
+
this.actionsRuns.runAndCallbackOnFinish(key, onFinishCallback);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
removeActionRun = (key, runFunction) => {
|
|
178
|
+
this.actionsRuns.remove(key, runFunction);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
//actions terminations
|
|
182
|
+
addActionTerminate = (key, terminateFunction) => {
|
|
183
|
+
this.actionsTerminations.add(key, terminateFunction);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
terminateAction = (key) => {
|
|
187
|
+
this.actionsTerminations.run(key);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
removeActionTerminate = (key, terminateFunction) => {
|
|
191
|
+
this.actionsTerminations.remove(key, terminateFunction);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
//states guards
|
|
195
|
+
setStateGuard = (key, guard) => {
|
|
196
|
+
this.statesGuards.add(key, guard, true);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
checkStateGuard = (key) => {
|
|
200
|
+
//auto guard will check callLimit and return false, if limit is reached
|
|
201
|
+
const callLimit = this._configStates[key].callLimit;
|
|
202
|
+
|
|
203
|
+
if (
|
|
204
|
+
callLimit &&
|
|
205
|
+
callLimit <= (this._statesCallStatistic[key] || 0)
|
|
206
|
+
) { return false; }
|
|
207
|
+
|
|
208
|
+
const guardResult = this.statesGuards.checkGuard(key);
|
|
209
|
+
log('%c State guard ' + key + ' is ' + guardResult, 'background: #DA55C4; color: #000')
|
|
210
|
+
return guardResult;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
removeStateGuard = (key, guard) => {
|
|
214
|
+
this.statesGuards.remove(key, guard);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
export default ModulesStatesManagerController;
|
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
|
|
2
|
-
class ModulesStatesManagerFunctionsStorage {
|
|
3
|
-
constructor() {
|
|
4
|
-
this._functionsCounter = 0;
|
|
5
|
-
this._functions = {};
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
//guards
|
|
9
|
-
add(key, guard, onlyOneFlag = false) {
|
|
10
|
-
this._addToStorage(key, guard, onlyOneFlag);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
run(key) {
|
|
14
|
-
if (this._functions[key]) {
|
|
15
|
-
const functionsArray = Object.values(this._functions[key]);
|
|
16
|
-
|
|
17
|
-
for (const func of functionsArray) {
|
|
18
|
-
func();
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
runAndCallbackOnFinish(key, onFinishCallback) {
|
|
24
|
-
if (this._functions[key]) {
|
|
25
|
-
const functionsArray = Object.values(this._functions[key]);
|
|
26
|
-
|
|
27
|
-
const promises = [];
|
|
28
|
-
|
|
29
|
-
for (const func of functionsArray) {
|
|
30
|
-
promises.push(new Promise((resolve, reject) => { func(resolve); }));
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
Promise.all(promises).then(onFinishCallback);
|
|
34
|
-
} else {
|
|
35
|
-
onFinishCallback();
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
checkGuard(key) {
|
|
40
|
-
if (this._functions[key]) {
|
|
41
|
-
const guardsArray = Object.values(this._functions[key]);
|
|
42
|
-
|
|
43
|
-
for (const guard of guardsArray) {
|
|
44
|
-
if (!guard())
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return true;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
remove(key, guard) {
|
|
53
|
-
this._removeFromStorage(key, guard);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
_addToStorage(key, func, onlyOneFlag) {
|
|
57
|
-
if (!this._functions[key])
|
|
58
|
-
this._functions[key] = {};
|
|
59
|
-
else if (onlyOneFlag) {
|
|
60
|
-
Urso.logger.error('ModulesStatesManagerFunctionsStorage: action or state can have only one guard', key, func);
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
const guid = this._getGuardsUid();
|
|
65
|
-
func._guid = guid;
|
|
66
|
-
this._functions[key][guid] = func;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
_removeFromStorage(key, func) {
|
|
70
|
-
const guid = func._guid;
|
|
71
|
-
delete this._functions[key][guid];
|
|
72
|
-
|
|
73
|
-
if (Urso.helper.getObjectSize(this._functions[key]) === 0)
|
|
74
|
-
delete this._functions[key];
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
_getGuardsUid() {
|
|
78
|
-
this._functionsCounter++;
|
|
79
|
-
return 'guard_' + this._functionsCounter;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
|
|
1
|
+
|
|
2
|
+
class ModulesStatesManagerFunctionsStorage {
|
|
3
|
+
constructor() {
|
|
4
|
+
this._functionsCounter = 0;
|
|
5
|
+
this._functions = {};
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
//guards
|
|
9
|
+
add(key, guard, onlyOneFlag = false) {
|
|
10
|
+
this._addToStorage(key, guard, onlyOneFlag);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
run(key) {
|
|
14
|
+
if (this._functions[key]) {
|
|
15
|
+
const functionsArray = Object.values(this._functions[key]);
|
|
16
|
+
|
|
17
|
+
for (const func of functionsArray) {
|
|
18
|
+
func();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
runAndCallbackOnFinish(key, onFinishCallback) {
|
|
24
|
+
if (this._functions[key]) {
|
|
25
|
+
const functionsArray = Object.values(this._functions[key]);
|
|
26
|
+
|
|
27
|
+
const promises = [];
|
|
28
|
+
|
|
29
|
+
for (const func of functionsArray) {
|
|
30
|
+
promises.push(new Promise((resolve, reject) => { func(resolve); }));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
Promise.all(promises).then(onFinishCallback);
|
|
34
|
+
} else {
|
|
35
|
+
onFinishCallback();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
checkGuard(key) {
|
|
40
|
+
if (this._functions[key]) {
|
|
41
|
+
const guardsArray = Object.values(this._functions[key]);
|
|
42
|
+
|
|
43
|
+
for (const guard of guardsArray) {
|
|
44
|
+
if (!guard())
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
remove(key, guard) {
|
|
53
|
+
this._removeFromStorage(key, guard);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
_addToStorage(key, func, onlyOneFlag) {
|
|
57
|
+
if (!this._functions[key])
|
|
58
|
+
this._functions[key] = {};
|
|
59
|
+
else if (onlyOneFlag) {
|
|
60
|
+
Urso.logger.error('ModulesStatesManagerFunctionsStorage: action or state can have only one guard', key, func);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const guid = this._getGuardsUid();
|
|
65
|
+
func._guid = guid;
|
|
66
|
+
this._functions[key][guid] = func;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
_removeFromStorage(key, func) {
|
|
70
|
+
const guid = func._guid;
|
|
71
|
+
delete this._functions[key][guid];
|
|
72
|
+
|
|
73
|
+
if (Urso.helper.getObjectSize(this._functions[key]) === 0)
|
|
74
|
+
delete this._functions[key];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
_getGuardsUid() {
|
|
78
|
+
this._functionsCounter++;
|
|
79
|
+
return 'guard_' + this._functionsCounter;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export default ModulesStatesManagerFunctionsStorage;
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
class ModulesStatesManagerHelper {
|
|
2
|
-
constructor() {
|
|
3
|
-
this.singleton = true;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
getActionByConfig(config) {
|
|
7
|
-
let actionType = Object.keys(config)[0];
|
|
8
|
-
let actionParams = config[actionType];
|
|
9
|
-
|
|
10
|
-
if (actionType === "action") {
|
|
11
|
-
//actionParams is action name
|
|
12
|
-
let actionName = actionParams;
|
|
13
|
-
|
|
14
|
-
let customActionInstance = this.getInstance('Actions.' + Urso.helper.capitaliseFirstLetter(actionName));
|
|
15
|
-
|
|
16
|
-
if (customActionInstance) {
|
|
17
|
-
return customActionInstance;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
let className = Urso.helper.capitaliseFirstLetter(actionType);
|
|
22
|
-
return this.getInstance(className, actionParams);
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
1
|
+
class ModulesStatesManagerHelper {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.singleton = true;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
getActionByConfig(config) {
|
|
7
|
+
let actionType = Object.keys(config)[0];
|
|
8
|
+
let actionParams = config[actionType];
|
|
9
|
+
|
|
10
|
+
if (actionType === "action") {
|
|
11
|
+
//actionParams is action name
|
|
12
|
+
let actionName = actionParams;
|
|
13
|
+
|
|
14
|
+
let customActionInstance = this.getInstance('Actions.' + Urso.helper.capitaliseFirstLetter(actionName));
|
|
15
|
+
|
|
16
|
+
if (customActionInstance) {
|
|
17
|
+
return customActionInstance;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
let className = Urso.helper.capitaliseFirstLetter(actionType);
|
|
22
|
+
return this.getInstance(className, actionParams);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export default ModulesStatesManagerHelper;
|