示例#1
0
    /// <summary>
    /// 在全部背包中检索并删除物品
    /// </summary>
    /// <param name="goods">物品实体</param>
    /// <param name="num">物品数量</param>
    /// <returns>返回删除是否成功 失败的原因:背包里没有该物品</returns>
    public bool AutoDelByBag(RookiesGoods_GoodsBase goods, int num = 1, int specialID = 0)
    {
        bool flag = false;

        if (BagsMenu.ContainsKey("ALL"))
        {
            //RookiesGoods_Bag temp;
            //Bags.TryGetValue(BagsMenu["ALL"], out temp);
            //if (temp != null)
            //{
            //    flag = temp.Delete(goods.Id, num, specialID);
            //}
            List <string> bags = BagsMenu["ALL"];
            for (int i = 0; i < bags.Count; i++)
            {
                RookiesGoods_Bag temp;
                Bags.TryGetValue(bags[i], out temp);
                if (temp != null)
                {
                    flag = temp.Delete(goods.Id, num, specialID);
                }
            }
        }
        else if (flag == false)
        {
            if (BagsMenu.ContainsKey(goods.SaveType.ToUpper()))
            {
                //RookiesGoods_Bag temp;
                //Bags.TryGetValue(BagsMenu[goods.ItemType.ToUpper()], out temp);
                //if (temp != null)
                //{
                //    flag = temp.Delete(goods.Id, num, specialID);
                //}
                List <string> bags = BagsMenu[goods.SaveType.ToUpper()];
                for (int i = 0; i < bags.Count; i++)
                {
                    RookiesGoods_Bag temp;
                    Bags.TryGetValue(bags[i], out temp);
                    if (temp != null)
                    {
                        flag = temp.Delete(goods.Id, num, specialID);
                        if (flag)
                        {
                            return(true);
                        }
                    }
                }
            }
        }
        return(flag);
    }
示例#2
0
    /// <summary>
    /// 自动添加物品,根据类型自动添加对应背包。优先添加于储存类型为ALL的背包,若其不存在或者空间不足后添加于对应储存类型的背包。
    /// 如果不想这么做,你可以利用
    /// </summary>
    /// <param name="goods">物品实体</param>
    /// <param name="num">物品数量</param>
    /// <returns>返回添加之后多余的数量 ,如果返回值与添加数量一致,说明背包控件已满</returns>
    public int AutoAdd2Bag(RookiesGoods_GoodsBase goods, int num = 1)
    {
        int more = num;

        if (BagsMenu.ContainsKey("ALL"))
        {
            List <string> bags = BagsMenu["ALL"];
            for (int i = 0; i < bags.Count; i++)
            {
                RookiesGoods_Bag temp;
                Bags.TryGetValue(bags[i], out temp);
                if (temp != null && more > 0)
                {
                    more = temp.Add(goods, num);
                }
            }
        }
        if (more > 0)
        {
            if (BagsMenu.ContainsKey(goods.SaveType.ToUpper()))
            {
                //RookiesGoods_Bag temp;
                //Bags.TryGetValue(BagsMenu[goods.ItemType.ToUpper()], out temp);
                //if (temp != null)
                //{
                //    more = temp.Add(goods, num);
                //}
                List <string> bags = BagsMenu[goods.SaveType.ToUpper()];
                for (int i = 0; i < bags.Count; i++)
                {
                    RookiesGoods_Bag temp;
                    Bags.TryGetValue(bags[i], out temp);
                    if (temp != null && more > 0)
                    {
                        more = temp.Add(goods, num);
                    }
                }
            }
        }
        return(more);
    }