Ejemplo n.º 1
0
    /// <summary>
    /// 向这个背包里添加物品
    /// </summary>
    /// <param name="target">目标物品</param>
    /// <param name="num">数量</param>
    /// <returns></returns>
    public int Add(RookiesGoods_GoodsBase target, int num = 1)
    {
        int more = 0;

        if (Grids.ContainsKey(target.Id))
        {
            List <RookiesGoods_Grid> gridList;
            Grids.TryGetValue(target.Id, out gridList);
            gridList.Sort(new GridComparer());
            more = gridList[0].AddNum(num);
            while (more > 0 && EmptyGrids > 0)
            {
                RookiesGoods_Grid grid = new RookiesGoods_Grid();
                grid.setGood(target);
                more = grid.AddNum(more);
                gridList.Add(grid);
                EmptyGrids--;
            }
        }
        else if (EmptyGrids > 0)
        {
            more = num;
            List <RookiesGoods_Grid> gridList = new List <RookiesGoods_Grid>();
            while (more > 0 && EmptyGrids > 0)
            {
                RookiesGoods_Grid grid = new RookiesGoods_Grid();
                grid.setGood(target);
                more = grid.AddNum(more);
                gridList.Add(grid);
                EmptyGrids--;
            }
            Grids.Add(target.Id, gridList);
        }
        return(more);
    }
Ejemplo n.º 2
0
    /// <summary>
    /// 读取物品存档
    /// </summary>
    public void Load()
    {
        JsonData jsonData = JsonMapper.ToObject(File.ReadAllText(Application.persistentDataPath + "/save/playerdata" + PlayerId + ".sav"));

        foreach (JsonData bag in jsonData)
        {
            TryGetBag(bag["name"].ToString()).UpdateVloume(int.Parse(bag["Volume"].ToString()));
            int cnt = 0, id = 0;
            foreach (JsonData array in  bag["data"])
            {
                if (cnt++ % 2 == 0)
                {
                    id = int.Parse(array.ToString());
                }
                else
                {
                    if (int.Parse(array.ToString()) < 0)
                    {
                        RookiesGoods_SuitBase temp = (RookiesGoods_SuitBase)RookiesGoods_OverallManage.GoodsManage.GetGoods(id);
                        temp.Durability = int.Parse(array.ToString()) * -1;
                        TryGetBag(bag["name"].ToString()).Add(temp);
                    }
                    else
                    {
                        RookiesGoods_GoodsBase temp = RookiesGoods_OverallManage.GoodsManage.GetGoods(id);
                        TryGetBag(bag["name"].ToString()).Add(temp, int.Parse(array.ToString()));
                    }
                }
            }
        }
        OnLoadingSuccessful();
    }
Ejemplo n.º 3
0
 /// <summary>
 /// 将物品添加于管理器 用于编辑器窗口
 /// </summary>
 /// <param name="data">物品</param>
 public void Add2GoodMenu(RookiesGoods_GoodsBase data)
 {
     if (PrototypeGoodsMenu.ContainsKey(data.Id))
     {
         throw new ArgumentException(string.Format("id {0}重复添加", data.Id));
     }
     PrototypeGoodsMenu.Add(data.Id, data);
 }
Ejemplo n.º 4
0
    public int DelNum(int target)
    {
        int more = -1;

        Num -= target;
        if (Num <= 0)
        {
            more = Num * -1;
            Item = null;
            Num  = 0;
        }
        return(more);
    }
Ejemplo n.º 5
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);
    }
Ejemplo n.º 6
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);
    }
Ejemplo n.º 7
0
 public void setGood(RookiesGoods_GoodsBase target)
 {
     Item = target;
 }