Вы можете иметь несколько событийно-управляемых действий в пределах одного состояния, поэтому вы можете иметь обработчики для каждого из ваших событий, а затем устанавливать локальные логические значения для отслеживания, которое было успешно выполнено. После каждого вы можете проверить значения и определить, нужно ли вам изменять состояние.