处理结算逻辑

This commit is contained in:
DESKTOP-SAJ6RKV\Administrator 2025-05-15 16:35:52 +08:00
parent 267d66869c
commit f9d62e1eec
5 changed files with 148 additions and 222 deletions

View File

@ -1533,10 +1533,10 @@ RectTransform:
- {fileID: 6210458413926239589}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!223 &9028738046421714771
Canvas:

View File

@ -110,6 +110,11 @@ namespace GameLogic
return data;
}
public List<UnitPlayerData> GetUnitPlayerDatas()
{
return m_ListUnitPlayDatas;
}
public double GetAllPower()
{
return m_AllPush;

View File

@ -10,19 +10,7 @@ public class DataGameModelManager : GameBase.Singleton<DataGameModelManager>
#region
public void C2S_GameRankEnd()
{
//if (EventConts.gameStateType == GameStateType.团队赛)
//{
// GameRankEnd();
//}
//else if (EventConts.gameStateType == GameStateType.个人赛)
//{
// OneGameRankEnd();
//}
//else
//{
// Log.Error("结算异常,不支持的模式:{0}", EventConts.gameStateType);
// return;
//}
GameRankEnd();
// 比例瓜分积分池
DataGameSceneManager.Instance.ScoreAllValue = (int)(DataGameSceneManager.Instance.ScoreAllValue * 0.3f);
@ -34,223 +22,105 @@ public class DataGameModelManager : GameBase.Singleton<DataGameModelManager>
UpLoadScoreData();
}
/// <summary>
/// 个人赛结算逻辑
/// </summary>
private void OneGameRankEnd()
{
// var datas = DataGameSceneManager.Instance.GetAllRankUnityPlayerData();
// datas.Sort((a, b) =>
// {
// if (a.GetIndexRankUnityData().m_Score > b.GetIndexRankUnityData().m_Score)
// {
// return -1;
// }
// else
// {
// return 1;
// }
// });
//List<PostPlayRankData> rankInfos = new List<PostPlayRankData>();
// for (int i = 0; i < datas.Count; i++)
// {
// var d = datas[i].GetIndexRankUnityData();
// int scale = EventConts.allScoreScale[i >= EventConts.allScoreScale.Length - 1 ? EventConts.allScoreScale.Length - 1 : i];
// long scoreScale = (long)(DataGameSceneManager.Instance.ScoreAllValue * (scale / 100.0f));
// // Log.Debug("玩家{0},分配所得积分:{1},当前玩家排名:{2}", d.protCustMessageData.nickName, scoreScale, i);
// // 增加玩家当局积分
// d.m_Score += scoreScale;
// // 分配胜点
// if (i < 3)
// {
// // Use Math.Ceiling to round up the winScale
// long winScale = (long)Math.Ceiling(DataGameSceneManager.Instance.WinAllValue * (EventConts.allWinScale[i] / 100.0f));
// Log.Debug("玩家{0},分配所得胜点:{1}", d.protCustMessageData.nickName, winScale);
// d.m_AllWinCount = (int)winScale;
// }
// }
// // 上报排行榜数据
// var allDatas = DataGameSceneManager.Instance.GetUnitPlayerDatas();
// foreach (var item in allDatas)
// {
// PostPlayRankData postPlayRankData = new PostPlayRankData();
// postPlayRankData.uid = item.Key;
// postPlayRankData.name = item.Value.protCustMessageData.nickName;
// postPlayRankData.score = item.Value.m_Score;
// postPlayRankData.pay = 0;
// //postPlayRankData.winCount = item.Value.m_AllWinCount;
// postPlayRankData.extData1 = item.Value.m_AllWinCount.ToString();
// // Log.Debug($"上传排行榜胜点数据:{postPlayRankData.name}====>{postPlayRankData.winCount}");
// postPlayRankData.avatar = item.Value.protCustMessageData.imgURL;
// // postPlayRankData.extraInfo = item.Value.m_PlayGameInfoData != null ? item.Value.m_PlayGameInfoData.ToJson() : "";
// postPlayRankData.exp = item.Value.protCustMessageData.rankRo.exp;
// postPlayRankData.lv = item.Value.protCustMessageData.rankRo.lv;
// rankInfos.Add(postPlayRankData);
// }
// rankInfos.Sort((a, b) =>
// {
// if (a.score > b.score)
// {
// return -1;
// }
// else
// {
// return 1;
// }
// });
// Log.Debug($"上传排行榜数据:{rankInfos.ToJson()}");
// string m_Json = EventConts.PlatformType == PlatformType.None ? HttpSendHelper.HttpPostRequest(EventConts.UploadScoreTest, rankInfos.ToJson()) : HttpSendHelper.HttpPostRequest(EventConts.UploadScore, rankInfos.ToJson());
// Log.Debug($"收到排行榜数据:{m_Json}");
// PlayRankRootData playRankRootData = JsonHelper.Deserialize<PlayRankRootData>(m_Json);
// if (playRankRootData != null && playRankRootData.code == 200)
// {
// // // 清理礼物队列
// // DataGameManager.Instance.m_VipItemDatas.Clear();
// // DataGameManager.Instance.m_GiftItemDatas.Clear();
// // 打开结算界面
// object[] objects = new object[2];
// objects[0] = GameRankType.当局排行榜;
// objects[1] = playRankRootData.data;
// GameModule.UI.ShowUI<UIGameRankForm>(objects);
// }
// else
// {
// UITip.ShowMessageBox("排行榜结算异常,请联系管理员!!Code:" + playRankRootData.code, MessageShowType.TwoButton, () =>
// {
// }, () =>
// {
// });
// }
}
/// <summary>
/// 团队赛结算分配
/// </summary>
private void GameRankEnd()
{
// var datas = DataGameSceneManager.Instance.GetTeamActors();
// List<Actor> actors = new List<Actor>();
// foreach (var item in datas)
// {
// actors.Add(item.Value);
// }
// // 排序
// actors.Sort((a, b) =>
// {
// if (a.GetAllPlayerScore() > b.GetAllPlayerScore())
// {
// return -1;
// }
// else
// {
// return 1;
// }
// });
var datas = DataGameSceneManager.Instance.OnCheckWinTeam();
// // 获取获胜阵营玩家数据
// var us = actors[0].GetUnitPlayerDatas();
// // 分配
// for (int i = 0; i < us.Count; i++)
// {
// var d = us[i];
// int scale = EventConts.allScoreScale[i >= EventConts.allScoreScale.Length ? EventConts.allScoreScale.Length - 1 : i];
// long scoreScale = (long)(DataGameSceneManager.Instance.ScoreAllValue * (scale / 100.0f));
// //Log.Debug("玩家{0},分配所得积分:{1}", d.protCustMessageData.nickName, scoreScale);
// // 增加玩家当局积分
// d.m_Score += scoreScale;
// // 分配胜点
// //if (i < 3)
// //{
// // // Use Math.Ceiling to round up the winScale
// // long winScale = (long)Math.Ceiling(DataGameSceneManager.Instance.WinAllValue * (EventConts.allWinScale[i] / 100.0f));
// // Log.Debug("玩家{0},分配所得胜点:{1}", d.protCustMessageData.nickName, winScale);
// // d.m_AllWinCount = (int)winScale;
// //}
// if (i == 0 )
// {
// // Use Math.Ceiling to round up the winScale
// long winScale = DataGameSceneManager.Instance.WinAllValue;
// Log.Debug("玩家{0},分配所得胜点:{1}", d.protCustMessageData.nickName, winScale);
// d.m_AllWinCount = (int)winScale;
// }
// }
// List<PostPlayRankData> rankInfos = new List<PostPlayRankData>();
// // 上报排行榜数据
// var allDatas = DataGameSceneManager.Instance.GetUnitPlayerDatas();
// foreach (var item in allDatas)
// {
// PostPlayRankData postPlayRankData = new PostPlayRankData();
// postPlayRankData.uid = item.Key;
// postPlayRankData.name = item.Value.protCustMessageData.nickName;
// postPlayRankData.score = item.Value.m_Score;
// postPlayRankData.pay = 0;
// postPlayRankData.winCount = item.Value.m_AllWinCount;
// //postPlayRankData.useClientData = "1";
// postPlayRankData.avatar = item.Value.protCustMessageData.imgURL;
// postPlayRankData.exp = item.Value.protCustMessageData.rankRo.exp;
// postPlayRankData.lv = item.Value.protCustMessageData.rankRo.lv;
// rankInfos.Add(postPlayRankData);
// }
// rankInfos.Sort((a, b) =>
// {
// if (a.score > b.score)
// {
// return -1;
// }
// else
// {
// return 1;
// }
// });
// Log.Debug($"上传排行榜数据:{rankInfos.ToJson()}");
// string m_Json = EventConts.PlatformType == PlatformType.None ? HttpSendHelper.HttpPostRequest(EventConts.UploadScoreTest, rankInfos.ToJson()) : HttpSendHelper.HttpPostRequest(EventConts.UploadScore, rankInfos.ToJson());
// Log.Debug($"收到排行榜数据:{m_Json}");
// 获取获胜阵营玩家数据
var us = datas.GetUnitPlayerDatas();
// PlayRankRootData playRankRootData = JsonHelper.Deserialize<PlayRankRootData>(m_Json);
// if (playRankRootData != null && playRankRootData.code == 200)
// {
// // // 清理礼物队列
// // DataGameManager.Instance.m_VipItemDatas.Clear();
// // DataGameManager.Instance.m_GiftItemDatas.Clear();
// 分配
for (int i = 0; i < us.Count; i++)
{
var d = us[i];
int scale = EventConts.allScoreScale[i >= EventConts.allScoreScale.Length ? EventConts.allScoreScale.Length - 1 : i];
long scoreScale = (long)(DataGameSceneManager.Instance.ScoreAllValue * (scale / 100.0f));
// // 打开结算界面
// object[] objects = new object[2];
// objects[0] = GameRankType.当局排行榜;
// objects[1] = playRankRootData.data;
// GameModule.UI.ShowUI<UIGameRankForm>(objects);
// }
// else
// {
// UITip.ShowMessageBox("排行榜结算异常,请联系管理员!!Code:" + playRankRootData.code, MessageShowType.TwoButton, () =>
// {
//Log.Debug("玩家{0},分配所得积分:{1}", d.protCustMessageData.nickName, scoreScale);
// }, () =>
// {
// 增加玩家当局积分
d.m_Score += scoreScale;
// });
// }
// 分配胜点
//if (i < 3)
//{
// // Use Math.Ceiling to round up the winScale
// long winScale = (long)Math.Ceiling(DataGameSceneManager.Instance.WinAllValue * (EventConts.allWinScale[i] / 100.0f));
// Log.Debug("玩家{0},分配所得胜点:{1}", d.protCustMessageData.nickName, winScale);
// d.m_AllWinCount = (int)winScale;
//}
if (i == 0)
{
// Use Math.Ceiling to round up the winScale
long winScale = DataGameSceneManager.Instance.WinAllValue;
Log.Debug("玩家{0},分配所得胜点:{1}", d.protCustMessageData.nickName, winScale);
d.m_AllWinCount = (int)winScale;
}
}
List<PostPlayRankData> rankInfos = new List<PostPlayRankData>();
// 上报排行榜数据
var allDatas = DataGameSceneManager.Instance.GetUnitPlayerDatas();
foreach (var item in allDatas)
{
PostPlayRankData postPlayRankData = new PostPlayRankData();
postPlayRankData.uid = item.Key;
postPlayRankData.name = item.Value.protCustMessageData.nickName;
postPlayRankData.score = item.Value.m_Score;
postPlayRankData.pay = 0;
postPlayRankData.winCount = item.Value.m_AllWinCount;
//postPlayRankData.useClientData = "1";
postPlayRankData.avatar = item.Value.protCustMessageData.imgURL;
postPlayRankData.exp = item.Value.protCustMessageData.rankRo.exp;
postPlayRankData.lv = item.Value.protCustMessageData.rankRo.lv;
rankInfos.Add(postPlayRankData);
}
rankInfos.Sort((a, b) =>
{
if (a.score > b.score)
{
return -1;
}
else
{
return 1;
}
});
Log.Debug($"上传排行榜数据:{rankInfos.ToJson()}");
string m_Json = EventConts.PlatformType == PlatformType.None ? HttpSendHelper.HttpPostRequest(EventConts.UploadScoreTest, rankInfos.ToJson()) : HttpSendHelper.HttpPostRequest(EventConts.UploadScore, rankInfos.ToJson());
Log.Debug($"收到排行榜数据:{m_Json}");
PlayRankRootData playRankRootData = JsonHelper.Deserialize<PlayRankRootData>(m_Json);
if (playRankRootData != null && playRankRootData.code == 200)
{
// // 清理礼物队列
// DataGameManager.Instance.m_VipItemDatas.Clear();
// DataGameManager.Instance.m_GiftItemDatas.Clear();
// 打开结算界面
object[] objects = new object[2];
objects[0] = GameRankType.;
objects[1] = playRankRootData.data;
GameModule.UI.ShowUI<UIGameRankForm>(objects);
}
else
{
UITip.ShowMessageBox("排行榜结算异常,请联系管理员!!Code:" + playRankRootData.code, MessageShowType.TwoButton, () =>
{
}, () =>
{
});
}
}

View File

@ -872,7 +872,7 @@ namespace GameLogic
/// <summary>
/// 确认获胜阵营
/// </summary>
private ActorHItem OnCheckWinTeam()
public ActorHItem OnCheckWinTeam()
{
m_TeamSortList.Sort((a, b) =>
{

View File

@ -42,8 +42,59 @@ namespace GameLogic
#region
private void OnClick_CloseBtn()
{
MoveGameLoaclRank();
}
#endregion
protected override void OnCreate()
{
base.OnCreate();
ShowUIData();
// 新增一个定时器
GameModule.Timer.AddTimer((e) =>
{
MoveGameLoaclRank();
}, 5);
}
private void ShowUIData()
{
GameEndData gameEndData = UserData as GameEndData;
m_tmp_PlayerName.text = gameEndData.m_WinTeamName;
m_tmp_SbyrPlayerName.text = gameEndData.m_SbyrPlayerName;
m_tmp_ZjgxPlayerNAME.text = gameEndData.m_ZjgxPlayerName;
m_tmp_TzhsPlayerName.text = gameEndData.m_TzhsPlayerName;
m_tmp_DzzwPlayerName.text = gameEndData.m_DzzwPlayerName;
m_tmp_WinPlayerName.text = gameEndData.m_WinPlayerName;
}
/// <summary>
/// 前往结算界面
/// </summary>
private void MoveGameLoaclRank()
{
// 调用结算分配
DataGameModelManager.Instance.C2S_GameRankEnd();
//// 显示结算界面
//GameModule.UI.CloseUI<UIGameEndForm>();
}
}
}