示例#1
0
 /// <summary>
 /// логика при блокированном состоянии
 /// </summary>
 /// <param name="fsmevent"></param>
 /// <returns></returns>
 private State <TurnstileStatus, Coins> LockedLogic(Event <Coins> fsmevent)
 {
     // вставляем монету
     if (fsmevent.FsmEvent is InsertCoin)
     {
         return(GoTo(TurnstileStatus.Unlocked).Using(StateData.AddOne()));
     }
     // пытаемся пройти без монеты
     if (fsmevent.FsmEvent is PushBar)
     {
         Console.ForegroundColor = ConsoleColor.Red;
         Console.WriteLine($"You can't go, insert coin first please. State is {StateName}.");
         Console.ResetColor();
         return(Stay());
     }
     return(null);
 }
示例#2
0
 /// <summary>
 /// логика при разблокированном состоянии
 /// </summary>
 /// <param name="fsmevent"></param>
 /// <returns></returns>
 private State <TurnstileStatus, Coins> UnlockedLogic(Event <Coins> fsmevent)
 {
     // слишком много монет, получаем сдачу, состояние не меняется
     if (fsmevent.FsmEvent is InsertCoin)
     {
         Console.ForegroundColor = ConsoleColor.Yellow;
         Console.WriteLine("Coin already inserted. Take back and go.");
         Console.ResetColor();
         return(GoTo(TurnstileStatus.Unlocked).Using(StateData.AddOne()));
     }
     // проходим
     if (fsmevent.FsmEvent is PushBar)
     {
         Console.ForegroundColor = ConsoleColor.Green;
         Console.WriteLine($"You can go. State is: {StateName}.");
         Console.ResetColor();
         return(GoTo(TurnstileStatus.Locked));
     }
     return(null);
 }