//buff加载(无关buff实现的基本信息的加载) public BuffBase(BuffName name, Unit target, Unit caster) { data = Gamef.LoadBuffData(name); this.target = target; this.caster = caster; Start(); }
public BuffData LoadData(BuffName tag) { ; Debug.Log("尝试读取:" + tag.ToString()); int index = -1, minLRU = INF; bool findFlag = false, evictFlag = true; BuffData res = null; for (int i = 0; i < dataCells.Length; i++) { //如果不为空 if (dataCells[i].IsValid) { //如果标签一致 if (dataCells[i].Tag == tag) { findFlag = true; res = dataCells[i].Object; dataCells[i].LRU = INF; Debug.Log("缓存命中!!!"); } //标签不一致 else { //LRU减一 dataCells[i].LRU--; //如果需要evict并且没有find,则需要搜索最小LRU if (evictFlag && !findFlag && minLRU > dataCells[i].LRU) { minLRU = dataCells[i].LRU; index = i; } } } //单元格为空时,如果需要evict,则记录该空格为可替换的空格 else if (evictFlag && !findFlag) { evictFlag = false; index = i; } } if (!findFlag) { if (evictFlag) { Debug.Log("冲突不命中"); } else { Debug.Log("冷不命中"); } dataCells[index].IsValid = true; dataCells[index].LRU = INF; dataCells[index].Tag = tag; dataCells[index].Object = Resources.Load <BuffData>(GameDB.Instance.buffDataPath.paths[(int)tag]); res = dataCells[index].Object; } return(res); }
/// <summary> /// 检测是否存在buff。一般用于可叠加buff。 /// </summary> /// <param name="name">buff名称</param> /// <param name="buffList">目标buff列表</param> /// <param name="count">buff数量</param> /// <returns>是否存在buff</returns> public bool ContainsBuff(BuffName name, out List <BuffBase> buffList, out int count) { bool res = ContainsBuff(name, out buffList); count = buffList.Count; return(res); }
/// <summary> /// 结束目标单位的buff效果 /// </summary> /// <param name="name">buff名称</param> /// <param name="target">目标单位</param> public static void RemoveBuff(BuffName name, Unit target) { BuffBase buff; if (target.ContainsBuff(name, out buff)) { buff.End(); } }
public Buff(BuffName bn, int c, BuffType bt, int max, bool isTime) { name = bn; turn = c; type = bt; maxCount = max; count = 0; time = isTime; }
/// <summary> /// 返回所需buff /// </summary> /// <param name="bName"></param> /// <returns></returns> public BuffBasic getBuff(BuffName bName) { for (int i = 0; i < buffs.Count; ++i) { if (((Buff)buffs[i]).name == bName) { return(buffs[i]); } } return(buffs[0]); }
public void BuffAddLayer(BuffName buffName, int layer = 1) { foreach (Buff buff in buffs) { if (buff.ToString() == buffName.ToString()) { buff.Layer += layer; return; } } }
/// <summary> /// 检测是否存在buff。一般用于可叠加buff。 /// </summary> /// <param name="name">buff名称</param> /// <param name="buffList">目标buff列表</param> /// <returns>是否存在buff</returns> public bool ContainsBuff(BuffName name, out List <BuffBase> buffList) { buffList = new List <BuffBase>(); lock (buffs) foreach (BuffBase buff in buffs) { if (buff.data.BuffName == name) { buffList.Add(buff); } } return(buffList.Count > 0); }
/// <summary> /// 检测是否存在buff。可叠加buff返回第一个。 /// </summary> /// <param name="name">buff名称</param> /// <param name="buffBase">相应的BuffBase对象</param> /// <returns>是否存在buff</returns> public bool ContainsBuff(BuffName name, out BuffBase buffBase) { buffBase = null; lock (buffs) foreach (BuffBase item in buffs) { if (item.data.BuffName == name) { buffBase = item; return(true); } } return(false); }
public void AddBuff(BuffName buffName, int layer) { Type type = Type.GetType(buffName.ToString()); object obj = Activator.CreateInstance(type, true); if (obj == null) { Debug.Log("No Card for" + buffName.ToString()); return; } AddBuff((Buff)obj); BuffAddLayer(buffName, layer); View.GetInstance().ShowBuff(self); }
/// <summary> /// 注销所有同名buff,在buff失效时需要注销 /// </summary> /// <param name="name">注销buff名称</param> /// <returns>true表示成功注销,false表示单位没有该名称的buff</returns> public bool LogOffBuff(BuffName name) { bool res = false; lock (buffs) buffs.RemoveAll(delegate(BuffBase buff) { if (buff.data.BuffName == name) { res = true; Debug.Log(gameObject.name + " log off buff : " + buff.data.BuffName.ToString()); return(true); } return(false); }); return(res); }
/// <summary> /// 结束目标单位的buff效果 /// </summary> /// <param name="name">buff名称</param> /// <param name="target">目标单位</param> public static void RemoveBuff(BuffName name, Unit target) { BuffHelper.RemoveBuff(name, target); }
/// <summary> /// 给目标单位增加buff效果 /// </summary> /// <param name="name">buff名称</param> /// <param name="target">目标单位</param> /// <param name="caster">施法单位</param> public static void AddBuff(BuffName name, Unit target, Unit caster) { BuffHelper.AddBuff(name, target, caster); }
/// <summary> /// 读取技能数据 /// </summary> /// <param name="name">Buff名称</param> /// <returns>Buff数据</returns> public static BuffData LoadBuffData(BuffName name) { Debug.Log("Load " + name); return(Resources.Load <BuffData>(GameDB.Instance.buffDataPath.paths[(int)name])); //return buffCache.LoadData(name); }
private static void AddBuff_Buff生命汲取(BuffName name, Unit target, Unit caster) { new Buff生命汲取(name, target, caster); }
/// <summary> /// 检测是否存在buff /// </summary> /// <param name="name">buff类型</param> /// <returns></returns> public bool ContainsBuff(BuffName name) { BuffBase tmp; return(ContainsBuff(name, out tmp)); }
/// <summary> /// 给目标单位增加buff效果 /// </summary> /// <param name="name">buff名称</param> /// <param name="target">目标单位</param> /// <param name="caster">施法单位</param> public static void AddBuff(BuffName name, Unit target, Unit caster) { handlers[(int)name](name, target, caster); }
public void RemoveBuff(BuffName _name) { List<Buff> _listOfRemovingBuff = new List<Buff>(); foreach (Buff buff in buffs) { if (buff.Name == _name) { _listOfRemovingBuff.Add(buff); } } foreach (Buff buff in _listOfRemovingBuff) { RemoveBuff(buff); } }
public bool ContainBuff(BuffName _name) { foreach (Buff buff in buffs) { if (buff.Name == _name) { return true; } } return false; }
public void AddBuffToMinion(BuffName _buffName, Minion _minion) { ; }
public Buff生命汲取(BuffName name, Unit target, Unit caster) : base(name, target, caster) { }