/// <summary> /// Деактивирует состояние, разрешая конфликтующие с ним. /// </summary> /// <param name="state"> Состояние. </param> public void DeactivateState(IState state) { if (!current.Contains(state)) return; if (!state.IsActivated()) return; state.Deactivate(this); CheckResolvedStateConflicts(); }
/// <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); } }