aboutsummaryrefslogtreecommitdiff
path: root/examples/state_machine/main.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-11-06 16:12:56 +0800
committerchai <chaifix@163.com>2018-11-06 16:12:56 +0800
commit9c5dc853ec5ceba809e7f02cdde87c90544a45e1 (patch)
tree709bcc9409c8088a0d2be83ab14ddd230512b23f /examples/state_machine/main.cpp
parent1d1210d7932b287d66e27157701b92df764528cb (diff)
*状态机条件使用多重条件
Diffstat (limited to 'examples/state_machine/main.cpp')
-rw-r--r--examples/state_machine/main.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/examples/state_machine/main.cpp b/examples/state_machine/main.cpp
index 0b7e191..ffcf8e9 100644
--- a/examples/state_machine/main.cpp
+++ b/examples/state_machine/main.cpp
@@ -23,11 +23,9 @@ void onLoad()
sm.addState("Jump");
sm.addParametert("run");
sm.addParameterb("idle");
- /*sm.addTransitionb("Empty", "Idle", "run", StateMachine::BOOL_IS, true);
- sm.addTransitionb("Idle", "Run", "run", StateMachine::BOOL_IS, false);
- */
- sm.addTransitiont("Empty", "Idle", "run");
- sm.addTransitiont("Idle", "Run", "run");
+ sm.addParameterb("idle2");
+ sm.addTransition("Empty", "Idle", StateMachine::Conditions().andt("run"));
+ sm.addTransition("Idle", "Run", StateMachine::Conditions().andb("idle", StateMachine::BOOL_IS, true).andb("idle2", StateMachine::BOOL_IS, true));
sm.setEnterListener([](const string& state, void* p) {
cout << "Enter: " << state << endl;
});
@@ -47,9 +45,16 @@ void onLoad()
//timer.cancel(hnd);
}, NULL);
timer.after(5000, [](void*) {
+ sm.setParameterb("idle", true);
sm.setParametert("run");
+ timer.cancelAll();
//sm.setParameterb("run", false);
}, NULL);
+ timer.after(8000, [](void*) {
+ sm.setParameterb("idle2", true);
+ //sm.setParameterb("run", false);
+ timer.cancel();
+ }, NULL);
}
void onEvent(Event* e)