Class EffectStack
한 엔티티의 상태 효과 목록을 관리한다. Add / Remove / Clear / Tick 을 제공한다. Effect 는 Stat 을 직접 수정하지 않는다 — StatModifier 를 통해 간접 수정한다.
public sealed class EffectStack
- Inheritance
-
objectEffectStack
Remarks
[연동 패턴 — Effect + Stat]
// Effect 적용
var handle = effectStack.Add(slowInstance);
statCollection.AddModifier(GameStats.MoveSpeed,
new StatModifier(StatModifierType.Multiply, 0.8f, "Slow"));
// Effect 종료 콜백에서
statCollection.RemoveAllModifiers(GameStats.MoveSpeed, "Slow");
Properties
All
public IReadOnlyDictionary<EffectId, EffectInstance> All { get; }
Property Value
- IReadOnlyDictionary<EffectId, EffectInstance>
Count
활성 Effect 수.
public int Count { get; }
Property Value
- int
TotalStackCount
전체 스택 수 합산.
public int TotalStackCount { get; }
Property Value
- int
Methods
Add(EffectInstance)
Effect 를 추가한다. Policy 에 따라 중복 처리. 반환된 EffectHandle 로 특정 Effect 를 직접 제거할 수 있다.
public EffectHandle Add(EffectInstance instance)
Parameters
instanceEffectInstance
Returns
Clear()
모든 Effect 를 제거한다.
public void Clear()
Contains(EffectId)
public bool Contains(EffectId id)
Parameters
idEffectId
Returns
- bool
Get(EffectId)
public EffectInstance Get(EffectId id)
Parameters
idEffectId
Returns
GetStackCount(EffectId)
public int GetStackCount(EffectId id)
Parameters
idEffectId
Returns
- int
Remove(EffectHandle)
EffectHandle 로 제거한다.
public bool Remove(EffectHandle handle)
Parameters
handleEffectHandle
Returns
- bool
Remove(EffectId)
EffectId 로 제거한다.
public bool Remove(EffectId id)
Parameters
idEffectId
Returns
- bool
TakeSnapshot()
현재 상태 스냅샷. 저장/디버깅용. Framework 는 저장 방식을 알지 못한다.
public EffectSnapshot TakeSnapshot()
Returns
Tick(float)
매 프레임 호출. 지속시간 감소 → 만료된 Effect 자동 제거. Game 의 Update 또는 TickSystem 에서 호출한다.
public void Tick(float dt)
Parameters
dtfloat
Events
OnEffectAdded
public event Action<EffectInstance, EffectHandle> OnEffectAdded
Event Type
- Action<EffectInstance, EffectHandle>
OnEffectExpired
public event Action<EffectInstance, EffectHandle> OnEffectExpired
Event Type
- Action<EffectInstance, EffectHandle>
OnEffectRemoved
public event Action<EffectInstance, EffectHandle> OnEffectRemoved
Event Type
- Action<EffectInstance, EffectHandle>