/// <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); }
/// <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(); }
/// <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); }
public int DelNum(int target) { int more = -1; Num -= target; if (Num <= 0) { more = Num * -1; Item = null; Num = 0; } return(more); }
/// <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); }
/// <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); }
public void setGood(RookiesGoods_GoodsBase target) { Item = target; }