public override void ApplyState(StatableObject target) { }
public override void ResetState(StatableObject target) { }
/// <summary> /// Активирует состояние. /// </summary> /// <param name="target"> Компонент состояний целевого объекта. </param> public void Activate(StatableObject target) { isActivated = true; ApplyState(target); }
/// <summary> /// Снимает эффекты состояния с объекта. /// </summary> /// <param name="target"> Компонент состояний целевого объекта. </param> public abstract void ResetState(StatableObject target);
/// <summary> /// Может ли состояние быть активированно. /// </summary> /// <param name="target"> Компонент состояний целевого объекта. </param> /// <returns> True, если может быть активирован. </returns> public bool IsCanActivate(StatableObject target) { foreach (var conflict in ConflictKeyStates) { if (target.ContainsActivatedState(conflict.StateKey) && !conflict.IsForceDeactivate) { return false; } } return true; }
/// <summary> /// Деактивирует состояние. /// </summary> /// <param name="target"> Компонент состояний целевого объекта. </param> public void Deactivate(StatableObject target) { isActivated = false; ResetState(target); }
/// <summary> /// Применяет эффекты состояния на объект. /// </summary> /// <param name="target"> Компонент состояний целевого объекта. </param> public abstract void ApplyState(StatableObject target);