From 696aca3159f0a8cf753854abdfec6e19add0405e Mon Sep 17 00:00:00 2001 From: "DESKTOP-SAJ6RKV\\Administrator" Date: Wed, 14 May 2025 19:46:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=BF=AB=E9=80=9F=E7=BB=93?= =?UTF-8?q?=E7=AE=97=E7=AC=AC=E4=B8=80=E4=B8=AA=E7=95=8C=E9=9D=A2=E7=9A=84?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E9=80=BB=E8=BE=91=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HotFix/GameLogic/Actor/ActorHItem.cs | 24 ++ .../HotFix/GameLogic/Common/CommonData.cs | 14 +- .../HotFix/GameLogic/Common/EventConts.cs | 1 - .../GameLogic/Manager/DataGameModelManager.cs | 26 +- .../GameLogic/Manager/DataGameSceneManager.cs | 223 +++++++++++++++++- .../HotFix/GameLogic/UI/UIGameEndForm.cs | 5 + .../HotFix/GameLogic/UI/UIGameMainForm.cs | 4 +- 7 files changed, 274 insertions(+), 23 deletions(-) diff --git a/UnityProject/Assets/GameScripts/HotFix/GameLogic/Actor/ActorHItem.cs b/UnityProject/Assets/GameScripts/HotFix/GameLogic/Actor/ActorHItem.cs index 12e1fee6..a39a15dd 100644 --- a/UnityProject/Assets/GameScripts/HotFix/GameLogic/Actor/ActorHItem.cs +++ b/UnityProject/Assets/GameScripts/HotFix/GameLogic/Actor/ActorHItem.cs @@ -86,6 +86,30 @@ namespace GameLogic m_AddPush++; } + /// + /// 获取该阵营积分最高的玩家 + /// + public UnitPlayerData GetOnePlayer() + { + + if (m_ListUnitPlayDatas.Count <= 0) + { + return null; + } + + // 获取当前阵营积分最高的玩家 + UnitPlayerData data = m_ListUnitPlayDatas[0]; + for (int i = 1; i < m_ListUnitPlayDatas.Count; i++) + { + if (data.m_Score < m_ListUnitPlayDatas[i].m_Score) + { + data = m_ListUnitPlayDatas[i]; + } + } + // 返回该玩家数据 + return data; + } + public double GetAllPower() { return m_AllPush; diff --git a/UnityProject/Assets/GameScripts/HotFix/GameLogic/Common/CommonData.cs b/UnityProject/Assets/GameScripts/HotFix/GameLogic/Common/CommonData.cs index 836dd5f1..3983a907 100644 --- a/UnityProject/Assets/GameScripts/HotFix/GameLogic/Common/CommonData.cs +++ b/UnityProject/Assets/GameScripts/HotFix/GameLogic/Common/CommonData.cs @@ -17,12 +17,18 @@ namespace GameLogic public string ackType; } - public enum GameStateType + + public class GameEndData { - 团队赛 = 0, - 个人赛 = 1 + public string m_WinTeamName; + public string m_WinPlayerName; + public string m_SbyrPlayerName; + public string m_ZjgxPlayerName; + public string m_TzhsPlayerName; + public string m_DzzwPlayerName; } + public enum GameRankType { 当局排行榜 = 0, @@ -57,6 +63,8 @@ namespace GameLogic public long m_Score; // 当局积分 public long m_AllWinCount;// 当局胜点 public long m_LikeCount;//当局点赞 + public int m_GongXian;//当局贡献 + public int m_AtkCount;//当局攻击 public void AddExp(long v) { diff --git a/UnityProject/Assets/GameScripts/HotFix/GameLogic/Common/EventConts.cs b/UnityProject/Assets/GameScripts/HotFix/GameLogic/Common/EventConts.cs index 7bfee53c..d4f32a87 100644 --- a/UnityProject/Assets/GameScripts/HotFix/GameLogic/Common/EventConts.cs +++ b/UnityProject/Assets/GameScripts/HotFix/GameLogic/Common/EventConts.cs @@ -5,7 +5,6 @@ namespace GameLogic public class EventConts { public static PlatformType PlatformType = PlatformType.Dy; // 平台类型 - public static GameStateType gameStateType = GameStateType.团队赛; public static string Token = string.Empty; // 登录token diff --git a/UnityProject/Assets/GameScripts/HotFix/GameLogic/Manager/DataGameModelManager.cs b/UnityProject/Assets/GameScripts/HotFix/GameLogic/Manager/DataGameModelManager.cs index 71e11b6c..c14e523a 100644 --- a/UnityProject/Assets/GameScripts/HotFix/GameLogic/Manager/DataGameModelManager.cs +++ b/UnityProject/Assets/GameScripts/HotFix/GameLogic/Manager/DataGameModelManager.cs @@ -10,19 +10,19 @@ public class DataGameModelManager : GameBase.Singleton #region 游戏结算上报 public void C2S_GameRankEnd() { - if (EventConts.gameStateType == GameStateType.团队赛) - { - GameRankEnd(); - } - else if (EventConts.gameStateType == GameStateType.个人赛) - { - OneGameRankEnd(); - } - else - { - Log.Error("结算异常,不支持的模式:{0}", EventConts.gameStateType); - return; - } + //if (EventConts.gameStateType == GameStateType.团队赛) + //{ + // GameRankEnd(); + //} + //else if (EventConts.gameStateType == GameStateType.个人赛) + //{ + // OneGameRankEnd(); + //} + //else + //{ + // Log.Error("结算异常,不支持的模式:{0}", EventConts.gameStateType); + // return; + //} // 比例瓜分积分池 DataGameSceneManager.Instance.ScoreAllValue = (int)(DataGameSceneManager.Instance.ScoreAllValue * 0.3f); diff --git a/UnityProject/Assets/GameScripts/HotFix/GameLogic/Manager/DataGameSceneManager.cs b/UnityProject/Assets/GameScripts/HotFix/GameLogic/Manager/DataGameSceneManager.cs index f5742662..25af4438 100644 --- a/UnityProject/Assets/GameScripts/HotFix/GameLogic/Manager/DataGameSceneManager.cs +++ b/UnityProject/Assets/GameScripts/HotFix/GameLogic/Manager/DataGameSceneManager.cs @@ -668,11 +668,226 @@ namespace GameLogic // 设置游戏状态 SetGameState(false); - // 调用结算分配 - DataGameModelManager.Instance.C2S_GameRankEnd(); + ShowRankEndForm(); - // // 理论上是结算界面显示完成后,才开始调用的,先测试重开逻辑的问题 - // OnRestData(); + // 多了一步流程 + // 显示结算总结 + + //// 调用结算分配 + //DataGameModelManager.Instance.C2S_GameRankEnd(); + } + + + private void ShowRankEndForm() + { + + var winActorTeam = OnCheckWinTeam(); + + string winActorName = GetStrs(winActorTeam.m_Index); + + Log.Debug("获胜阵营的名称:" + winActorName); + + var winActorPlayer = winActorTeam.GetOnePlayer(); + + if (winActorPlayer == null) + { + Log.Error("当前阵营没有玩家数据"); + + // 调用结算分配 + DataGameModelManager.Instance.C2S_GameRankEnd(); + return; + } + + string winActorPlayerName = winActorPlayer.protCustMessageData.nickName; + + Log.Debug("当前积分最高的玩家"); + + var topPlayer = GetTopGongXianPlayer(); + + if (topPlayer == null) + { + Log.Error("当前没有玩家数据"); + return; + } + + string sbyrPlayerName = GetSbyrPlayerName().protCustMessageData.nickName; + Log.Debug("当前虽败犹荣阵营的玩家:" + sbyrPlayerName); + + + string zjgxPlayerName = topPlayer.protCustMessageData.nickName; + Log.Debug("当前最佳贡献的玩家:" + zjgxPlayerName); + + string tzhsPlayerName = GetTzhsPlayer().protCustMessageData.nickName; + Log.Debug("当前天灾化身的玩家:" + tzhsPlayerName); + + string dzzwPlayerName = GetDzzwPlayer().protCustMessageData.nickName; + Log.Debug("当前点赞最多的玩家:" + dzzwPlayerName); + + + GameEndData gameEndData = new GameEndData() + { + m_DzzwPlayerName = dzzwPlayerName, + m_TzhsPlayerName = tzhsPlayerName, + m_SbyrPlayerName = sbyrPlayerName, + m_ZjgxPlayerName = zjgxPlayerName, + m_WinPlayerName = winActorPlayerName, + m_WinTeamName = zjgxPlayerName + }; + + + // 显示结算界面 + GameModule.UI.ShowUI(gameEndData); + } + + /// + /// 获取除了胜利阵营外积分最高的玩家 + /// + /// + private UnitPlayerData GetSbyrPlayerName() + { + List m_tempList = new List(); + foreach (var item in m_DicUnitPlayerDatas) + { + m_tempList.Add(item.Value); + } + + m_tempList.Sort((a, b) => + { + if (a.m_LikeCount > b.m_LikeCount) + { + return -1; + } + else + { + return 1; + } + }); + + if (m_tempList.Count <= 0) + { + return null; + } + + return m_tempList[0]; + } + + /// + /// 获取当局点赞次数最多的玩家 + /// + /// + private UnitPlayerData GetDzzwPlayer() + { + List m_tempList = new List(); + foreach (var item in m_DicUnitPlayerDatas) + { + m_tempList.Add(item.Value); + } + + m_tempList.Sort((a, b) => + { + if (a.m_LikeCount > b.m_LikeCount) + { + return -1; + } + else + { + return 1; + } + }); + + if (m_tempList.Count <= 0) + { + return null; + } + + return m_tempList[0]; + } + + /// + /// 获取攻击次数最高的玩家 + /// + /// + private UnitPlayerData GetTzhsPlayer() + { + List m_tempList = new List(); + foreach (var item in m_DicUnitPlayerDatas) + { + m_tempList.Add(item.Value); + } + + m_tempList.Sort((a, b) => + { + if (a.m_AtkCount > b.m_AtkCount) + { + return -1; + } + else + { + return 1; + } + }); + + if (m_tempList.Count <= 0) + { + return null; + } + + return m_tempList[0]; + } + + /// + /// 获取全场贡献值最高的玩家 + /// + /// + private UnitPlayerData GetTopGongXianPlayer() + { + + List m_tempList = new List(); + foreach (var item in m_DicUnitPlayerDatas) + { + m_tempList.Add(item.Value); + } + + m_tempList.Sort((a, b) => + { + if (a.m_GongXian > b.m_GongXian) + { + return -1; + } + else + { + return 1; + } + }); + + if (m_tempList.Count <= 0) + { + return null; + } + + return m_tempList[0]; + } + + /// + /// 确认获胜阵营 + /// + private ActorHItem OnCheckWinTeam() + { + m_TeamSortList.Sort((a, b) => + { + if (a.GetAllPower() > b.GetAllPower()) + { + return -1; + } + else + { + return 1; + } + }); + + + // 第一名就是胜利的阵营 + return m_TeamSortList[0]; } /// diff --git a/UnityProject/Assets/GameScripts/HotFix/GameLogic/UI/UIGameEndForm.cs b/UnityProject/Assets/GameScripts/HotFix/GameLogic/UI/UIGameEndForm.cs index 01318c9d..c6bfaddc 100644 --- a/UnityProject/Assets/GameScripts/HotFix/GameLogic/UI/UIGameEndForm.cs +++ b/UnityProject/Assets/GameScripts/HotFix/GameLogic/UI/UIGameEndForm.cs @@ -39,5 +39,10 @@ namespace GameLogic #region ¼ #endregion + protected override void OnCreate() + { + base.OnCreate(); + } + } } diff --git a/UnityProject/Assets/GameScripts/HotFix/GameLogic/UI/UIGameMainForm.cs b/UnityProject/Assets/GameScripts/HotFix/GameLogic/UI/UIGameMainForm.cs index 553864cd..1e8a431d 100644 --- a/UnityProject/Assets/GameScripts/HotFix/GameLogic/UI/UIGameMainForm.cs +++ b/UnityProject/Assets/GameScripts/HotFix/GameLogic/UI/UIGameMainForm.cs @@ -53,7 +53,7 @@ namespace GameLogic // 设置游戏模式 // EventConts.gameStateType = (GameStateType)gameModelId; - EventConts.gameStateType = GameStateType.团队赛; + //EventConts.gameStateType = GameStateType.团队赛; // 设置游戏时长 switch (gameLenTiemrId) { @@ -71,7 +71,7 @@ namespace GameLogic break; } - Log.Info("当前选择游戏模式: {0} , 设置游戏时长: {1}", EventConts.gameStateType, EventConts.gameLenTiemr); + //Log.Info("当前选择游戏模式: {0} , 设置游戏时长: {1}", EventConts.gameStateType, EventConts.gameLenTiemr); GameModule.Setting.SetInt("gameModelId", gameModelId); GameModule.Setting.SetInt("gameLenTiemrId", gameLenTiemrId);