Example #1
0
 /// <summary>
 /// Добавляет состояние в список текущих и активирует если это допустимо.
 /// </summary>
 /// <param name="state"> Состояние. </param>
 /// <param name="isActivate"> Пытаться ли активировать состояние. </param>
 public void AddState(IState state, bool isActivate = true)
 {
     current.Add(state);
     if (isActivate && state.IsCanActivate(this))
     {
         ForceConflictResolvingFor(state);
         ActivateState(state);
     }
 }
Example #2
0
 /// <summary>
 /// Активирует состояние, принуждая к деактивации допустимые конфликтующие с ним. 
 /// </summary>
 /// <param name="state"> Состояние. </param>
 public void ActivateState(IState state)
 {
     if (!current.Contains(state))
         return;
     if (!current.Contains(state))
         return;
     if (state.IsActivated())
         return;
     if (state.IsCanActivate(this))
     {
         ForceConflictResolvingFor(state);
         state.Activate(this);
     }
 }