Пример #1
0
        public void OnEnter()
        {
            if (desc != null)
            {
                //特殊效果
                //   for (int i = 0; i < desc.buff_param3.Length; i++)
                {
                    if (desc.Get <int>("buff_type") != 0)
                    {
                        BuffEffect eff = BuffEffect.CreateBuffEffect(desc, this);
                        if (eff != null)
                        {
                            // eff.buffdelayTime = eff.effectDesc.buffdelayTime;
                            effects.Add(eff);
                        }
                    }
                }
            }

            for (int i = 0; i < effects.Count; i++)
            {
                BuffEffect eff = effects[i];
                if (eff.buffdelayTime <= 0)
                {
                    eff.OnEnter(this);
                }
            }

            //LogMgr.UnityLog("Buff OnEnter");
        }
Пример #2
0
        public void Update()
        {
            if (mLife > float.Epsilon)
            {
                BuffLife -= (int)(mAttack.GetBehaviorDeltaTime() * 1000);

                if (BuffLife <= float.Epsilon)
                {
                    for (int i = 0; i < effects.Count; i++)
                    {
                        BuffEffect eff = effects[i];
                        eff.OnTimeOut();
                    }
                    SetFinished();
                }
            }

            if (IsFinished() != false)
            {
                for (int i = 0; i < effects.Count; i++)
                {
                    BuffEffect eff = effects[i];
                    if (eff.buffdelayTime <= 0)
                    {
                        eff.Update(mAttack.GetBehaviorDeltaTime() * 1000);
                    }
                }
            }
        }
Пример #3
0
 // 角色死亡时
 public void OnStealth(bool bStealth)
 {
     for (int i = 0; i < effects.Count; i++)
     {
         BuffEffect eff = effects[i];
         eff.OnStealth(bStealth);
     }
 }
Пример #4
0
 // Buff重新被加上,在这里重设时间等
 public void ReplaceBuff()
 {
     BuffLife = mLife;
     for (int i = 0; i < effects.Count; i++)
     {
         BuffEffect eff = effects[i];
         eff.ReplaceBuff();
     }
 }
Пример #5
0
 public void FinishEffect()
 {
     SetFinished();
     for (int i = 0; i < effects.Count; i++)
     {
         BuffEffect eff = effects[i];
         eff.SetFinished();
     }
 }
Пример #6
0
 public void OnExit()
 {
     for (int i = 0; i < effects.Count; i++)
     {
         BuffEffect eff = effects[i];
         eff.OnExit();
     }
     //LogMgr.UnityLog("Buff OnExit");
 }
Пример #7
0
        public void AddEffect(int buffEffectId)
        {
            BuffEffect eff = BuffEffect.CreateBuffEffect(desc, this);

            if (eff != null)
            {
                effects.Add(eff);
                eff.OnEnter(this);
            }
        }
Пример #8
0
        // 角色死亡时
        public void OnDie()
        {
            for (int i = 0; i < effects.Count; i++)
            {
                BuffEffect eff = effects[i];
                eff.OnDie();
            }

            SetFinished();
        }
Пример #9
0
 public void RemoveEffect(BuffEffect effect)
 {
     for (int i = 0; i < effects.Count; i++)
     {
         BuffEffect eff = effects[i];
         if (eff == effect)
         {
             effect.OnExit();
             effect.SetFinished();
             effects.RemoveAt(i);
             return;
         }
     }
 }
Пример #10
0
        public bool IsFinished()
        {
            if (bFinished == false)
            {
                return(false);
            }

            for (int i = 0; i < effects.Count; i++)
            {
                BuffEffect eff = effects[i];
                if (eff.IsFinished() == false)
                {
                    return(false);
                }
            }
            return(bFinished);
        }
Пример #11
0
        public static BuffEffect CreateBuffEffect(LuaTable desc, Buff buff)
        {
            if (desc == null)
            {
                return(null);
            }


            BuffEffect newEff = null;

            switch (desc.Get <int>("action_type"))
            {
            case (int)BuffActionType.SCALE:        //缩放
                newEff = new ScaleBuffEffect();

                break;

            case (int)BuffActionType.EFFECT:     //特效
                newEff = new BoneBuffEffect();
                break;

            case (int)BuffActionType.REBORN:     // 重生类
                newEff = new RebornEffect();
                break;

            case (int)BuffActionType.LIMIT:     // 限制类
                newEff = new LimitControlEffect();
                break;

            case (int)BuffActionType.RECOVER:     // 无敌
                newEff = new RecoverBuffEffect();
                break;

            case (int)BuffActionType.STEALTH:     // 潜行
                newEff = new StealthBuffEffect();
                break;

            case (int)BuffActionType.SHEEP:     // 变形
                newEff = new SheepBuffEffect();
                break;

            case (int)BuffActionType.MAT:      //材质
                newEff = new MaterialBuffEffect();
                break;

            case (int)BuffActionType.FEAR:       //恐惧
                newEff = new FearBuffEffect();
                break;

            case (int)BuffActionType.CHARM:      //魅惑
                newEff = new CharmBuffEffect();
                break;


            case (int)BuffActionType.DISARM:      //缴械
                newEff = new DisarmBuffEffect();
                break;

            case (int)BuffActionType.ATT:      //修改属性
                newEff = new ChangeAttrEffect();
                break;

            case (int)BuffActionType.ICE:       //冰冻
                newEff = new DisarmBuffEffect();
                break;

            case (int)BuffActionType.FLAG:       //旗子
                newEff = new DisarmBuffEffect();
                break;


            default:
                break;
            }

            if (newEff != null)
            {
                newEff.Init(desc, buff.mAttack, buff.mTarget);
                return(newEff);
            }
            return(null);
        }