+ fn handle_state_change(&mut self, change: StateChange) {
+ match change {
+ StateChange::Push(mut state) => {
+ // if let Some(s) = self.states.last_mut() {
+ // s.pause();
+ // }
+ state.enter(&self.ctrl_man);
+ self.states.push(state);
+ }
+ StateChange::Pop => {
+ if let Some(mut s) = self.states.pop() {
+ s.leave();
+ }
+ }
+ StateChange::Exit => {
+ while let Some(mut s) = self.states.pop() {
+ s.leave();
+ }
+ }
+ }