Table of Contents

Class EffectStack

Namespace
Framework.Systems.Effect.Runtime
Assembly
Assembly-CSharp.dll

한 엔티티의 상태 효과 목록을 관리한다. Add / Remove / Clear / Tick 을 제공한다. Effect 는 Stat 을 직접 수정하지 않는다 — StatModifier 를 통해 간접 수정한다.

public sealed class EffectStack
Inheritance
object
EffectStack

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

instance EffectInstance

Returns

EffectHandle

Clear()

모든 Effect 를 제거한다.

public void Clear()

Contains(EffectId)

public bool Contains(EffectId id)

Parameters

id EffectId

Returns

bool

Get(EffectId)

public EffectInstance Get(EffectId id)

Parameters

id EffectId

Returns

EffectInstance

GetStackCount(EffectId)

public int GetStackCount(EffectId id)

Parameters

id EffectId

Returns

int

Remove(EffectHandle)

EffectHandle 로 제거한다.

public bool Remove(EffectHandle handle)

Parameters

handle EffectHandle

Returns

bool

Remove(EffectId)

EffectId 로 제거한다.

public bool Remove(EffectId id)

Parameters

id EffectId

Returns

bool

TakeSnapshot()

현재 상태 스냅샷. 저장/디버깅용. Framework 는 저장 방식을 알지 못한다.

public EffectSnapshot TakeSnapshot()

Returns

EffectSnapshot

Tick(float)

매 프레임 호출. 지속시간 감소 → 만료된 Effect 자동 제거. Game 의 Update 또는 TickSystem 에서 호출한다.

public void Tick(float dt)

Parameters

dt float

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>