Bläddra i källkod

修改客户端适配最新登录流程

大爷 1 år sedan
förälder
incheckning
3e214ebcb4

BIN
Unity/Assets/Res/CodeDll/Hotfix.dll.bytes


BIN
Unity/Assets/Res/CodeDll/Hotfix.pdb.bytes


BIN
Unity/Assets/Res/CodeDll/Model.dll.bytes


BIN
Unity/Assets/Res/CodeDll/Model.pdb.bytes


BIN
Unity/Assets/Res/CodeDll/Unity.Mono.dll.bytes


+ 7 - 0
Unity/Assets/Res/Config/GenFromExcel/ItemIdConfigCategory.bytes.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: e42d3ee868f8836449ae8af67f104213
+TextScriptImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 7 - 0
Unity/Assets/Res/Config/GenFromExcel/ItemTypeConfigCategory.bytes.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: a1f700982538903428f54fbd2d45d66a
+TextScriptImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Unity/Assets/Res/GameEditor/e1.bin


BIN
Unity/Assets/Res/GameEditor/ex.bin


+ 2 - 0
Unity/Assets/Scripts/Codes/Hotfix/Client/EntryEvent2_InitClient.cs

@@ -10,6 +10,8 @@
             Game.AddSingleton<BattleMgr>();
             Game.AddSingleton<BattleUnitFactory>();
             Game.AddSingleton<SkillMgr>();
+
+            await ETTask.CompletedTask;
         }
     }
 }

+ 11 - 4
Unity/Assets/Scripts/Codes/Hotfix/Client/Login/EnterMapHelper.cs

