增加开局开队友首都视野

This commit is contained in:
wuwenbo 2026-05-28 16:29:17 +08:00
parent c76ca961f1
commit 7a501d15e0
2 changed files with 36 additions and 0 deletions

View File

@ -499,6 +499,7 @@ namespace RuntimeData
public void OnTurnStart(MapData map)
{
Turn++;
Main.PlayerLogic.UpdateAllTeammateCapitalSight(map);
//减少1点伟人复活冷却的时间点
for (int i = 0; i < 6; i++)
if (giantPenalty[i] > 0) giantPenalty[i]--;

View File

@ -1615,6 +1615,41 @@ namespace Logic
return UpdateSight_LogicView(mapData,playerData,mapData.GridMap.GetAroundGridIdList(radius,gridData,true),ViewNextFrame);
}
public void UpdateAllTeammateCapitalSight(MapData mapData)
{
if (mapData?.PlayerMap?.PlayerDataList == null) return;
foreach (var player in mapData.PlayerMap.PlayerDataList)
{
if (player == null || !player.IsSurvival) continue;
using var pooledGidList = THCollectionPool.GetListHandle<uint>(out var gidList);
foreach (var teammate in mapData.PlayerMap.PlayerDataList)
{
if (teammate == null || !teammate.IsSurvival || teammate.Id == player.Id) continue;
if (!CheckIsTeammate(mapData, player, teammate)) continue;
if (!mapData.GetCapitalCityDataByPlayerId(teammate.Id, out var capital)) continue;
if (!mapData.GetGridIdByCityId(capital.Id, out var capitalGid)) continue;
if (player.Sight.CheckIsInSight(capitalGid)) continue;
gidList.Add(capitalGid);
}
if (gidList.Count > 0)
UpdateSight_LogicView(mapData, player, gidList);
}
}
private static bool CheckIsTeammate(MapData mapData, PlayerData player, PlayerData targetPlayer)
{
if (mapData?.MapConfig != null && mapData.MapConfig.ArePlayersInSameTeam(player.Id, targetPlayer.Id))
return true;
if (player.GetCountryDiplomacyInfo(targetPlayer.Id, out var selfToTarget) && selfToTarget.IsTeammate)
return true;
return targetPlayer.GetCountryDiplomacyInfo(player.Id, out var targetToSelf) && targetToSelf.IsTeammate;
}
public void DebugGetAllSight(MapData mapData, PlayerData playerData)
{
using var pooledGidList = THCollectionPool.GetListHandle<uint>(out var gidList);