예제 #1
0
        /// <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;
                    }
                });
            }
        }
예제 #2
0
 /// <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);
 }