Beispiel #1
0
 /// <summary>
 /// 해당 효과의 상태를 설정합니다.
 /// </summary>
 /// <param name="effect">효과</param>
 /// <param name="newState">변경할 상태</param>
 public void SetEffectState(CharacterEffect effect, EffectStateStruct newState)
 {
     if (m_Effect.ContainsKey(effect))
     {
         m_Effect[effect] = newState;
     }
 }
Beispiel #2
0
        /// <summary>
        /// 효과를 업데이트합니다.
        /// 참고 : Character
        /// </summary>
        public void UpdateEffect()
        {
            CharacterEffect[] effect = GetEffect_All();
            for (int i = 0; i < effect.Length; ++i)
            {
                EffectStateStruct state = m_Effect[effect[i]];

                //removeTimer 처리
                bool isRemove = false;
                if (state.removeTimer.HasValue)
                {
                    state.removeTimer -= Time.deltaTime;
                    if (state.removeTimer <= 0)
                    {
                        isRemove = true;
                    }
                }

                //CharacterEffect.OnUpdateEffect 호출
                effect[i].OnUpdateEffect();

                //제거해야 할 경우 제거, 아닌경우 업데이트
                if (isRemove)
                {
                    RemoveEffect(effect[i]);
                }
                else
                {
                    m_Effect[effect[i]] = state;
                }
            }
        }
Beispiel #3
0
        //Public
        /// <summary>
        /// 효과를 추가합니다.
        /// </summary>
        public void AddEffect(CharacterEffect effect, EffectStateStruct state)
        {
            if (m_Effect.TryGetValue(effect, out EffectStateStruct originalState))
            {
                originalState.Replace(state);
                m_Effect[effect] = originalState;
            }
            else
            {
                m_Effect.Add(effect, state);

                //초기화
                effect.Init(this);

                //DefaultVFX에서 효과 갯수를 추가한다.
                LoopDefaultVFX(effect, (Type effectType, EffectVFXStateStruct vfxState) =>
                {
                    vfxState.effectCount++;
                    m_DefaultVFX[effectType] = vfxState;

                    //효과가 추가된 기본 VFX 재생
                    vfxState.vfx.OpenVFX();
                });
            }
        }
Beispiel #4
0
 /// <summary>
 /// 더 강력한쪽으로 교환합니다.
 /// </summary>
 /// <param name="replaceState">교환할것</param>
 public void Replace(EffectStateStruct replaceState)
 {
     //removeTimer
     if (!replaceState.removeTimer.HasValue)
     {
         removeTimer = replaceState.removeTimer;
     }
     else if (removeTimer.HasValue)
     {
         if (removeTimer.Value < replaceState.removeTimer.Value)
         {
             removeTimer = replaceState.removeTimer;
         }
     }
 }
Beispiel #5
0
 /// <summary>
 /// 해당 효과의 상태를 설정합니다.
 /// </summary>
 /// <param name="effect">효과</param>
 /// <param name="newState">변경할 상태</param>
 public void SetEffectState(CharacterEffect effect, EffectStateStruct newState)
 {
     m_EffectList.SetEffectState(effect, newState);
 }
Beispiel #6
0
 /// <summary>
 /// 캐릭터 효과를 추가합니다.
 /// </summary>
 /// <param name="effect">추가할 효과</param>
 public void AddEffect(CharacterEffect effect, EffectStateStruct state)
 {
     m_EffectList.AddEffect(effect, state);
     OnAddEffect(effect);
 }