@@ -4,11 +4,11 @@ namespace ET.Client
 {
     public static class EnterMapHelper
     {
-        public static async ETTask EnterMapAsync(Scene clientScene, string mapName)
+        public static async ETTask EnterMapAsync(Scene clientScene, Player player, long scnInstanceId)
         {
             try
             {
-                var param = new C2G_EnterMap() { MapName = mapName };
+                var param = new C2G_EnterMap() { InstanceId = scnInstanceId };
                 G2C_EnterMap g2CEnterMap = await clientScene.GetComponent<SessionComponent>().Session.Call(param) as G2C_EnterMap;
                 if(g2CEnterMap.Error != 0)
                 {
@@ -17,11 +17,18 @@ namespace ET.Client
                     return;
                 }
 
-                SceneChangeHelper.SceneChangeTo(clientScene, mapName, g2CEnterMap.SceneId).Coroutine();
+                var mapinfo = MapConfigCategory.Instance.Get(player.areaId);
+                if(mapinfo == null)
+                {
+                    Log.Error($"Not found map({player.areaId})");
+                    return;
+                }
+
+                SceneChangeHelper.SceneChangeTo(clientScene, mapinfo.MapName, g2CEnterMap.MapInstanceId).Coroutine();
                 // 等待场景切换完成
                 await clientScene.GetComponent<ObjectWait>().Wait<Wait_SceneChangeFinish>();
                 //告诉战斗服 i am ready
-                clientScene.GetComponent<SessionComponent>().Session.Send(new BattleClientReady());
+                //clientScene.GetComponent<SessionComponent>().Session.Send(new BattleClientReady());
             }
             catch (Exception e)
             {

+ 8 - 5
Unity/Assets/Scripts/Codes/Hotfix/Client/Login/LoginHelper.cs

@@ -39,14 +39,14 @@ namespace ET.Client
                 }
 
                 // 创建一个gate Session,并且保存到SessionComponent中
-                Session gateSession = await RouterHelper.CreateRouterSession(clientScene, NetworkHelper.ToIPEndPoint(r2CLogin.Address));
+                Session gateSession = await RouterHelper.CreateRouterSession(clientScene, NetworkHelper.ToIPEndPoint(r2CLogin.Address[0]));
 
                 // 登陆gate
-                G2C_LoginGate g2CLoginGate = (G2C_LoginGate)await gateSession.Call(new C2G_LoginGate() { Token = r2CLogin.Token });
+                G2C_LoginGame g2CLoginGate = (G2C_LoginGame)await gateSession.Call(new C2G_LoginGame() { Token = r2CLogin.Token, UserId = r2CLogin.UserId });
 
                 if (g2CLoginGate.Error != ErrorCode.ERR_Success)
                 {
-                    Log.Debug($"登陆gate错误...errCode={g2CLoginGate.Error}");
+                    Log.Debug($"登陆game错误...errCode={g2CLoginGate.Error}");
                     return g2CLoginGate.Error;
                 }
 
@@ -55,11 +55,14 @@ namespace ET.Client
                 var accountComponet = clientScene.AddComponent<AccountInfoComponent>();
                 accountComponet.Token = r2CLogin.Token;
                 accountComponet.UserId = r2CLogin.UserId;
-                Log.Debug($"登陆gate成功...token={r2CLogin.Token}, userId={r2CLogin.UserId}");
+                Log.Debug($"登陆game成功...token={r2CLogin.Token}, userId={r2CLogin.UserId}");
 
                 //var player = g2CLoginGate.Players[0];
                 //TODO:选角进入
-                await EventSystem.Instance.PublishAsync(clientScene, new EventType.LoginFinish());
+                //使用简化流程直接进入游戏
+                var ret = (G2C_BindPlayer)await gateSession.Call(new C2G_BindPlayer() { PlayerId = 0 });
+
+                await EventSystem.Instance.PublishAsync(clientScene, new EventType.LoginFinish() { player = ret.Player});
             }
             catch (Exception e)
             {

+ 0 - 50
Unity/Assets/Scripts/Codes/Hotfix/Client/battle/skill/SkillMgr.cs

@@ -7,39 +7,6 @@ namespace ET.Client
 {
     public class SkillMgr : Singleton<SkillMgr>
     {
-        private bool inited = false;
-        public bool Inited { get { return inited; } }
-
-        private HashMap<int, SkillKeyStruct> SkillLisst = new();
-        public SkillKeyStruct GetSkill(int index)
-        {
-           return SkillLisst[index];
-        }
-
-        public void Init(params int[] skills)
-        {
-            inited = true;
-            SkillLisst.Clear();
-
-            var CFG = UnitMgr.Instance.Actor.ZUnit.Templates;
-            for (int i = 0; i < skills.Length; i++)
-            {
-                int skid = skills[i];
-                if (skid != 0)
-                {
-                    SkillTemplate skt = CFG.getSkill(skid);
-                    SkillLisst[i] = new SkillKeyStruct()
-                    {
-                        keyPos = i,
-                        baseSkillId = skid,
-                        icon = skt.IconName
-                    };
-                }
-            }
-
-            EventSystem.Instance.Publish<SkillChangeEvent>();
-        }
-
         private UnitLaunchSkillAction launchSkillAction = new UnitLaunchSkillAction();
         public void LanchSkill(int skillId)
         {
@@ -66,21 +33,4 @@ namespace ET.Client
             return 0;
         }
     }
-
-    [Event(SceneType.None)]
-    public class LaunchSkillEventHandler : BEvent<LaunchSkillEvent>
-    {
-        public override void OnEvent(LaunchSkillEvent a)
-        {
-            var skillinfo = SkillMgr.Instance.GetSkill(a.index);
-            if (skillinfo != null)
-            {
-                SkillMgr.Instance.LanchSkill(skillinfo.baseSkillId);
-            }
-            else
-            {
-                Log.Error($"skill info not exist @index: {a.index}");
-            }
-        }
-    }
 }

+ 92 - 2
Unity/Assets/Scripts/Codes/Hotfix/Client/battle/unit/BattleActor.cs

@@ -1,10 +1,76 @@
-using CommonAI.ZoneClient;
+using CommonAI.Zone;
+using CommonAI.ZoneClient;
+using CommonLang;
 using ET;
 using ET.Client;
+using ET.EventType;
+using ProtoBuf;
+using System.ComponentModel;
 using XmdsCommon.Plugin;
 
+public partial class SkillKeyStruct : ProtoObject
+{
+    [ProtoMember(1)]
+    public int keyPos { get; set; }
+
+    [ProtoMember(2)]
+    public int baseSkillId { get; set; }
+
+    [ProtoMember(3)]
+    public int advancedSkillId { get; set; }
+
+    [ProtoMember(4)]
+    public string icon { get; set; }
+
+    [ProtoMember(5)]
+    public int flag { get; set; }
+
+    [ProtoMember(6)]
+    public int unlockLevel { get; set; }
+
+    [ProtoMember(7)]
+    public string name { get; set; }
+
+    [ProtoMember(8)]
+    public string baseSkillIcon { get; set; }
+
+}
+
+[Event(SceneType.None)]
+public class LaunchSkillEventHandler : BEvent<LaunchSkillEvent>
+{
+    public override void OnEvent(LaunchSkillEvent a)
+    {
+        var actor = UnitMgr.Instance.Actor;
+        if(actor != null )
+        {
+            var skillinfo = actor.GetSkill(a.index);
+            if (skillinfo != null)
+            {
+                SkillMgr.Instance.LanchSkill(skillinfo.baseSkillId);
+            }
+            else
+            {
+                Log.Error($"skill info not exist @index: {a.index}");
+            }
+        }
+        else
+        {
+            Log.Warning("actor not exist");
+        }
+    }
+}
+
 public class BattleActor : BattlePlayer
 {
+    private bool isSkillInited = false;
+    public bool IsSkillOk { get { return isSkillInited; } }
+    private HashMap<int, SkillKeyStruct> SkillLisst = new();
+    public SkillKeyStruct GetSkill(int index)
+    {
+        return SkillLisst[index];
+    }
+
     public override void OnAwake(ZoneObject zo)
     {
         base.OnAwake(zo);
@@ -37,7 +103,7 @@ public class BattleActor : BattlePlayer
                     skills = new int[] { baseSkillID };
                 }
             }
-            SkillMgr.Instance.Init(skills);
+           InitSkill(skills);
         }
         else if (op == ZoneUnit.SkillOption.Add || op == ZoneUnit.SkillOption.Remove)
         {
@@ -45,6 +111,30 @@ public class BattleActor : BattlePlayer
         }
     }
 
+    public void InitSkill(params int[] skills)
+    {
+        isSkillInited = true;
+        SkillLisst.Clear();
+
+        var CFG = UnitMgr.Instance.Actor.ZUnit.Templates;
+        for (int i = 0; i < skills.Length; i++)
+        {
+            int skid = skills[i];
+            if (skid != 0)
+            {
+                SkillTemplate skt = CFG.getSkill(skid);
+                SkillLisst[i] = new SkillKeyStruct()
+                {
+                    keyPos = i,
+                    baseSkillId = skid,
+                    icon = skt.IconName
+                };
+            }
+        }
+
+        EventSystem.Instance.Publish<SkillChangeEvent>();
+    }
+
     private void OnStopPickObject(ZoneUnit unit, CommonAI.Zone.UnitStopPickObjectEvent stop)
     {
         Log.Error("unhande event: OnStopPickObject");

+ 5 - 3
Unity/Assets/Scripts/Codes/HotfixView/Client/UI/HUD/SceneChangeFinishEvent_CreateHUD.cs

@@ -38,14 +38,16 @@ namespace ET.Client
         {
             var btn1 = view.GetChild("btn_skill1");
             var btn2 = view.GetChild("btn_skill2");
-            if (!SkillMgr.Instance.Inited)
+
+            var actor = UnitMgr.Instance.Actor;
+            if (actor == null || !actor.IsSkillOk)
             {
                 btn1.visible = false;
                 btn2.visible = false;
                 return;
             }
-            btn1.visible = SkillMgr.Instance.GetSkill(0) != null;
-            btn2.visible = SkillMgr.Instance.GetSkill(1) != null;
+            btn1.visible = actor.GetSkill(0) != null;
+            btn2.visible = actor.GetSkill(1) != null;
 
             var img = view.GetChild("img_direction");
             btn1.onClick.Set(() => {

+ 7 - 5
Unity/Assets/Scripts/Codes/HotfixView/Client/UI/UILobby/LoginFinish_CreateLobbyUI.cs

@@ -9,12 +9,13 @@ namespace ET.Client
     {
         protected override async ETTask Run(Scene scene, EventType.LoginFinish args)
         {
+            
             Log.Debug("enter lobby.");
             var view = await UIHelper.Create("Lobby");
-            InitView(scene, view);
+            InitView(scene, args.player, view);
         }
 
-        private void InitView(Scene scene, GComponent view)
+        private void InitView(Scene scene, Player player, GComponent view)
         {
             var name = view.GetChild("userName");
             var level = view.GetChild("UserLevel");
@@ -31,14 +32,15 @@ namespace ET.Client
             var btn = view.GetChild("Btn_PVP");
             btn.onClick.Add(() =>
             {
-                EnterMapHelper.EnterMapAsync(scene, "Map1").Coroutine();
+                EnterMapHelper.EnterMapAsync(scene, player, player.instanceId).Coroutine();
             });
 
             btn = view.GetChild("Btn_PVE");
-            btn.onClick.Add(() =>
+            btn.visible = false;
+            /*btn.onClick.Add(() =>
             {
                 EnterMapHelper.EnterMapAsync(scene, "Map2").Coroutine();
-            });
+            });*/
         }
     }
 }

+ 1 - 1
Unity/Assets/Scripts/Codes/Model/Client/Generate/Config/MapConfig.cs

@@ -199,7 +199,7 @@ namespace ET
 		public string RandChestTC { get; set; }
 		/// <summary>场景小地图</summary>
 		[ProtoMember(43)]
-		public string SceneSmallMap { get; set; }
+		public string MapName { get; set; }
 		/// <summary>小地图大小</summary>
 		[ProtoMember(44)]
 		public string SceneSmallMapSize { get; set; }

+ 3 - 1
Unity/Assets/Scripts/Codes/Model/Share/EventType.cs

@@ -8,6 +8,8 @@ namespace ET
         public struct AfterCreateClientScene { }
         public struct AfterCreateCurrentScene { }
         public struct AppStartInitFinish { }
-        public struct LoginFinish { }
+        public struct LoginFinish {
+            public Player player;
+        }
     }
 }

+ 1 - 1
Unity/Packages/com.focus-creative-games.hybridclr_unity/Editor/BuildProcessors/FilterHotFixAssemblies.cs

@@ -44,7 +44,7 @@ namespace HybridCLR.Editor.BuildProcessors
                 string hotUpdateDllFile = hotUpdateDllName + ".dll";
                 if (assemblies.All(ass => !ass.EndsWith(hotUpdateDllFile)) && string.IsNullOrEmpty(assResolver.ResolveAssembly(hotUpdateDllName, false)))
                 {
-                    throw new Exception($"热更新 assembly:{hotUpdateDllFile} 不存在,请检查拼写错误");
+                    Debug.Log($"热更新 assembly:{hotUpdateDllFile} 不存在,请检查拼写错误");
                 }
                 Debug.Log($"[FilterHotFixAssemblies] 过滤热更新assembly:{hotUpdateDllFile}");
             }