public override void TakeEffect(BuffArgs args) { if (args.GetType() == typeof(StatDecreaseArgs)) { UpdateStat((StatDecreaseArgs)args); } }
void Update() { buffMaganer.OnUpdate(); if (Input.GetKeyDown(KeyCode.Q)) { BuffArgs buffArgs = new BuffArgs(); buffArgs.m_cintinueTime = 5; buffArgs.m_addition = false; buffArgs.m_fValue1 = 10; buffMaganer.BuffAdd(BuffType.Buff.BuffSpeedUp, buffArgs); } else if (Input.GetKeyDown(KeyCode.W)) { BuffArgs buffArgs = new BuffArgs(); buffArgs.m_timer = 1; buffArgs.m_times = 5; buffArgs.m_addition = false; buffArgs.m_fValue1 = 10; buffMaganer.PerBuffAdd(BuffType.PerBuff.BufferAddBlood, buffArgs); } if (Input.GetKeyDown(KeyCode.Space)) { buffMaganer.BuffRemove(BuffType.Buff.BuffSpeedUp); } }
//公开的方法 //1.增加一个Buff private void BuffAddBase(object buff, BuffArgs buffArgs) { //反射技术 -->根据字符串名称创建一个对象实例 BuffStateBase newBuff = Activator.CreateInstance(Type.GetType(buff.ToString())) as BuffStateBase; newBuff.CurrBuffArgs = buffArgs; newBuff.CurrentBuffType = buff.GetType(); newBuff.CurrentBuffState = buff; newBuff.CurrCtrl = CurrCtrl; //将Buff添加到容器中 //m_addition if (buffArgs.m_addition) { newBuff.OnEnter(); m_BuffList.Add(newBuff); } else { //判断当前容器中,是否包含这个Buff BuffStateBase findBuff = BuffCheckExitsBase(buff); if (findBuff != null) { findBuff.CurrBuffArgs.m_cintinueTime = newBuff.CurrBuffArgs.m_cintinueTime; } //如果没有,则直接加进去 else { newBuff.OnEnter(); m_BuffList.Add(newBuff); } } }
private void Initialize() { Owner = null; Lifespan = 0; ParentType = _ParentType.None; Type = _Type.None; BuffArgs = new BuffArgs(); }
public override void TakeEffect(BuffArgs args) { }
public void PerDeBuffAdd(BuffType.PerDeBuff perDeBuff, BuffArgs buffArgs) { BuffAddBase(perDeBuff, buffArgs); }
public void DeBuffAdd(BuffType.DeBuff deBuff, BuffArgs buffArgs) { BuffAddBase(deBuff, buffArgs); }
public void BuffAdd(BuffType.Buff buff, BuffArgs buffArgs) { BuffAddBase(buff, buffArgs); }