少年修仙传客户端代码仓库
5398  【前端】【1.4】跨服竞技场开发,添加跨服1v1匹配成功后的确认界面和加载界面.
3个文件已修改
4个文件已添加
215 ■■■■■ 已修改文件
Core/NetworkPackage/DTCFile/ServerPack/HC0_CrossRealm/DTCC001_tagGCCrossRealmPKMatchOK.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/StageManager.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerOneVsOneEnterConfirmWin.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerOneVsOneEnterConfirmWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Loading/CrossServerOneVsOneLoadingWin.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Loading/CrossServerOneVsOneLoadingWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Login/CrossServerLogin.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HC0_CrossRealm/DTCC001_tagGCCrossRealmPKMatchOK.cs
@@ -12,16 +12,7 @@
        if (package.socketType == GameNetSystem.SocketType.Main)
        {
            GameNetSystem.Instance.DisconnectCrossServer();
            var loginModel = ModelCenter.Instance.GetModel<LoginModel>();
            var account = loginModel.accountBuf;
            var ip = GameNetSystem.Instance.crossServerData.ip;
            var port = GameNetSystem.Instance.crossServerData.port;
            CrossServerLogin.Instance.AccountLogin(account, ip, port);
            LoadingWin.targetMapResId = 1;
            WindowCenter.Instance.Open<LoadingWin>();
            CrossServerLogin.Instance.UpdateCrossServerOneVsOneData(package.PlayerName, package.TagPlayerName, package.TagJob);
        }
    }
Fight/Stage/StageManager.cs
@@ -393,6 +393,7 @@
        DebugEx.LogFormat("StageManager => Load Scene : {0} Finished.", _resources);
        WindowCenter.Instance.Close<LoadingWin>();
        WindowCenter.Instance.Close<CrossServerOneVsOneLoadingWin>();
        SystemSetting.Instance.SetGameFps(SystemSetting.Instance.GetGameFps());
    }
System/CrossServerOneVsOne/CrossServerOneVsOneEnterConfirmWin.cs
New file
@@ -0,0 +1,67 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Wednesday, December 19, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class CrossServerOneVsOneEnterConfirmWin : Window
    {
        [SerializeField] Text m_CountDown;
        [SerializeField] Button m_Ensure;
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            m_Ensure.SetListener(() => { CrossServerLogin.Instance.CrossServerOneVsOneLogin(); });
        }
        protected override void OnPreOpen()
        {
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
        }
        protected override void OnAfterClose()
        {
        }
        protected override void LateUpdate()
        {
            base.LateUpdate();
            if (CrossServerLogin.Instance.oneVsOnePlayerData.autoEnsureTime >= Time.time)
            {
                var surplusSeconds = Mathf.RoundToInt(CrossServerLogin.Instance.oneVsOnePlayerData.autoEnsureTime - Time.time);
                m_CountDown.text = string.Format("{0}秒后进入", surplusSeconds);
            }
        }
        #endregion
    }
}
System/CrossServerOneVsOne/CrossServerOneVsOneEnterConfirmWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 7d82e5e3617bae642a3c6c95df07800c
timeCreated: 1545204096
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Loading/CrossServerOneVsOneLoadingWin.cs
New file
@@ -0,0 +1,56 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Wednesday, December 19, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class CrossServerOneVsOneLoadingWin : Window
    {
        [SerializeField] Image m_MyPortrayal;
        [SerializeField] Image m_OpponentPortrayal;
        [SerializeField] Text m_MyName;
        [SerializeField] Text m_OpponentName;
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
        }
        protected override void OnPreOpen()
        {
            m_MyName.text = CrossServerLogin.Instance.oneVsOnePlayerData.myName;
            m_OpponentName.text = CrossServerLogin.Instance.oneVsOnePlayerData.opponentName;
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
    }
}
System/Loading/CrossServerOneVsOneLoadingWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 9f6d4548d3219fb48aaaff757fbb747f
timeCreated: 1545204249
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Login/CrossServerLogin.cs
@@ -19,6 +19,8 @@
            set { m_Busy = value; }
        }
        public CrossServerOneVsOne oneVsOnePlayerData { get; private set; }
        LoginModel loginModel { get { return ModelCenter.Instance.GetModel<LoginModel>(); } }
        public void Init()
@@ -37,11 +39,43 @@
        public string accountBuf { get; private set; }
        public string passwordBuf { get; private set; }
        public bool isLogined { get; private set; }
        public void UpdateCrossServerOneVsOneData(string myName, string opponentName, int opponentJob)
        {
            oneVsOnePlayerData = new CrossServerOneVsOne()
            {
                alreadyLogin = false,
                validTimeLimited = Time.time + 30f,
                autoEnsureTime = Time.time + 5f,
                myName = myName,
                myJob = PlayerDatas.Instance.baseData.Job,
                opponentName = opponentName,
                opponentJob = opponentJob,
            };
            Clock.Create(DateTime.Now + new TimeSpan(5 * TimeSpan.TicksPerSecond), () =>
            {
                if (!oneVsOnePlayerData.alreadyLogin)
                {
                    CrossServerOneVsOneLogin();
                }
            });
        }
        public void CrossServerOneVsOneLogin()
        {
            var loginModel = ModelCenter.Instance.GetModel<LoginModel>();
            var account = loginModel.accountBuf;
            var ip = GameNetSystem.Instance.crossServerData.ip;
            var port = GameNetSystem.Instance.crossServerData.port;
            oneVsOnePlayerData = oneVsOnePlayerData.SetLoginState(true);
            WindowCenter.Instance.Open<CrossServerOneVsOneLoadingWin>();
            AccountLogin(account, ip, port);
        }
        public void AccountLogin(string account, string ip, int gamePort)
        {
            isLogined = true;
            if (Application.internetReachability == NetworkReachability.NotReachable)
            {
                ConfirmCancel.ShowPopConfirm(
@@ -263,5 +297,23 @@
    }
    public struct CrossServerOneVsOne
    {
        public bool alreadyLogin;
        public float autoEnsureTime;
        public float validTimeLimited;
        public string myName;
        public int myJob;
        public string opponentName;
        public int opponentJob;
        public CrossServerOneVsOne SetLoginState(bool alreadyLogin)
        {
            this.alreadyLogin = alreadyLogin;
            return this;
        }
    }
}