123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- using System;
- using UnityEngine;
- using UnityGameFramework.Runtime;
- using Newtonsoft.Json.Linq;
- using System.Threading.Tasks;
- using System.Threading;
- /// <summary>
- /// 通讯代理类,基类
- /// </summary>
- /// <typeparam name="T"></typeparam>
- public class ProxyBase<T> where T : ProxyBase<T>, new()
- {
- ///// <summary>
- ///// 客户端版本号
- ///// </summary>
- //private string Clientver = "";
- /// <summary>
- /// 操作码,各个实例拥有自己的操作码
- /// </summary>
- public int opeCode { get; protected set; } = 0;
- #region 单例
- private static T mInst = default(T);
- public static T Instance
- {
- get
- {
- if (null == mInst)
- {
- mInst = new T();
- }
- return mInst;
- }
- }
- #endregion
- /// <summary>
- /// 向服务端发送消息
- /// </summary>
- /// <param name="cmd"></param>
- /// <param name="args"></param>
- /// <param name="callback"></param>
- /// <param name="onfail"></param>
- public void Post(int cmd, object[] args, Action<RespVo> callback, Action<object> onfail = null)
- {
- Post<RespVo>(cmd, args, callback, msg => onfail?.Invoke(msg));
- }
- /// <summary>
- /// 向服务端发送消息
- /// </summary>
- /// <param name="cmd"></param>
- /// <param name="uid"></param>
- /// <param name="zoneid"></param>
- /// <param name="args"></param>
- /// <param name="callback"></param>
- /// <param name="onfail"></param>
- public void Post(int cmd, string uid, int zoneid, object[] args, Action<RespVo> callback, Action<object> onfail = null)
- {
- Post<RespVo>(cmd, uid, zoneid, args, callback, msg => onfail?.Invoke(msg));
- return;
- #region
- //if (GameCfg.CloseServer)
- //{
- // LogHelper.Log("游戏停服");
- // return;
- //}
- //NetHelper.Instance.Post(0, new ReqVo(opeCode, cmd, uid, zoneid, args),
- // GlobalConfig.Net_Connect_TimeOut_sec,
- // resp =>
- // {
- // if (resp.err == ErrCode.succeed)
- // {
- // if (!(cmd == CmdCode.cmd_user_loginuserinfo || cmd == CmdCode.cmd_user_registerNewRole) && resp.result.TryGetValue("store", out var store))
- // {
- // UserProxy.Instance.player.InitFromStore((JObject)store);
- // }
- // callback?.Invoke(resp); // 先执行结果通知
- // EventComponent eventCmpt = GameEntry.GetComponent<EventComponent>();
- // resp.events.ForEach(ev =>
- // {
- // switch (ev.name)
- // {
- // case Enum_EventType.TaskCardFinished: // 任务卡完成dwddd
- // eventCmpt?.FireNow(this, new TaskCardEventFinish(ev.arg1, ev.arg2));
- // break;
- // case Enum_EventType.TaskCardActived: // 任务卡激活
- // eventCmpt?.FireNow(this, new TaskCardEventAtive(ev.arg1, ev.arg2));
- // break;
- // case Enum_EventType.TaskCardReward: // 任务卡领取奖励
- // eventCmpt?.FireNow(this, new TaskCardEventReward(ev.arg1, ev.arg2));
- // break;
- // case Enum_EventType.MissionStepComplete: // 任务卡-任务步骤完成
- // eventCmpt?.FireNow(this, new TaskEventStepFinish(ev.arg1, ev.arg2));
- // break;
- // case Enum_EventType.MissionStepProcess: // 任务卡 - 进度更新
- // eventCmpt?.FireNow(this, new TaskEventStepProcess(ev.arg1, ev.arg2));
- // break;
- // case Enum_EventType.AddItem: // 获得道具
- // eventCmpt?.FireNow(this, new User_AddItemEvent(ev.arg1, ev.arg2));
- // break;
- // case Enum_EventType.RemoveItem: // 移除道具
- // break;
- // case Enum_EventType.AddTaskItem: // 添加任务卡
- // eventCmpt?.FireNow(this, new TaskCardEventAdd(ev.arg1, ev?.arg2 ?? null));
- // break;
- // case Enum_EventType.RemoveTaskItem: // 移除任务卡
- // break;
- // case Enum_EventType.StartPlot: // 开启剧情对话
- // eventCmpt?.FireNow(this, new StartPlotScene(Convert.ToInt32(ev.arg1), Convert.ToInt32(ev.arg2)));
- // break;
- // case Enum_EventType.NpcDialog: // 开启NPC对话
- // eventCmpt?.FireNow(this, new StartPlotNPC(Convert.ToInt32(ev.arg1), Convert.ToInt32(ev.arg2)));
- // break;
- // case Enum_EventType.UnlockBuild:
- // UserProxy.Instance.player.PrivateState.unlockedBuild.Add(Convert.ToInt32(ev.arg1)); // 同步已解锁建筑id
- // BuildManager.UnlockBuild(Convert.ToInt32(ev.arg1));
- // eventCmpt?.FireNow(this, new BuildUnlockEvent(ev.arg1, ev.arg2));
- // break;
- // case Enum_EventType.UnlockMap:
- // eventCmpt?.FireNow(this, new MapUnlockEvent(ev.arg1, ev.arg2));
- // break;
- // case Enum_EventType.UserLvlUP:
- // eventCmpt?.FireNow(this, new UserLvlUpEvent(ev.arg1, ev.arg2));
- // break;
- // case Enum_EventType.HeroLvlUp:
- // eventCmpt?.FireNow(this, new HeroLvlUpEvent(ev.arg1, ev.arg2));
- // eventCmpt?.FireNow(this, new HeroHPMPRefreshEvent());
- // break;
- // case Enum_EventType.HeroTupo:
- // eventCmpt?.FireNow(this, new HeroTupoEvent(ev.arg1, ev.arg2));
- // eventCmpt?.FireNow(this, new HeroHPMPRefreshEvent());
- // break;
- // case Enum_EventType.WeaponLvUp:
- // eventCmpt?.FireNow(this, new WuqiLvlUpEvent());
- // eventCmpt?.FireNow(this, new HeroHPMPRefreshEvent());
- // break;
- // case Enum_EventType.WeaponTuPo:
- // eventCmpt?.FireNow(this, new WuqiTupoEvent());
- // eventCmpt?.FireNow(this, new HeroHPMPRefreshEvent());
- // break;
- // case Enum_EventType.YanLingLvUp:
- // eventCmpt?.FireNow(this, new YanLingLvlUpEvent());
- // eventCmpt?.FireNow(this, new HeroHPMPRefreshEvent());
- // break;
- // case Enum_EventType.YanLingTuPo:
- // eventCmpt?.FireNow(this, new YanLingTupoEvent());
- // eventCmpt?.FireNow(this, new HeroHPMPRefreshEvent());
- // break;
- // case Enum_EventType.PaySuccess:
- // eventCmpt?.FireNow(this, new PaySuccessEvent());
- // break;
- // }
- // });
- // }
- // else
- // {
- // onfail?.Invoke(resp); // 先回调业务层错误处理
- // var errNo = resp.err;
- // var msg = resp.tag.TryGetValue("errmsg",out var j)?j.ToString() : "";
- // if (errNo == 3510) // 糊了一个补丁, 任务卡未找到是因为重复发送领取奖励导致的,但是流程上不好处理,-gwang 2021年3月4日17:22:55
- // {
- // }
- // else if (errNo == 1021)
- // {
- // UI_CueDialog.Instance().Open("消息超时,或者本地设备时间与现实时间差距较大!", "错误", E_DialogType.OneButton, () =>
- // {
- // LogHelper.Log("Exiting");
- // Application.Quit();
- // });
- // }
- // if (GameConfigData.IsReady)
- // { // 错误处理模块
- // if (GameConfigData.Ins.errmsg.ContainsKey(resp.err))
- // {
- // var errInfo = GameConfigData.Ins.errmsg[resp.err];
- // if (null != errInfo)
- // {
- // msg = string.IsNullOrEmpty(msg) ? errInfo.msg : msg;
- // if (errInfo.type == 1)
- // { // 错误类型为重启
- // UI_CueDialog.Instance().Open(msg, "错误", E_DialogType.OneButton, () =>
- // {
- // LogHelper.Log("Exiting");
- // Application.Quit();
- // });
- // }
- // else if (errInfo.type == 0)
- // {
- // UI_TipsWindow.InitFloatWaringDialog("警告:" + msg);
- // }
- // }
- // }
- // }
- // }
- // });
- #endregion
- }
- /// <summary>
- /// 向服务端发送消息
- /// </summary>
- /// <param name="cmd"></param>
- /// <param name="uid"></param>
- /// <param name="zoneid"></param>
- /// <param name="args"></param>
- /// <param name="callback"></param>
- /// <param name="onfail"></param>
- public void Post<T>(int cmd, string uid, int zoneid, object[] args, Action<T> callback, Action<string> onfail = null)
- {
- if (GameCfg.CloseServer)
- {
- LogHelper.Log("游戏停服");
- return;
- }
- HttpHelper.Instance.SendMsg(new ReqVo(opeCode, cmd, uid, zoneid, args), callback);
- }
- public void Post<T>(int cmd, object[] args, Action<T> callback, Action<string> onfail = null)
- {
- if (GameCfg.CloseServer)
- {
- LogHelper.Log("游戏停服");
- return;
- }
- var p = UserProxy.Instance.player;
- string uid = p.uid;
- int zoneid = p.zoneid;
- HttpHelper.Instance.SendMsg(new ReqVo(opeCode, cmd, uid, zoneid, args, p.TK), callback);
- }
- }
|