Exemplo n.º 1
0
 //buff加载(无关buff实现的基本信息的加载)
 public BuffBase(BuffName name, Unit target, Unit caster)
 {
     data        = Gamef.LoadBuffData(name);
     this.target = target;
     this.caster = caster;
     Start();
 }
Exemplo n.º 2
0
    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);
    }
Exemplo n.º 3
0
    /// <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);
    }
Exemplo n.º 4
0
    /// <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();
        }
    }
Exemplo n.º 5
0
 public Buff(BuffName bn, int c, BuffType bt, int max, bool isTime)
 {
     name     = bn;
     turn     = c;
     type     = bt;
     maxCount = max;
     count    = 0;
     time     = isTime;
 }
Exemplo n.º 6
0
 /// <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]);
 }
Exemplo n.º 7
0
 public void BuffAddLayer(BuffName buffName, int layer = 1)
 {
     foreach (Buff buff in buffs)
     {
         if (buff.ToString() == buffName.ToString())
         {
             buff.Layer += layer;
             return;
         }
     }
 }
Exemplo n.º 8
0
 /// <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);
 }
Exemplo n.º 9
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);
 }
Exemplo n.º 10
0
    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);
    }
Exemplo n.º 11
0
    /// <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);
    }
Exemplo n.º 12
0
 /// <summary>
 /// 结束目标单位的buff效果
 /// </summary>
 /// <param name="name">buff名称</param>
 /// <param name="target">目标单位</param>
 public static void RemoveBuff(BuffName name, Unit target)
 {
     BuffHelper.RemoveBuff(name, target);
 }
Exemplo n.º 13
0
 /// <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);
 }
Exemplo n.º 14
0
 /// <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);
 }
Exemplo n.º 15
0
 private static void AddBuff_Buff生命汲取(BuffName name, Unit target, Unit caster)
 {
     new Buff生命汲取(name, target, caster);
 }
Exemplo n.º 16
0
    /// <summary>
    /// 检测是否存在buff
    /// </summary>
    /// <param name="name">buff类型</param>
    /// <returns></returns>
    public bool ContainsBuff(BuffName name)
    {
        BuffBase tmp;

        return(ContainsBuff(name, out tmp));
    }
Exemplo n.º 17
0
 /// <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);
 }
Exemplo n.º 18
0
 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);
     }
 }
Exemplo n.º 19
0
 public bool ContainBuff(BuffName _name)
 {
     foreach (Buff buff in buffs)
     {
         if (buff.Name == _name)
         {
             return true;
         }
     }
     return false;
 }
Exemplo n.º 20
0
 public void AddBuffToMinion(BuffName _buffName, Minion _minion)
 {
     ;
 }
Exemplo n.º 21
0
 public Buff生命汲取(BuffName name, Unit target, Unit caster) : base(name, target, caster)
 {
 }