diff --git a/UnityProject/Assets/GameScripts/HotFix/GameLogic/Manager/DataGameModelManager.cs b/UnityProject/Assets/GameScripts/HotFix/GameLogic/Manager/DataGameModelManager.cs index 8e14e3d4..02881941 100644 --- a/UnityProject/Assets/GameScripts/HotFix/GameLogic/Manager/DataGameModelManager.cs +++ b/UnityProject/Assets/GameScripts/HotFix/GameLogic/Manager/DataGameModelManager.cs @@ -69,42 +69,51 @@ public class DataGameModelManager : GameBase.Singleton // 总积分 long totalScore = DataGameSceneManager.Instance.ScoreAllValue; - - // 计算前三名分配 - long firstScore = (long)(totalScore * 0.3f); - long secondScore = (long)(totalScore * 0.2f); - long thirdScore = (long)(totalScore * 0.1f); - - // 计算剩余40%平分 - long leftScore = totalScore - firstScore - secondScore - thirdScore; int playerCount = us.Count; - long avgScore = playerCount > 0 ? leftScore / playerCount : 0; - // 分配 - for (int i = 0; i < us.Count; i++) + if (playerCount == 1) { - var d = us[i]; - long addScore = avgScore; - if (i == 0) - addScore += firstScore; - else if (i == 1) - addScore += secondScore; - else if (i == 2) - addScore += thirdScore; + // 只有一个玩家,分配100% + us[0].m_Score += totalScore; + long winScale = DataGameSceneManager.Instance.WinAllValue; + Log.Debug("玩家{0},分配所得胜点:{1}", us[0].protCustMessageData.nickName, winScale); + us[0].m_AllWinCount = (int)winScale; + } + else + { + // 计算前三名分配 + long firstScore = (long)(totalScore * 0.3f); + long secondScore = (long)(totalScore * 0.2f); + long thirdScore = (long)(totalScore * 0.1f); - d.m_Score += addScore; + // 计算剩余40%平分 + long leftScore = totalScore - firstScore - secondScore - thirdScore; + long avgScore = playerCount > 0 ? leftScore / playerCount : 0; - // 分配胜点(如有特殊规则可在此处理) - if (i == 0) + // 分配 + for (int i = 0; i < playerCount; i++) { - long winScale = DataGameSceneManager.Instance.WinAllValue; - Log.Debug("玩家{0},分配所得胜点:{1}", d.protCustMessageData.nickName, winScale); - d.m_AllWinCount = (int)winScale; + var d = us[i]; + long addScore = avgScore; + if (i == 0) + addScore += firstScore; + else if (i == 1) + addScore += secondScore; + else if (i == 2) + addScore += thirdScore; + + d.m_Score += addScore; + + // 分配胜点(如有特殊规则可在此处理) + if (i == 0) + { + long winScale = DataGameSceneManager.Instance.WinAllValue; + Log.Debug("玩家{0},分配所得胜点:{1}", d.protCustMessageData.nickName, winScale); + d.m_AllWinCount = (int)winScale; + } } } - - List rankInfos = new List(); // 上报排行榜数据 var allDatas = DataGameSceneManager.Instance.GetUnitPlayerDatas();