@@ -15,120 +15,144 @@ export const tutorialMachine = Machine<
1515 {
1616 id : 'tutorial' ,
1717 context : initialContext ,
18- initial : 'initial ' ,
18+ initial : 'Start ' ,
1919 states : {
20- initial : {
21- onEntry : 'start' ,
22- on : {
23- CONTINUE : 'continue' ,
24- NEW : 'new' ,
25- } ,
26- } ,
27- new : {
28- on : {
29- TUTORIAL_START : 'loading' ,
30- } ,
31- } ,
32- continue : {
33- on : {
34- TUTORIAL_START : 'loading' ,
35- } ,
36- } ,
37- loading : {
38- on : {
39- TUTORIAL_LOADED : [
40- {
41- target : 'summary' ,
42- cond : 'hasNoProgress' ,
43- } ,
44- {
45- target : 'level' ,
46- cond : 'hasNoLevelProgress' ,
47- } ,
48- {
49- target : 'stage' ,
50- } ,
51- ] ,
52- } ,
53- } ,
54- summary : {
55- on : {
56- NEXT : 'level' ,
57- } ,
58- } ,
59- level : {
60- onEntry : [ 'loadLevel' ] ,
61- on : {
62- NEXT : 'stage' ,
63- BACK : 'summary' ,
64- } ,
65- } ,
66- stage : {
67- onEntry : [ 'loadStage' ] ,
68- initial : 'stageNormal' ,
20+ Start : {
6921 states : {
70- stageNormal : {
22+ Initial : {
23+ onEntry : 'start' ,
7124 on : {
72- TEST_RUN : 'testRunning' ,
73- STEP_SOLUTION_LOAD : {
74- actions : [ 'callSolution' ] ,
75- } ,
25+ CONTINUE : 'ContinueTutorial' ,
26+ NEW : 'NewTutorial' ,
7627 } ,
7728 } ,
78- testRunning : {
79- on : {
80- TEST_SUCCESS : [
81- {
82- target : 'complete' ,
83- cond : 'tasksComplete ' ,
29+ NewTutorial : {
30+ initial : 'SelectTutorial' ,
31+ states : {
32+ SelectTutorial : {
33+ on : {
34+ TUTORIAL_START : 'InitializeTutorial ' ,
8435 } ,
85- {
86- target : 'testPass' ,
87- } ,
88- ] ,
89- TEST_FAILURE : 'testFail' ,
90- } ,
36+ } ,
37+ InitializeTutorial : {
38+ on : {
39+ TUTORIAL_LOADED : 'Tutorial'
40+ }
41+ } ,
42+ }
43+
44+ } ,
45+ ContinueTutorial : {
46+ onEntry : 'loadTutorial' ,
47+ on : {
48+ TUTORIAL_START : {
49+ target : 'Tutorial' ,
50+ }
51+ }
9152 } ,
92- testPass : {
93- onEntry : [ 'stepComplete' ] ,
53+ }
54+ } ,
55+ Tutorial : {
56+ initial : 'Initialize' ,
57+ states : {
58+ Initialize : {
9459 on : {
95- NEXT : [
60+ TUTORIAL_LOADED : [
61+ {
62+ target : 'Summary' ,
63+ cond : 'hasNoProgress' ,
64+ } ,
9665 {
97- target : 'stageNormal ' ,
98- cond : 'hasNextStep ' ,
66+ target : 'Level ' ,
67+ cond : 'hasNoLevelProgress ' ,
9968 } ,
10069 {
101- target : 'stageComplete ' ,
70+ target : 'Stage ' ,
10271 } ,
10372 ] ,
10473 } ,
10574 } ,
106- testFail : {
75+
76+ Summary : {
10777 on : {
108- RETURN : 'stageNormal ' ,
78+ NEXT : 'Level ' ,
10979 } ,
11080 } ,
111- stageComplete : {
81+ Level : {
82+ onEntry : [ 'loadLevel' ] ,
11283 on : {
113- NEXT : [
114- {
115- target : 'stage' ,
116- cond : 'hasNextStage' ,
84+ NEXT : 'Stage' ,
85+ BACK : 'Summary' ,
86+ } ,
87+ } ,
88+ Stage : {
89+ onEntry : [ 'loadStage' ] ,
90+ initial : 'StageNormal' ,
91+ states : {
92+ StageNormal : {
93+ on : {
94+ TEST_RUN : 'TestRunning' ,
95+ STEP_SOLUTION_LOAD : {
96+ actions : [ 'callSolution' ] ,
97+ } ,
11798 } ,
118- {
119- target : 'level' ,
120- cond : 'hasNextLevel' ,
99+ } ,
100+ TestRunning : {
101+ on : {
102+ TEST_SUCCESS : [
103+ {
104+ target : 'StageComplete' ,
105+ cond : 'tasksComplete' ,
106+ } ,
107+ {
108+ target : 'TestPass' ,
109+ } ,
110+ ] ,
111+ TEST_FAILURE : 'TestFail' ,
121112 } ,
122- {
123- target : 'complete' ,
113+ } ,
114+ TestPass : {
115+ onEntry : [ 'stepComplete' ] ,
116+ on : {
117+ NEXT : [
118+ {
119+ target : 'StageNormal' ,
120+ cond : 'hasNextStep' ,
121+ } ,
122+ {
123+ target : 'StageComplete' ,
124+ } ,
125+ ] ,
124126 } ,
125- ] ,
127+ } ,
128+ TestFail : {
129+ on : {
130+ RETURN : 'StageNormal' ,
131+ } ,
132+ } ,
133+ StageComplete : {
134+ on : {
135+ NEXT : [
136+ {
137+ target : 'Stage' ,
138+ cond : 'hasNextStage' ,
139+ } ,
140+ {
141+ target : 'Level' ,
142+ cond : 'hasNextLevel' ,
143+ } ,
144+ {
145+ target : 'EndTutorial' ,
146+ } ,
147+ ] ,
148+ } ,
149+ } ,
126150 } ,
127151 } ,
128- } ,
129- } ,
130- complete : { } ,
131- } ,
152+ EndTutorial : { } ,
153+ }
154+ }
155+ }
132156 } ,
133157 {
134158 actions,
0 commit comments