summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/scxml/pinball/doc/src/pinball.qdoc39
-rw-r--r--examples/scxml/pinball/pinball.scxml120
2 files changed, 65 insertions, 94 deletions
diff --git a/examples/scxml/pinball/doc/src/pinball.qdoc b/examples/scxml/pinball/doc/src/pinball.qdoc
index b3566eb..2dd9949 100644
--- a/examples/scxml/pinball/doc/src/pinball.qdoc
+++ b/examples/scxml/pinball/doc/src/pinball.qdoc
@@ -344,6 +344,15 @@
\printuntil updateLights
\dots 20
\skipto /^\ {16}<\//
+ \printuntil updateLightsAccordingToLettersState
+ \dots 20
+ \skipto /^\ {16}<\//
+ \printuntil turnOnLights
+ \dots 20
+ \skipto /^\ {16}<\//
+ \printuntil turnOffLights
+ \dots 20
+ \skipto /^\ {16}<\//
\printuntil /^\ {12}<\//
The \c lightImpulseGenerator contains two child states:
@@ -405,30 +414,12 @@
the machine to activate the \c jackpotStateOn.
\skipto updateLights
- \printuntil rLetterOn
- \dots 32
- \skipto /^\ {28}<\//
- \printuntil aLetterOn
- \dots 32
- \skipto /^\ {28}<\//
- \printuntil zLetterOn
- \dots 32
- \skipto /^\ {28}<\//
- \printuntil yLetterOn
- \dots 32
- \skipto /^\ {28}<\//
- \printuntil rLetterOn
- \dots 32
- \skipto /^\ {28}<\//
- \printuntil aLetterOn
- \dots 32
- \skipto /^\ {28}<\//
- \printuntil zLetterOn
- \dots 32
- \skipto /^\ {28}<\//
- \printuntil yLetterOn
- \dots 32
- \skipto /^\ {28}<\//
+ \printuntil /^\ {16}<\//
+ \printuntil updateLightsAccordingToLettersState
+ \printuntil /^\ {16}<\//
+ \printuntil turnOnLights
+ \printuntil /^\ {16}<\//
+ \printuntil turnOffLights
\printuntil /^\ {16}<\//
When we receive the \c updateLights event, we first want to send a
diff --git a/examples/scxml/pinball/pinball.scxml b/examples/scxml/pinball/pinball.scxml
index 1ec7487..c2563ad 100644
--- a/examples/scxml/pinball/pinball.scxml
+++ b/examples/scxml/pinball/pinball.scxml
@@ -277,97 +277,77 @@
<if cond="In('lightImpulseOn')">
<if cond="In('offState')">
- <raise event="turnOnC"/>
- <raise event="turnOnR"/>
- <raise event="turnOnA"/>
- <raise event="turnOnZ"/>
- <raise event="turnOnY"/>
+ <raise event="turnOnLights"/>
<raise event="turnOnHurry"/>
<raise event="turnOnJackpot"/>
<raise event="turnOnGameOver"/>
<elseif cond="In('hurryStateOff')"/>
- <if cond="In('cLetterOn')">
- <raise event="turnOnC"/>
- <else/>
- <raise event="turnOffC"/>
- </if>
- <if cond="In('rLetterOn')">
- <raise event="turnOnR"/>
- <else/>
- <raise event="turnOffR"/>
- </if>
- <if cond="In('aLetterOn')">
- <raise event="turnOnA"/>
- <else/>
- <raise event="turnOffA"/>
- </if>
- <if cond="In('zLetterOn')">
- <raise event="turnOnZ"/>
- <else/>
- <raise event="turnOffZ"/>
- </if>
- <if cond="In('yLetterOn')">
- <raise event="turnOnY"/>
- <else/>
- <raise event="turnOffY"/>
- </if>
+ <raise event="updateLightsAccordingToLettersState"/>
<raise event="turnOffHurry"/>
<raise event="turnOffGameOver"/>
<else/>
- <raise event="turnOnC"/>
- <raise event="turnOnR"/>
- <raise event="turnOnA"/>
- <raise event="turnOnZ"/>
- <raise event="turnOnY"/>
+ <raise event="turnOnLights"/>
<raise event="turnOnHurry"/>
<raise event="turnOffGameOver"/>
</if>
<else/>
<if cond="In('offState')">
- <raise event="turnOffC"/>
- <raise event="turnOffR"/>
- <raise event="turnOffA"/>
- <raise event="turnOffZ"/>
- <raise event="turnOffY"/>
+ <raise event="turnOffLights"/>
<raise event="turnOffHurry"/>
<raise event="turnOffJackpot"/>
<elseif cond="In('hurryStateOff')"/>
- <raise event="turnOffC"/>
- <raise event="turnOffR"/>
- <raise event="turnOffA"/>
- <raise event="turnOffZ"/>
- <raise event="turnOffY"/>
+ <raise event="turnOffLights"/>
<else/>
- <if cond="In('cLetterOn')">
- <raise event="turnOnC"/>
- <else/>
- <raise event="turnOffC"/>
- </if>
- <if cond="In('rLetterOn')">
- <raise event="turnOnR"/>
- <else/>
- <raise event="turnOffR"/>
- </if>
- <if cond="In('aLetterOn')">
- <raise event="turnOnA"/>
- <else/>
- <raise event="turnOffA"/>
- </if>
- <if cond="In('zLetterOn')">
- <raise event="turnOnZ"/>
- <else/>
- <raise event="turnOffZ"/>
- </if>
- <if cond="In('yLetterOn')">
- <raise event="turnOnY"/>
- <else/>
- <raise event="turnOffY"/>
- </if>
+ <raise event="updateLightsAccordingToLettersState"/>
</if>
<raise event="turnOffHurry"/>
<raise event="turnOffGameOver"/>
</if>
</transition>
+
+ <transition event="updateLightsAccordingToLettersState">
+ <if cond="In('cLetterOn')">
+ <raise event="turnOnC"/>
+ <else/>
+ <raise event="turnOffC"/>
+ </if>
+ <if cond="In('rLetterOn')">
+ <raise event="turnOnR"/>
+ <else/>
+ <raise event="turnOffR"/>
+ </if>
+ <if cond="In('aLetterOn')">
+ <raise event="turnOnA"/>
+ <else/>
+ <raise event="turnOffA"/>
+ </if>
+ <if cond="In('zLetterOn')">
+ <raise event="turnOnZ"/>
+ <else/>
+ <raise event="turnOffZ"/>
+ </if>
+ <if cond="In('yLetterOn')">
+ <raise event="turnOnY"/>
+ <else/>
+ <raise event="turnOffY"/>
+ </if>
+ </transition>
+
+ <transition event="turnOnLights">
+ <raise event="turnOnC"/>
+ <raise event="turnOnR"/>
+ <raise event="turnOnA"/>
+ <raise event="turnOnZ"/>
+ <raise event="turnOnY"/>
+ </transition>
+
+ <transition event="turnOffLights">
+ <raise event="turnOffC"/>
+ <raise event="turnOffR"/>
+ <raise event="turnOffA"/>
+ <raise event="turnOffZ"/>
+ <raise event="turnOffY"/>
+ </transition>
</state>
</parallel>
</parallel>