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"); }
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); } } } }
// 角色死亡时 public void OnStealth(bool bStealth) { for (int i = 0; i < effects.Count; i++) { BuffEffect eff = effects[i]; eff.OnStealth(bStealth); } }
// Buff重新被加上,在这里重设时间等 public void ReplaceBuff() { BuffLife = mLife; for (int i = 0; i < effects.Count; i++) { BuffEffect eff = effects[i]; eff.ReplaceBuff(); } }
public void FinishEffect() { SetFinished(); for (int i = 0; i < effects.Count; i++) { BuffEffect eff = effects[i]; eff.SetFinished(); } }
public void OnExit() { for (int i = 0; i < effects.Count; i++) { BuffEffect eff = effects[i]; eff.OnExit(); } //LogMgr.UnityLog("Buff OnExit"); }
public void AddEffect(int buffEffectId) { BuffEffect eff = BuffEffect.CreateBuffEffect(desc, this); if (eff != null) { effects.Add(eff); eff.OnEnter(this); } }
// 角色死亡时 public void OnDie() { for (int i = 0; i < effects.Count; i++) { BuffEffect eff = effects[i]; eff.OnDie(); } SetFinished(); }
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; } } }
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); }
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); }