/// <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); } }
/// <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); } }