bug修改
This commit is contained in:
parent
404935cc9f
commit
67c2c36736
@ -492,15 +492,17 @@ namespace Logic.AI
|
||||
var techType = (TechType)i;
|
||||
var techSet = Table.Instance.TechDataAssets.GetNextTechs(techType);
|
||||
var score = 0f;
|
||||
foreach (var id in Player.LastAttackPlayers)
|
||||
foreach (var player in Map.PlayerMap.PlayerDataList)
|
||||
{
|
||||
score += CalCountryTechGapScore(techType, id) * 2;
|
||||
if (player == Player) continue;
|
||||
score += CalCountryTechGapScore(techType, player.Id) * 2;
|
||||
}
|
||||
foreach (var tech in techSet)
|
||||
{
|
||||
foreach (var id in Player.LastAttackPlayers)
|
||||
foreach (var player in Map.PlayerMap.PlayerDataList)
|
||||
{
|
||||
score += CalCountryTechGapScore(tech, id);
|
||||
if (player == Player) continue;
|
||||
score += CalCountryTechGapScore(tech, player.Id);
|
||||
}
|
||||
}
|
||||
|
||||
@ -519,7 +521,9 @@ namespace Logic.AI
|
||||
GetUnitTypeByTech(techType, out var unitType, out var giantType);
|
||||
if (!Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(unitType, giantType, out var info))
|
||||
return 0;
|
||||
|
||||
var selfCity = new HashSet<CityData>();
|
||||
Map.GetCityDataListByPlayerId(Player.Id, selfCity);
|
||||
if (selfCity.Count == 0) return 0;
|
||||
var unitList = new List<UnitData>();
|
||||
Map.GetUnitDataListByPlayerId(playerId, unitList);
|
||||
var score = 0f;
|
||||
@ -527,8 +531,18 @@ namespace Logic.AI
|
||||
{
|
||||
if (!Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(targetUnit.UnitType, targetUnit.GiantType, out var targetInfo))
|
||||
continue;
|
||||
if (!Map.GetGridDataByUnitId(targetUnit.Id, out var unitGrid)) continue;
|
||||
var minDis = int.MaxValue;
|
||||
foreach (var city in selfCity)
|
||||
{
|
||||
if (!Map.GetGridDataByCityId(city.Id, out var cityGrid)) continue;
|
||||
var dis = Map.GridMap.CalcDistance(unitGrid, cityGrid);
|
||||
if (dis < minDis) minDis = dis;
|
||||
}
|
||||
|
||||
score += CalUnitCounterScore(info.UnitType, targetInfo.UnitType);
|
||||
score -= CalUnitCounterScore(targetInfo.UnitType, info.UnitType);
|
||||
score /= minDis;
|
||||
}
|
||||
|
||||
return score;
|
||||
@ -1210,6 +1224,7 @@ namespace Logic.AI
|
||||
unitType = UnitType.None;
|
||||
giantType = GiantType.None;
|
||||
if (techType == TechType.Archery) unitType = UnitType.Archer;
|
||||
if (techType == TechType.Riding) unitType = UnitType.Rider;
|
||||
if (techType == TechType.Strategy) unitType = UnitType.Defender;
|
||||
if (techType == TechType.Chivalry) unitType = UnitType.Knights;
|
||||
if (techType == TechType.Mathematics) unitType = UnitType.Catapult;
|
||||
@ -1261,7 +1276,7 @@ namespace Logic.AI
|
||||
var path = PathFinder.FindPath((int)Map.MapConfig.Width, (int)Map.MapConfig.Height,
|
||||
new (selfGrid.Pos.X, selfGrid.Pos.Y), new (cityGrid.Pos.X, cityGrid.Pos.Y), Map, Player);
|
||||
if (!path.found) continue;
|
||||
if (path.length < minDistance) continue;
|
||||
if (path.length > minDistance) continue;
|
||||
minDistance = path.length;
|
||||
}
|
||||
}
|
||||
|
||||
@ -940,8 +940,7 @@ namespace Logic.AI
|
||||
var targetScore = 0;
|
||||
foreach (var unit in param.MapData.UnitMap.UnitList)
|
||||
{
|
||||
if (!param.MapData.GetPlayerDataByUnitId(unit.Id, out var targetPlayer)) continue;
|
||||
if (!selfUnits.Contains(unit) && targetPlayer.Id != data.AttackPlayer.Id) continue;
|
||||
if (!selfUnits.Contains(unit)) continue;
|
||||
if (!Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(unit.UnitType, unit.GiantType, out var info))
|
||||
continue;
|
||||
if (selfUnits.Contains(unit))
|
||||
@ -982,8 +981,9 @@ namespace Logic.AI
|
||||
var targetScore = 0;
|
||||
foreach (var unit in param.MapData.UnitMap.UnitList)
|
||||
{
|
||||
if (!param.MapData.GetPlayerDataByUnitId(unit.Id, out var targetPlayer)) continue;
|
||||
if (!selfUnits.Contains(unit) && !data.Player.LastAttackPlayers.Contains(targetPlayer.Id)) continue;
|
||||
if (!param.MapData.GetGridDataByUnitId(unit.Id, out var unitGrid)) continue;
|
||||
var dis = param.MapData.GridMap.CalcDistance(cityGrid, unitGrid);
|
||||
if (dis > 6) continue;
|
||||
if (!Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(unit.UnitType, unit.GiantType, out var info))
|
||||
continue;
|
||||
if (selfUnits.Contains(unit))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user