/// <summary> /// 请求添加游戏物品 /// </summary> /// <param name="callback"></param> /// <param name="add_goods_types"></param> /// <param name="add_goods_params"></param> /// <param name="add_goods_counts"></param> public void RequestAddGameGoods(RequestAddGameGoodsCallback callback, int[] add_goods_types, BigInteger[] add_goods_counts, int[] add_goods_params) { List <GameGoodsAddResult> localAddResults = new List <GameGoodsAddResult>(); List <GameGoodsAddResult> netAddResults = new List <GameGoodsAddResult>(); for (int i = 0; i < add_goods_types.Length; i++) { GameGoodsAddResult addResult = CheckGoodsAddResult(add_goods_types[i], add_goods_counts[i], add_goods_params[i]); if (addResult == null || addResult.requestType == GoodsRequestType.Undefine) { continue; } switch (addResult.requestType) { case GoodsRequestType.Local: localAddResults.Add(addResult); break; case GoodsRequestType.Network: netAddResults.Add(addResult); break; default: break; } } if (netAddResults.Count <= 0) { List <GameGoodData> realAddGoods = new List <GameGoodData>(); HashSet <string> tips = new HashSet <string>(); MergeGoodsAddResult(localAddResults, realAddGoods, tips); AddGameGoods(realAddGoods); callback?.Invoke(GoodsRequestResult.Success, realAddGoods, tips); } else { List <int> request_types = new List <int>(); List <int> request_counts = new List <int>(); List <int> request_params = new List <int>(); for (int i = 0; i < netAddResults.Count; i++) { for (int j = 0; j < netAddResults[i].realAddGoods.Count; j++) { var goods = netAddResults[i].realAddGoods[j]; request_types.Add((int)goods.type); request_counts.Add((int)goods.count);//暂时使用强制转换 之后有大数字请求 需与服务器进行商讨确定 request_params.Add(goods.param); } } //打开联网遮罩 Global.gApp.gUiMgr.OpenPanel(Wndid.LoadingUI); ServerMgr.singleton.RequestAddDelResource(request_types.ToArray(), request_counts.ToArray(), request_params.ToArray(), (state) => { //关闭联网遮罩 Global.gApp.gUiMgr.ClosePanel(Wndid.LoadingUI); switch (state) { case ServerMgr.RequestCallbackState.Success: { List <GameGoodData> realAddGoods = new List <GameGoodData>(); HashSet <string> tips = new HashSet <string>(); MergeGoodsAddResult(localAddResults, realAddGoods, tips); AddGameGoods(realAddGoods); //之后本地物品需要实际添加 MergeGoodsAddResult(netAddResults, realAddGoods, tips); callback?.Invoke(GoodsRequestResult.Success, realAddGoods, tips); } break; default: { callback?.Invoke(GoodsRequestResult.NetFail, null, null); } break; } }); } }
/// <summary> /// 请求添加游戏物品 /// </summary> /// <param name="callback"></param> /// <param name="add_goods_types"></param> /// <param name="add_goods_counts"></param> /// <param name="add_goods_params"></param> public void RequestAddGameGoods(RequestAddGameGoodsCallback callback, int[] add_goods_types, int[] add_goods_counts, int[] add_goods_params) { RequestAddGameGoods(callback, add_goods_types, ConvertIntArrToBigIntegerArr(add_goods_counts), add_goods_params); }