TH1/Unity/Assets/Scripts/TH1_Logic/Skill/AllSkill/QueenTerritoryMoveSkill.cs
2026-06-05 19:59:32 +08:00

60 lines
1.7 KiB
C#

/*
* @Author: 白哉
* @Description:
* @Date: 2026年06月05日 星期五
* @Modify:
*/
using RuntimeData;
namespace Logic.Skill
{
public partial class QueenTerritoryMoveSkill : SkillBase
{
public QueenTerritoryMoveSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 2;
}
public override SkillType GetSkillType()
{
return SkillType.QueenTerritoryMove;
}
public override int GetExtraMoveRange(MapData mapData, UnitData self)
{
if (mapData == null || self == null) return 0;
if (!mapData.GetPlayerIdByUnitId(self.Id, out var ownerId)) return 0;
if (!mapData.GetGridDataByUnitId(self.Id, out var selfGrid)) return 0;
if (IsFriendlyTerritory(mapData, selfGrid, ownerId)) return 1;
var aroundBuf = RentAroundBuf();
mapData.GridMap.GetAroundGridData(1, 1, selfGrid, aroundBuf);
foreach (var grid in aroundBuf)
{
if (!IsFriendlyTerritory(mapData, grid, ownerId)) continue;
ReturnAroundBuf();
return 1;
}
ReturnAroundBuf();
return 0;
}
private static bool IsFriendlyTerritory(MapData mapData, GridData grid, uint ownerId)
{
return grid != null
&& mapData.GetPlayerDataByTerritoryGridId(grid.Id, out var territoryPlayer)
&& mapData.SameUnion(ownerId, territoryPlayer.Id);
}
public override bool ReservedOnTransform(UnitData self, UnitFullType fullType)
{
return true;
}
}
}