少年修仙传客户端代码仓库
client_Wu Xijin
2018-12-14 10f5d614e404e97d621bb467fdc3dcd5b0a45b57
5398 【前端】【1.4】跨服竞技场开发
5个文件已修改
103 ■■■■ 已修改文件
Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H03_MainCharacter/DTC0309_tagPlayerLoginInfo.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/GameNetSystem.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/H03_MainCharacter/H0309_tagPlayerLoginInfo.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Login/CrossServerLogin.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs
@@ -111,21 +111,34 @@
            }
        }
        switch (vNetData.MapID)
        if (vNetData.socketType == GameNetSystem.SocketType.Main
            && GameNetSystem.Instance.crossServerData.crossState == GameNetSystem.CrossServerState.Yes)
        {
            case 31250:
                StageManager.Instance.Load<GuardDungeonStage>(_mapConfig.MapID);
                break;
            case RuneTowerModel.RUNETOWER_MAPID:
                StageManager.Instance.Load<RuneTowerDungeonStage>(_mapConfig.MapID);
                break;
            case DemonJarModel.DEMONJAR_SINGLEMAPID:
                StageManager.Instance.Load<FakeDemonJarDungeonStage>(_mapConfig.MapID);
                break;
            default:
                StageManager.Instance.Load<DungeonStage>(_mapConfig.MapID);
                break;
            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);
        }
        else
        {
            switch (vNetData.MapID)
            {
                case 31250:
                    StageManager.Instance.Load<GuardDungeonStage>(_mapConfig.MapID);
                    break;
                case RuneTowerModel.RUNETOWER_MAPID:
                    StageManager.Instance.Load<RuneTowerDungeonStage>(_mapConfig.MapID);
                    break;
                case DemonJarModel.DEMONJAR_SINGLEMAPID:
                    StageManager.Instance.Load<FakeDemonJarDungeonStage>(_mapConfig.MapID);
                    break;
                default:
                    StageManager.Instance.Load<DungeonStage>(_mapConfig.MapID);
                    break;
            }
        }
        DTCA713_tagMCDynamicBarrierState.Clear();
        MainRedDot.Instance.Register();
Core/NetworkPackage/DTCFile/ServerPack/H03_MainCharacter/DTC0309_tagPlayerLoginInfo.cs
@@ -19,6 +19,7 @@
        H0309_tagPlayerLoginInfo vNetData = vNetPack as H0309_tagPlayerLoginInfo;
        PlayerDatas.Instance.loginInfo = vNetData;
        GameNetSystem.Instance.UpdateCrossServerData(vNetData.IP, vNetData.Port, vNetData.CrossState);
        if (RoleChange != null)
        {
Core/NetworkPackage/GameNetSystem.cs
@@ -88,6 +88,8 @@
    public bool isCrossSevering { get; set; }
    public CrossServerData crossServerData { get; private set; }
    public GameNetSystem()
    {
        var gameObject = new GameObject("NetUpdateBehaviour");
@@ -154,6 +156,11 @@
                onConnected(ok);
            }
        });
    }
    public void UpdateCrossServerData(string ip, int port, byte state)
    {
        this.crossServerData = new CrossServerData(ip, port, state);
    }
    public void SendInfo(GameNetPackBasic protocol)
@@ -241,7 +248,27 @@
            var loginModel = ModelCenter.Instance.GetModel<LoginModel>();
            loginModel.busy = false;
        }
    }
    public void DisconnectCrossServer()
    {
        try
        {
            if (crossServerSocket != null)
            {
                crossServerSocket.CloseConnect();
            }
            crossSeverProtocolQueue.Clear();
        }
        catch (Exception ex)
        {
            Debug.Log(ex);
        }
        finally
        {
            CrossServerLogin.Instance.busy = false;
        }
    }
    public void Reconnect()
@@ -345,4 +372,26 @@
        CrossSever = 2,
    }
    public struct CrossServerData
    {
        public string ip;
        public int port;
        public CrossServerState crossState;
        public CrossServerData(string ip, int port, byte state)
        {
            this.ip = ip;
            this.port = port;
            this.crossState = (CrossServerState)state;
        }
    }
    public enum CrossServerState
    {
        No = 0,
        Yes = 1,
        Error = 2,
    }
}
Core/NetworkPackage/ServerPack/H03_MainCharacter/H0309_tagPlayerLoginInfo.cs
@@ -12,7 +12,7 @@
    public byte Country;    //玩家国家
    public byte HavePswLV2;    //是否有二级密码
    public byte EquipCount;
    public tagLoginInfoEquip[] EquipInfo;    //size = EquipCount
    public tagLoginInfoEquip[] EquipInfo = null;    //size = EquipCount
    public uint EquipShowSwitch;    //玩家装备显示开关
    public uint ExAttr15;    //预留的扩展属性字段,用来存放项目特定的属性
    public uint ExAttr16;    //预留的扩展属性字段,用来存放项目特定的属性
@@ -20,6 +20,10 @@
    public uint ExAttr18;    //预留的扩展属性字段,用来存放项目特定的属性
    public uint ExAttr19;    //预留的扩展属性字段,用来存放项目特定的属性
    public uint ExAttr20;    //预留的扩展属性字段,用来存放项目特定的属性
    public byte IPLen;
    public string IP;    // 跨服IP
    public ushort Port;    // 跨服端口
    public byte CrossState;    // 跨服状态0-非跨服状态,1-跨服状态,2-跨服状态异常
    public H0309_tagPlayerLoginInfo()
    {
@@ -52,6 +56,10 @@
        TransBytes(out ExAttr18, vBytes, NetDataType.DWORD);
        TransBytes(out ExAttr19, vBytes, NetDataType.DWORD);
        TransBytes(out ExAttr20, vBytes, NetDataType.DWORD);
        TransBytes(out IPLen, vBytes, NetDataType.BYTE);
        TransBytes(out IP, vBytes, NetDataType.Chars, IPLen);
        TransBytes(out Port, vBytes, NetDataType.WORD);
        TransBytes(out CrossState, vBytes, NetDataType.BYTE);
    }
    public struct tagLoginInfoEquip
System/Login/CrossServerLogin.cs
@@ -7,7 +7,6 @@
{
    public class CrossServerLogin : Singleton<CrossServerLogin>
    {
        bool m_ReconnecBackGround = false;
        public bool reconnectBackGround {
            get { return m_ReconnecBackGround; }
@@ -40,7 +39,7 @@
        public bool isLogined { get; private set; }
        public void AccountLogin(string account, string ip, int port, int gamePort)
        public void AccountLogin(string account, string ip, int gamePort)
        {
            isLogined = true;
            if (Application.internetReachability == NetworkReachability.NotReachable)
@@ -65,7 +64,6 @@
                reconnectBackGround = false;
                accountBuf = account;
                ipBuf = ip;
                portBuf = port;
                gamePortBuf = gamePort;
                GameNetSystem.Instance.BeginConnectCrossServer(ipBuf, gamePortBuf, OnGameServerConnected);