Class StatCollection
여러 Stat 을 보관하고 Modifier 를 관리하는 컬렉션. 한 엔티티(플레이어, 몬스터 등)의 모든 Stat 을 담는다.
public sealed class StatCollection
- Inheritance
-
objectStatCollection
Remarks
Effect 는 Stat 을 직접 수정하지 않는다. Effect 적용 → StatModifier 추가 / Effect 종료 → StatModifier 제거 패턴을 사용한다.
Properties
All
public IReadOnlyDictionary<StatId, Stat> All { get; }
Property Value
Methods
AddModifier(StatId, StatModifier)
Modifier 를 추가한다. Stat 이 없으면 BaseValue = 0 으로 자동 생성.
public void AddModifier(StatId id, StatModifier modifier)
Parameters
idStatIdmodifierStatModifier
ClearAllModifiers()
모든 Stat 의 모든 Modifier 제거.
public void ClearAllModifiers()
ClearModifiers(StatId)
특정 Stat 의 Modifier 전체 제거.
public void ClearModifiers(StatId id)
Parameters
idStatId
Get(StatId)
StatId 로 Stat 조회. 없으면 null.
public Stat Get(StatId id)
Parameters
idStatId
Returns
GetValue(StatId)
FinalValue 직접 조회. Stat 이 없으면 0 반환.
public float GetValue(StatId id)
Parameters
idStatId
Returns
- float
RemoveAllModifiers(StatId, string)
Source 가 일치하는 모든 Modifier 를 제거한다.
public int RemoveAllModifiers(StatId id, string source)
Parameters
idStatIdsourcestring
Returns
- int
RemoveModifier(StatId, string)
Source 가 일치하는 첫 번째 Modifier 를 제거한다. Effect 종료 시 Effect.Id.Value 를 Source 로 전달한다.
public bool RemoveModifier(StatId id, string source)
Parameters
idStatIdsourcestring
Returns
- bool
SetBaseValue(StatId, float)
BaseValue 를 설정한다. Stat 이 없으면 새로 생성한다.
public void SetBaseValue(StatId id, float value)
Parameters
idStatIdvaluefloat
TakeSnapshot()
현재 상태를 StatSnapshot 으로 반환한다. 저장 / 디버깅 용도. Framework 는 저장 방식을 알지 못한다.
public StatSnapshot TakeSnapshot()