Update ICustomMovementLayer to not depend on actor for costs.

No implementations require the actor.
This commit is contained in:
RoosterDragon
2021-09-25 14:28:00 +01:00
committed by Paul Chote
parent 6f3b4ecae9
commit 3a020e96fe
6 changed files with 30 additions and 26 deletions

View File

@@ -11,6 +11,7 @@
using System.Collections.Generic;
using OpenRA.Graphics;
using OpenRA.Mods.Common.Pathfinder;
using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits
@@ -69,7 +70,7 @@ namespace OpenRA.Mods.Common.Traits
}
}
bool ICustomMovementLayer.EnabledForActor(ActorInfo a, LocomotorInfo li) { return enabled; }
bool ICustomMovementLayer.EnabledForLocomotor(LocomotorInfo li) { return enabled; }
byte ICustomMovementLayer.Index => CustomMovementLayerType.ElevatedBridge;
bool ICustomMovementLayer.InteractsWithDefaultLayer => true;
bool ICustomMovementLayer.ReturnToGroundLayerOnIdle => false;
@@ -79,14 +80,14 @@ namespace OpenRA.Mods.Common.Traits
return cellCenters[cell];
}
int ICustomMovementLayer.EntryMovementCost(ActorInfo a, LocomotorInfo li, CPos cell)
int ICustomMovementLayer.EntryMovementCost(LocomotorInfo li, CPos cell)
{
return ends.Contains(cell) ? 0 : int.MaxValue;
return ends.Contains(cell) ? 0 : PathGraph.CostForInvalidCell;
}
int ICustomMovementLayer.ExitMovementCost(ActorInfo a, LocomotorInfo li, CPos cell)
int ICustomMovementLayer.ExitMovementCost(LocomotorInfo li, CPos cell)
{
return ends.Contains(cell) ? 0 : int.MaxValue;
return ends.Contains(cell) ? 0 : PathGraph.CostForInvalidCell;
}
byte ICustomMovementLayer.GetTerrainIndex(CPos cell)

View File

@@ -10,6 +10,7 @@
#endregion
using System.Linq;
using OpenRA.Mods.Common.Pathfinder;
using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits
@@ -62,7 +63,7 @@ namespace OpenRA.Mods.Common.Traits
}
}
bool ICustomMovementLayer.EnabledForActor(ActorInfo a, LocomotorInfo li) { return li is JumpjetLocomotorInfo; }
bool ICustomMovementLayer.EnabledForLocomotor(LocomotorInfo li) { return li is JumpjetLocomotorInfo; }
byte ICustomMovementLayer.Index => CustomMovementLayerType.Jumpjet;
bool ICustomMovementLayer.InteractsWithDefaultLayer => true;
bool ICustomMovementLayer.ReturnToGroundLayerOnIdle => true;
@@ -86,16 +87,16 @@ namespace OpenRA.Mods.Common.Traits
return map.Ramp[cell] == 0;
}
int ICustomMovementLayer.EntryMovementCost(ActorInfo a, LocomotorInfo li, CPos cell)
int ICustomMovementLayer.EntryMovementCost(LocomotorInfo li, CPos cell)
{
var jli = (JumpjetLocomotorInfo)li;
return ValidTransitionCell(cell, jli) ? jli.JumpjetTransitionCost : int.MaxValue;
return ValidTransitionCell(cell, jli) ? jli.JumpjetTransitionCost : PathGraph.CostForInvalidCell;
}
int ICustomMovementLayer.ExitMovementCost(ActorInfo a, LocomotorInfo li, CPos cell)
int ICustomMovementLayer.ExitMovementCost(LocomotorInfo li, CPos cell)
{
var jli = (JumpjetLocomotorInfo)li;
return ValidTransitionCell(cell, jli) ? jli.JumpjetTransitionCost : int.MaxValue;
return ValidTransitionCell(cell, jli) ? jli.JumpjetTransitionCost : PathGraph.CostForInvalidCell;
}
byte ICustomMovementLayer.GetTerrainIndex(CPos cell)

