From bdc8db384ea60f64ae66a7fbc3686390fdd192dc Mon Sep 17 00:00:00 2001 From: wuwenbo Date: Tue, 30 Sep 2025 14:45:02 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=A8action=E7=94=9F=E5=91=BD?= =?UTF-8?q?=E5=91=A8=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Scripts/TH1_Logic/Action/ActionLogic.cs | 16 ++++++++++++++-- .../Scripts/TH1_Logic/Steam/GameNetSender.cs | 9 ++++++++- .../Scripts/TH1_Logic/Steam/SteamLobbyManager.cs | 2 +- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs b/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs index 973da5934..a8556ead7 100644 --- a/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs +++ b/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs @@ -871,7 +871,17 @@ namespace Logic.Action return 1f; } - public abstract bool ExecuteViewBefore(CommonActionParams actionParams); + public virtual bool ExecuteViewBefore(CommonActionParams actionParams) + { + var actionData = new ActionNetData(); + actionData.Version = Main.MapData.Net.GetActionVersion(); + actionData.MapHash = NetData.GetMapDataHash(Main.MapData); + actionData.Param = actionParams; + actionData.ActionId = _actionId; + Main.MapData.Net.Actions.Add(actionData); + return true; + } + public abstract bool ExecuteViewAfter(CommonActionParams actionParams); // 完整的执行调用, 供外部使用 @@ -889,7 +899,8 @@ namespace Logic.Action return true; } } - + + ExecuteViewBefore(actionParams); var ret = Execute(actionParams); AfterExecute(actionParams); return ret; @@ -898,6 +909,7 @@ namespace Logic.Action // 网络调用 public virtual bool NetCompleteExecute(CommonActionParams actionParams) { + ExecuteViewBefore(actionParams); var ret = Execute(actionParams); AfterExecute(actionParams); return ret; diff --git a/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetSender.cs b/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetSender.cs index f2022dd1b..1860535cd 100644 --- a/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetSender.cs +++ b/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetSender.cs @@ -45,12 +45,19 @@ namespace TH1_Logic.Steam LobbyManager.Instance.Lobby.BroadcastMessage(messageBytes); } + // 房主广播消息给所有成员 + public void SendMessageToAllPlayer(BaseMessage message) + { + byte[] messageBytes = MemoryPack.MemoryPackSerializer.Serialize(message); + LobbyManager.Instance.Lobby.BroadcastMessage(messageBytes); + } + // 广播字符串 public void BroadcastString(string str) { var data = new StringMessage(); data.Content = str; - BroadcastMessage(data); + SendMessageToAllPlayer(data); } // 游戏开始 diff --git a/Unity/Assets/Scripts/TH1_Logic/Steam/SteamLobbyManager.cs b/Unity/Assets/Scripts/TH1_Logic/Steam/SteamLobbyManager.cs index c3e7d6bd0..a94cc1e52 100644 --- a/Unity/Assets/Scripts/TH1_Logic/Steam/SteamLobbyManager.cs +++ b/Unity/Assets/Scripts/TH1_Logic/Steam/SteamLobbyManager.cs @@ -465,7 +465,7 @@ namespace TH1_Logic.Steam return false; } - if (IsMemberInLobby(member)) return false; + if (!IsMemberInLobby(member)) return false; if (member == GetSelfMemberId()) return false; var cSteamId = new CSteamID(member); return SimpleP2P.Instance.SendTo(cSteamId, data, reliable);