|
|
@@ -30,6 +30,7 @@ using OpenCards.Server.Common.ORM;
|
|
|
using OpenCards.Server.Core.ORM;
|
|
|
using OpenCards.Server.Core.Table;
|
|
|
using OpenCards.Server.Logic.Module;
|
|
|
+using static Org.BouncyCastle.Math.EC.ECCurve;
|
|
|
|
|
|
namespace OpenCards.Server.Arena
|
|
|
{
|
|
|
@@ -51,7 +52,7 @@ namespace OpenCards.Server.Arena
|
|
|
private Action<int> afterGatherAction;
|
|
|
private string fightPostUrl;
|
|
|
private IAsyncLock _asyncDataLock;
|
|
|
- protected bool useTest = false; //是否使用测试逻辑
|
|
|
+ protected bool useTest = true; //是否使用测试逻辑
|
|
|
protected bool useOpenStateTest = false; //开关是否使用测试逻辑
|
|
|
protected bool useParallel = true; //是否使用并行
|
|
|
private static SemaphoreSlim distributionLock = new SemaphoreSlim(1);
|
|
|
@@ -440,7 +441,7 @@ namespace OpenCards.Server.Arena
|
|
|
{
|
|
|
return rsp;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
rsp.SeasonState = await CheckSeaonDataRefresh(); //检测本赛区的赛季更新
|
|
|
await CheckGatherContestants();
|
|
|
var entranceState = await GetEntranceState();
|
|
|
@@ -456,7 +457,7 @@ namespace OpenCards.Server.Arena
|
|
|
{
|
|
|
return rsp;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
rsp.WheelBattleTeamCount = regionDataMapping.WheelBattleTeamCount; //获取车轮战队伍数
|
|
|
//获取上阵对数增加所需赛季数
|
|
|
if (regionDataMapping.WheelBattleTeamCount >= ArenaUtils.WheelBattleTeamCountUpperLimit)
|
|
|
@@ -1499,7 +1500,7 @@ namespace OpenCards.Server.Arena
|
|
|
}
|
|
|
foreach (var competitionDataList in dataIEnumerable)
|
|
|
{
|
|
|
- foreach(var contestant in competitionDataList)
|
|
|
+ foreach (var contestant in competitionDataList)
|
|
|
{
|
|
|
if (contestant.LastestStage >= stage)
|
|
|
{
|
|
|
@@ -1932,7 +1933,7 @@ namespace OpenCards.Server.Arena
|
|
|
var groupContestantList = new List<RoleArenaPinnacleCompetitionData>();
|
|
|
foreach (var item in dataIEnumerable)
|
|
|
{
|
|
|
- foreach(var data in item)
|
|
|
+ foreach (var data in item)
|
|
|
{
|
|
|
groupContestantList.Add(data);
|
|
|
}
|
|
|
@@ -2122,7 +2123,7 @@ namespace OpenCards.Server.Arena
|
|
|
ServerID = role.ServerId,
|
|
|
};
|
|
|
uuidMap.TryAddOrUpdate(recordData.LeftRole.RoleData.RoleUUID, true);
|
|
|
- foreach(var hero in fightData.LeftRole.RoleHeroList)
|
|
|
+ foreach (var hero in fightData.LeftRole.RoleHeroList)
|
|
|
{
|
|
|
ClientArenaPinnacleFightHeroData clientHeroData = new()
|
|
|
{
|
|
|
@@ -2188,7 +2189,7 @@ namespace OpenCards.Server.Arena
|
|
|
for (int i = 0; i < rsp.RecordMap.Count; i++)
|
|
|
{
|
|
|
var list = rsp.RecordMap[i];
|
|
|
- foreach(var data in list)
|
|
|
+ foreach (var data in list)
|
|
|
{
|
|
|
var index = uuidList.FindIndex(uuid => uuid == data.LeftRole.RoleData.RoleUUID);
|
|
|
var player = playerData.PlayerList[index];
|
|
|
@@ -2263,7 +2264,7 @@ namespace OpenCards.Server.Arena
|
|
|
}
|
|
|
|
|
|
var stage = GetStage();
|
|
|
- if (stage == SyncClientPinnacleStageType.Vacuum
|
|
|
+ if (stage == SyncClientPinnacleStageType.Vacuum
|
|
|
|| stage == SyncClientPinnacleStageType.Offseason
|
|
|
|| stage == SyncClientPinnacleStageType.CompetitionPrepare)
|
|
|
{
|
|
|
@@ -3378,7 +3379,7 @@ namespace OpenCards.Server.Arena
|
|
|
{
|
|
|
var arenaPinnacleServerDataList = serverSplitList[i];
|
|
|
int regionId = lastestRegionData.RegionId + i + 1;
|
|
|
- foreach(var serverData in arenaPinnacleServerDataList)
|
|
|
+ foreach (var serverData in arenaPinnacleServerDataList)
|
|
|
{
|
|
|
await RefreshRegionIdToCenterService(serverData.ServerId, regionId);
|
|
|
serverData.ObsoleteRegionId = serverData.RegionId;
|
|
|
@@ -3462,6 +3463,9 @@ namespace OpenCards.Server.Arena
|
|
|
|
|
|
await this.dataMapping.FlushAsync();
|
|
|
|
|
|
+ if (regionID <= 0)
|
|
|
+ regionID = dataMapping.RegionDataMap.Values.First(r => r.Data.ServerList.Exists(s => s.ServerId == serverId)).RegionId;
|
|
|
+
|
|
|
return regionID;
|
|
|
}
|
|
|
|
|
|
@@ -3661,7 +3665,7 @@ namespace OpenCards.Server.Arena
|
|
|
|
|
|
int tempServerCount = tempServerList.Count;
|
|
|
//更新赛区id和老赛区id存储记录
|
|
|
- foreach(var server in tempServerList)
|
|
|
+ foreach (var server in tempServerList)
|
|
|
{
|
|
|
server.ObsoleteRegionId = server.RegionId;
|
|
|
server.RegionId = regionDataMap.RegionId;
|
|
|
@@ -3877,7 +3881,7 @@ namespace OpenCards.Server.Arena
|
|
|
if (emptyServerRegionIdList.Count > 0)
|
|
|
{
|
|
|
//移除分配完后已经空服务器的赛区
|
|
|
- foreach(var regionId in emptyServerRegionIdList)
|
|
|
+ foreach (var regionId in emptyServerRegionIdList)
|
|
|
{
|
|
|
this.dataMapping.RegionDataMap.Remove(regionId);
|
|
|
}
|
|
|
@@ -4037,6 +4041,7 @@ namespace OpenCards.Server.Arena
|
|
|
var now = TimeUtils.CurrentTimeMs;
|
|
|
if (now >= gatherTimeStamp && now < GroupStartUTCTime.GetTimeStamp())
|
|
|
{
|
|
|
+ this.dataMapping.GatherContestantsState = ContestantGatherStateType.NotStartGatherYet;
|
|
|
if (this.dataMapping.GatherContestantsState == ContestantGatherStateType.NotStartGatherYet)
|
|
|
{
|
|
|
this.dataMapping.GatherContestantsState = ContestantGatherStateType.IsGathering;
|
|
|
@@ -4148,7 +4153,7 @@ namespace OpenCards.Server.Arena
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if(serverData == null || !serverData.HasValue)
|
|
|
+ if (serverData == null || !serverData.HasValue)
|
|
|
{
|
|
|
this.GetErrorCode($"Server{serverId} gather arena serviceType:{GetPinnacleServiceType()} contestants to arena pinnacle server {serverId} in not in serverList!");
|
|
|
}
|
|
|
@@ -4167,7 +4172,7 @@ namespace OpenCards.Server.Arena
|
|
|
log.Warn($"gathering {role.RoleUUID} deviceId is null or empty {role.DeviceID}!");
|
|
|
}
|
|
|
|
|
|
- if(string.IsNullOrWhiteSpace(role.RoleUUID))
|
|
|
+ if (string.IsNullOrWhiteSpace(role.RoleUUID))
|
|
|
{
|
|
|
this.GetErrorCode($"Region {regionDataMapping.RegionId} Server{serverId} gather arena serverType:{GetPinnacleServiceType()} contestants to arena pinnacle has null or empty role {role.RoleUUID}!");
|
|
|
}
|
|
|
@@ -4312,7 +4317,7 @@ namespace OpenCards.Server.Arena
|
|
|
var serverListRsp = await accountService.CallAsync<GetServerDataListResponse>(new GetServerDataListRequest());
|
|
|
if (Response.CheckSuccess(serverListRsp))
|
|
|
{
|
|
|
- foreach(var serverData in serverListRsp.ServerDataList)
|
|
|
+ foreach (var serverData in serverListRsp.ServerDataList)
|
|
|
{
|
|
|
var connectorService = await RpcUtils.GetConnectorService(this.Provider, serverData.ID.ToString());
|
|
|
if (connectorService != null)
|
|
|
@@ -4600,7 +4605,7 @@ namespace OpenCards.Server.Arena
|
|
|
/// <returns></returns>
|
|
|
private bool IsCompetitionStage(SyncClientPinnacleStageType stage)
|
|
|
{
|
|
|
- return stage > SyncClientPinnacleStageType.CompetitionPrepare;
|
|
|
+ return stage > SyncClientPinnacleStageType.CompetitionPrepare && stage <= SyncClientPinnacleStageType.ChampionshipFinals;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -5335,7 +5340,7 @@ namespace OpenCards.Server.Arena
|
|
|
|
|
|
int tempCount = 0;
|
|
|
int innerGroupId = 1;
|
|
|
- foreach(var groupMember in groupList)
|
|
|
+ foreach (var groupMember in groupList)
|
|
|
{
|
|
|
if (groupMember.LastestStage == SyncClientPinnacleStageType.Ro64)
|
|
|
{
|
|
|
@@ -5479,7 +5484,7 @@ namespace OpenCards.Server.Arena
|
|
|
|
|
|
int tempCount = 0;
|
|
|
int innerGroupId = 1;
|
|
|
- foreach(var groupMember in groupList)
|
|
|
+ foreach (var groupMember in groupList)
|
|
|
{
|
|
|
if (groupMember.LastestStage == nextStageType)
|
|
|
{
|