private void handleOnEndSignalSequence(List <SignalType> sequence) { if (m_StateMachine.CurrentState >= GameState.DefineWalk) { if (m_StateMachine.CurrentState >= GameState.DefineWalk && m_StateMachine.CurrentState <= GameState.DefineDown) { var cmd = m_CommandController.SeqTree.GetCommand(sequence); if (cmd == CommandController.Command.Empty) { m_CacheSequence = sequence; m_StateMachine.IssueCommand(c_ProceedCmd); } else { // re-display hint text changeHintText(m_HintText.text); } } else if (m_StateMachine.CurrentState >= GameState.ConfirmWalk && m_StateMachine.CurrentState <= GameState.ConfirmDown) { if (sequence.Count == 1) { if (sequence[0] == SignalType.Short) { CommandController.Command index = (CommandController.Command)(m_StateMachine.CurrentState - GameState.ConfirmWalk); m_StateMachine.IssueCommand(c_ConfirmCmd); bool success = m_CommandController.SeqTree.PushNewCommand(m_CacheSequence, index); // debug StringBuilder builder = new StringBuilder(index.ToString() + ": "); foreach (var signal in m_CacheSequence) { builder.Append((signal == SignalType.Long)? "_ " : ". "); } cmdList.Add(builder.ToString()); } else if (sequence[0] == SignalType.Long) { m_StateMachine.IssueCommand(c_CancelCmd); } } } } else { if (matchSequences(sequence, m_TargetSequence)) { m_StateMachine.IssueCommand(c_CompleteCmd); } } }