View File

@@ -10,6 +10,7 @@
#endregion
using System.Linq;
using OpenRA.Mods.Common.Pathfinder;
using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits
@@ -61,7 +62,7 @@ namespace OpenRA.Mods.Common.Traits
}
}
bool ICustomMovementLayer.EnabledForActor(ActorInfo a, LocomotorInfo li) { return li is SubterraneanLocomotorInfo; }
bool ICustomMovementLayer.EnabledForLocomotor(LocomotorInfo li) { return li is SubterraneanLocomotorInfo; }
byte ICustomMovementLayer.Index => CustomMovementLayerType.Subterranean;
bool ICustomMovementLayer.InteractsWithDefaultLayer => false;
bool ICustomMovementLayer.ReturnToGroundLayerOnIdle => true;
@@ -84,16 +85,16 @@ namespace OpenRA.Mods.Common.Traits
return map.Ramp[cell] == 0;
}
int ICustomMovementLayer.EntryMovementCost(ActorInfo a, LocomotorInfo li, CPos cell)
int ICustomMovementLayer.EntryMovementCost(LocomotorInfo li, CPos cell)
{
var sli = (SubterraneanLocomotorInfo)li;
return ValidTransitionCell(cell, sli) ? sli.SubterraneanTransitionCost : int.MaxValue;
return ValidTransitionCell(cell, sli) ? sli.SubterraneanTransitionCost : PathGraph.CostForInvalidCell;
}
int ICustomMovementLayer.ExitMovementCost(ActorInfo a, LocomotorInfo li, CPos cell)
int ICustomMovementLayer.ExitMovementCost(LocomotorInfo li, CPos cell)
{
var sli = (SubterraneanLocomotorInfo)li;
return ValidTransitionCell(cell, sli) ? sli.SubterraneanTransitionCost : int.MaxValue;
return ValidTransitionCell(cell, sli) ? sli.SubterraneanTransitionCost : PathGraph.CostForInvalidCell;
}
byte ICustomMovementLayer.GetTerrainIndex(CPos cell)

View File

@@ -11,6 +11,7 @@
using System.Collections.Generic;
using OpenRA.Graphics;
using OpenRA.Mods.Common.Pathfinder;
using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits
@@ -68,7 +69,7 @@ namespace OpenRA.Mods.Common.Traits
}
}
bool ICustomMovementLayer.EnabledForActor(ActorInfo a, LocomotorInfo li) { return enabled; }
bool ICustomMovementLayer.EnabledForLocomotor(LocomotorInfo li) { return enabled; }
byte ICustomMovementLayer.Index => CustomMovementLayerType.Tunnel;
bool ICustomMovementLayer.InteractsWithDefaultLayer => false;
bool ICustomMovementLayer.ReturnToGroundLayerOnIdle => true;
@@ -78,14 +79,14 @@ namespace OpenRA.Mods.Common.Traits
return cellCenters[cell];
}
int ICustomMovementLayer.EntryMovementCost(ActorInfo a, LocomotorInfo li, CPos cell)
int ICustomMovementLayer.EntryMovementCost(LocomotorInfo li, CPos cell)
{
return portals.Contains(cell) ? 0 : int.MaxValue;
return portals.Contains(cell) ? 0 : PathGraph.CostForInvalidCell;
}
int ICustomMovementLayer.ExitMovementCost(ActorInfo a, LocomotorInfo li, CPos cell)
int ICustomMovementLayer.ExitMovementCost(LocomotorInfo li, CPos cell)
{
return portals.Contains(cell) ? 0 : int.MaxValue;
return portals.Contains(cell) ? 0 : PathGraph.CostForInvalidCell;
}
byte ICustomMovementLayer.GetTerrainIndex(CPos cell)