Exemple #1
0
    /// <summary>
    /// 重连
    /// </summary>
    public void ReConnet()
    {
        mLastReconnetTime          = Time.realtimeSinceStartup;//重连时间
        LoginModel.Inst.mSessionId = -1;
        Global.Inst.GetController <NetLoadingController>().ShowLoading(false);
        GameManager.Instance.CancelHeartBreath();
        NetProcess.ReleaseAllConnect();
        CallBack call = () =>
        {
            SQDebug.Log("重连次数" + mAutoReConnectNum);
            if (mBreathCallBack == null)
            {
                Global.Inst.GetController <MainController>().BackToMain(Ip, port);
            }
            else
            {
                mBreathCallBack(MainViewModel.Inst.mNowIp, MainViewModel.Inst.mNowPort);
            }
        };

        if (mAutoReConnectNum < 3)//如果自动重连次数少于两次就弹出提示
        {
            mAutoReConnectNum++;
            call();
        }
        else
        {
            Global.Inst.GetController <CommonTipsController>().ShowTips("网络连接失败", "尝试连接|退出游戏", true, call, () =>
            {
                Application.Quit();
            }, null, "网络异常");
        }
    }
Exemple #2
0
 void OnApplicationPause(bool b)
 {
     if (b)//最小化游戏
     {
         SQDebug.Log("程序失去焦点");
         NetProcess.ReleaseAllConnect();
         GameManager.Instance.ResetConnetTime();
     }
 }
Exemple #3
0
 /// <summary>
 /// 账号在其他玩家登录
 /// </summary>
 /// <param name="msg"></param>
 private void OnLoginInOther(MessageData msg)
 {
     GameManager.Instance.CancelHeartBreath();
     NetProcess.ReleaseAllConnect();
     LoginSR.LoingInOtherRecieve data = msg.Read <LoginSR.LoingInOtherRecieve>();
     Global.Inst.GetController <CommonTipsController>().ShowTips("您的账号在其他地方登录,请确认后重新登录", "确定", true, () =>
     {
         CloseOtherViewOpenLogin();
     });
 }
Exemple #4
0
 void Update()
 {
     if (Input.GetKeyUp(KeyCode.A))
     {
         OnApplicationPause(false);
     }
     if (Input.GetKeyUp(KeyCode.Z))
     {
         NetProcess.ReleaseAllConnect();
     }
 }
Exemple #5
0
    /// <summary>
    /// 显示网络提示
    /// </summary>
    public void ShowNetTips()
    {
        GameManager.Instance.CancelHeartBreath();
        NetProcess.ReleaseAllConnect();
        Global.Inst.GetController <NetLoadingController>().ShowLoading(true);
        SetTimeout.remove(ReConnet);
        if (Time.realtimeSinceStartup - mLastReconnetTime > 5)//重连间隔要大于5秒
        {
            SQDebug.Log("直接重连");

            ReConnet();
        }
        else
        {
            float time = 5 + mLastReconnetTime - Time.realtimeSinceStartup;
            SQDebug.Log("等" + time + "秒重连");
            SetTimeout.add(time, ReConnet);
        }
    }
Exemple #6
0
    /// <summary>
    /// 连接服务器
    /// </summary>
    /// <param name="call"></param>
    private void ConnectServer(CallBack call)
    {
        NetProcess.ReleaseAllConnect();
        string ip   = GameManager.Instance.Ip;
        int    port = GameManager.Instance.port;

        SQDebug.Log("开始连接服务器 ip:" + ip + "  port:" + port);
        NetProcess.Connect(ip, port, (b, id) =>
        {
            if (b)
            {
                NetProcess.ReleaseConnectExpectID(id);
                MainViewModel.Inst.mNowIp   = ip;
                MainViewModel.Inst.mNowPort = port;

                GameManager.Instance.StartHeartBreath((tip, tport) =>
                {
                    LoginToServer(LoginModel.Inst.LoginData, null);
                });
                LoginModel.Inst.mSessionId = id;
                SQDebug.Log("网络连接成功 ip:" + ip + "  port:" + port);
                if (call != null)
                {
                    call();
                }
            }
            else
            {
                GameManager.Instance.CancelHeartBreath();
                Global.Inst.GetController <CommonTipsController>().ShowTips("网络连接失败,请检测网络后重新连接", "确定", () =>
                {
                    ConnectServer(call);
                });
            }
        });
    }
Exemple #7
0
 void OnApplicationQuit()
 {
     NetProcess.ReleaseAllConnect();
 }
Exemple #8
0
 /// <summary>
 /// 退出登录
 /// </summary>
 public void LoginOut()
 {
     GameManager.Instance.CancelHeartBreath();
     NetProcess.ReleaseAllConnect();
     CloseOtherViewOpenLogin();
 }