Merge branch 'main' of http://10.27.16.144:3000/kawagiri/TH1
This commit is contained in:
commit
4fde5ed80c
@ -109,6 +109,25 @@ namespace Logic.AI
|
||||
{
|
||||
MaxScoreAction.Param.MapData = _mapData;
|
||||
MaxScoreAction.Param.RefreshParams();
|
||||
|
||||
if (MaxScoreAction.ActionLogic is UnitAttackAction)
|
||||
{
|
||||
_mapData.GetGridDataByUnitId(MaxScoreAction.Param.UnitData.Id, out var grid);
|
||||
_mapData.GetGridDataByUnitId(MaxScoreAction.Param.TargetUnitData.Id, out var target);
|
||||
Debug.Log($"小兵攻击 {MaxScoreAction.Param.UnitData.Id}, " +
|
||||
$"位置{grid.Pos.X}, {grid.Pos.Y}, " +
|
||||
$"目标 {MaxScoreAction.Param.TargetUnitData.Id}, " +
|
||||
$"目标位置{target.Pos.X}, {target.Pos.Y}");
|
||||
}
|
||||
|
||||
if (MaxScoreAction.ActionLogic is UnitMoveAction)
|
||||
{
|
||||
_mapData.GetGridDataByUnitId(MaxScoreAction.Param.UnitData.Id, out var grid);
|
||||
Debug.Log($"小兵移动 {MaxScoreAction.Param.UnitData.Id}, " +
|
||||
$"位置{grid.Pos.X}, {grid.Pos.Y}, " +
|
||||
$"目标 {MaxScoreAction.Param.GridData.Pos.X}, {MaxScoreAction.Param.GridData.Pos.Y}");
|
||||
}
|
||||
|
||||
MaxScoreAction.ActionLogic.Execute(MaxScoreAction.Param);
|
||||
MaxScoreAction = null;
|
||||
AILogicState = AILogicState.Pausing;
|
||||
|
||||
@ -49,7 +49,12 @@ namespace Logic.Action
|
||||
public UnitData TargetUnitData { get; set; }
|
||||
public MainObjectType MainObjectType { get; set; }
|
||||
|
||||
|
||||
public uint PlayerId;
|
||||
public uint UnitId;
|
||||
public uint CityId;
|
||||
public uint GridId;
|
||||
public uint TargetUnitId;
|
||||
|
||||
public CommonActionParams(MapData mapData=null, PlayerData playerData=null,
|
||||
UnitData unitData=null, CityData cityData=null, GridData gridData=null, UnitData targetUnit=null, MainObjectType mainObjectType=MainObjectType.None)
|
||||
{
|
||||
@ -60,27 +65,38 @@ namespace Logic.Action
|
||||
GridData = gridData;
|
||||
TargetUnitData = targetUnit;
|
||||
MainObjectType = mainObjectType;
|
||||
|
||||
PlayerId = 0;
|
||||
UnitId = 0;
|
||||
CityId = 0;
|
||||
GridId = 0;
|
||||
TargetUnitId = 0;
|
||||
if (PlayerData != null) PlayerId = PlayerData.Id;
|
||||
if (UnitData != null) UnitId = UnitData.Id;
|
||||
if (CityData != null) CityId = CityData.Id;
|
||||
if (GridData != null) GridId = GridData.Id;
|
||||
if (TargetUnitData != null) TargetUnitId = TargetUnitData.Id;
|
||||
}
|
||||
|
||||
public void RefreshParams()
|
||||
{
|
||||
if (PlayerData != null && MapData.PlayerMap.GetPlayerDataByPlayerID(PlayerData.Id, out var player))
|
||||
if (PlayerId != 0 && MapData.PlayerMap.GetPlayerDataByPlayerID(PlayerId, out var player))
|
||||
{
|
||||
PlayerData = player;
|
||||
}
|
||||
if (UnitData != null && MapData.UnitMap.GetUnitDataByUnitId(UnitData.Id, out var unit))
|
||||
if (UnitId != 0 && MapData.UnitMap.GetUnitDataByUnitId(UnitId, out var unit))
|
||||
{
|
||||
UnitData = unit;
|
||||
}
|
||||
if (CityData != null && MapData.CityMap.GetCityDataByTerritoryGridId(CityData.Id, out var city))
|
||||
if (CityId != 0 && MapData.CityMap.GetCityDataByTerritoryGridId(CityId, out var city))
|
||||
{
|
||||
CityData = city;
|
||||
}
|
||||
if (GridData != null && MapData.GridMap.GetGridDataByGid(GridData.Id, out var grid))
|
||||
if (GridId != 0 && MapData.GridMap.GetGridDataByGid(GridId, out var grid))
|
||||
{
|
||||
GridData = grid;
|
||||
}
|
||||
if (TargetUnitData != null && MapData.UnitMap.GetUnitDataByUnitId(TargetUnitData.Id, out var target))
|
||||
if (TargetUnitId != 0 && MapData.UnitMap.GetUnitDataByUnitId(TargetUnitId, out var target))
|
||||
{
|
||||
TargetUnitData = target;
|
||||
}
|
||||
@ -457,12 +473,22 @@ namespace Logic.Action
|
||||
{
|
||||
var result = Main.UnitLogic.CheckUnitCanMoveOrAttack(map, unit, grid);
|
||||
if (result == MoveAttackType.None) continue;
|
||||
|
||||
if (result == MoveAttackType.Attack)
|
||||
{
|
||||
if (unit.AP <= 0 || !map.GetUnitDataByGid(grid.Id, out var targetUnit)) continue;
|
||||
var param = new CommonActionParams(map, unitData:unit, targetUnit:targetUnit);
|
||||
param.RefreshParams();
|
||||
actionList.Add(new AIActionBase(param, attackAction));
|
||||
|
||||
if (map.GetGridDataByUnitId(unit.Id, out var unitGrid))
|
||||
{
|
||||
Debug.Log($"生成Action 小兵攻击 {unit.Id}, 攻击范围{unit.GetAttackRange()}" +
|
||||
$"位置{unitGrid.Pos.X}, {unitGrid.Pos.Y}, " +
|
||||
$"目标 {targetUnit.Id}, " +
|
||||
$"目标位置{grid.Pos.X}, {grid.Pos.Y}");
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -1583,6 +1609,14 @@ namespace Logic.Action
|
||||
|
||||
public override bool Execute(CommonActionParams actionParams)
|
||||
{
|
||||
if (actionParams.MapData.GetGridDataByUnitId(actionParams.UnitData.Id, out var unitGrid))
|
||||
{
|
||||
var distance = actionParams.MapData.GridMap.CalcDistance(unitGrid, actionParams.GridData);
|
||||
if (distance > 3)
|
||||
{
|
||||
Debug.LogError($"!!!");
|
||||
}
|
||||
}
|
||||
Main.UnitLogic.MoveTo(actionParams.MapData, actionParams.UnitData, actionParams.GridData);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -78,7 +78,6 @@ namespace Logic
|
||||
|
||||
public bool Attack(MapData mapData, UnitData unit1, UnitData unit2)
|
||||
{
|
||||
|
||||
if (!mapData.GetPlayerDataByUnitId(unit1.Id, out var player1)) return false;
|
||||
if (!mapData.GetPlayerDataByUnitId(unit2.Id, out var player2)) return false;
|
||||
if (!mapData.GetCityDataByUnitId(unit1.Id, out var city1)) return false;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user