// 지속 효과 적용 방안 // 버그 발생 확인 필요 : lambda로 캡쳐한 변수가 시간이 지나면 달라질 수 있음 // 해결 방안 2 : Timer에는 id만 보내고 실제 내용은 CharacterPara에 LinkedList 만들어서 관리하기 protected void ApplyPersistEffect(CUseEffect.PersistEffect persistEffect) { // 초기화 값이 들어가는거 방지용 if (persistEffect.IsValid()) { _buffTimer.Register(persistEffect.id, persistEffect.time, persistEffect.maxStack, persistEffect.increaseStack, (int buffStack) => StartPersistEffect(persistEffect, buffStack), (int buffStack) => EndPersistEffect(persistEffect, buffStack)); } }
public void Buff(int BuffID, float time, float buffScale) { switch (BuffID) { case CBuffList.AttackBuff: timer.Register(CBuffList.AttackBuff, time, (int notUsed) => StartBuffAttack(buffScale), (int notUsed) => EndBuffAttack(buffScale)); break; case CBuffList.DefenceBuff: timer.Register(CBuffList.DefenceBuff, time, (int notUsed) => StartBuffDefence(buffScale), (int notUsed) => EndBuffDefence(buffScale)); break; default: break; } }