52 lines
1.4 KiB
C#
52 lines
1.4 KiB
C#
/*
|
|
* @Author: 白哉
|
|
* @Description: AI 行为类
|
|
* @Date: 2025年04月01日 星期二 14:04:35
|
|
* @Modify:
|
|
*/
|
|
|
|
|
|
using Logic.Action;
|
|
|
|
|
|
namespace Logic.AI
|
|
{
|
|
public enum AIDifficult
|
|
{
|
|
Simple,
|
|
Normal,
|
|
Hard,
|
|
}
|
|
|
|
|
|
public class AIActionBase
|
|
{
|
|
public CalculateResult Result;
|
|
public CommonActionParams Param;
|
|
public ActionLogicBase ActionLogic;
|
|
public bool IsInSight;
|
|
|
|
|
|
public AIActionBase(CommonActionParams param, ActionLogicBase action)
|
|
{
|
|
Param = param;
|
|
ActionLogic = action;
|
|
IsInSight = false;
|
|
}
|
|
|
|
public void CheckIsActionInPlayerSight()
|
|
{
|
|
IsInSight = true;
|
|
var player = Param.MapData.PlayerMap.SelfPlayerData;
|
|
if (Param.MapData.GridMap.GetGridDataByGid(Param.GridId, out var grid)
|
|
&& player.Sight.CheckIsInSight(grid.Id)) return;
|
|
if (Param.MapData.GetGridDataByUnitId(Param.UnitId, out var unitGrid)
|
|
&& player.Sight.CheckIsInSight(unitGrid.Id)) return;
|
|
if (Param.MapData.GetGridDataByUnitId(Param.TargetUnitId, out var targetUnit)
|
|
&& player.Sight.CheckIsInSight(targetUnit.Id)) return;
|
|
if (Param.MapData.GetGridDataByCityId(Param.CityId, out var cityGrid)
|
|
&& player.Sight.CheckIsInSight(cityGrid.Id)) return;
|
|
IsInSight = false;
|
|
}
|
|
}
|
|
} |