Move DistanceToMapEdge from WorldUtils to Map
This commit is contained in:
@@ -564,5 +564,14 @@ namespace OpenRA
|
|||||||
r.Next(Bounds.Left, Bounds.Right),
|
r.Next(Bounds.Left, Bounds.Right),
|
||||||
r.Next(Bounds.Top, Bounds.Bottom));
|
r.Next(Bounds.Top, Bounds.Bottom));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public WRange DistanceToEdge(WPos pos, WVec dir)
|
||||||
|
{
|
||||||
|
var tl = Bounds.TopLeftAsCPos().TopLeft;
|
||||||
|
var br = Bounds.BottomRightAsCPos().BottomRight;
|
||||||
|
var x = dir.X == 0 ? int.MaxValue : ((dir.X < 0 ? tl.X : br.X) - pos.X) / dir.X;
|
||||||
|
var y = dir.Y == 0 ? int.MaxValue : ((dir.Y < 0 ? tl.Y : br.Y) - pos.Y) / dir.Y;
|
||||||
|
return new WRange(Math.Min(x, y) * dir.Length);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,15 +100,6 @@ namespace OpenRA
|
|||||||
: (edge ? w.Map.Bounds.Top : w.Map.Bounds.Bottom));
|
: (edge ? w.Map.Bounds.Top : w.Map.Bounds.Bottom));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static WRange DistanceToMapEdge(this World w, WPos pos, WVec dir)
|
|
||||||
{
|
|
||||||
var tl = w.Map.Bounds.TopLeftAsCPos().TopLeft;
|
|
||||||
var br = w.Map.Bounds.BottomRightAsCPos().BottomRight;
|
|
||||||
var x = dir.X == 0 ? int.MaxValue : ((dir.X < 0 ? tl.X : br.X) - pos.X) / dir.X;
|
|
||||||
var y = dir.Y == 0 ? int.MaxValue : ((dir.Y < 0 ? tl.Y : br.Y) - pos.Y) / dir.Y;
|
|
||||||
return new WRange(Math.Min(x, y) * dir.Length);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool HasVoices(this Actor a)
|
public static bool HasVoices(this Actor a)
|
||||||
{
|
{
|
||||||
var selectable = a.Info.Traits.GetOrDefault<SelectableInfo>();
|
var selectable = a.Info.Traits.GetOrDefault<SelectableInfo>();
|
||||||
|
|||||||
@@ -65,8 +65,8 @@ namespace OpenRA.Mods.RA
|
|||||||
|
|
||||||
var altitude = self.World.Map.Rules.Actors[info.UnitType].Traits.Get<PlaneInfo>().CruiseAltitude.Range;
|
var altitude = self.World.Map.Rules.Actors[info.UnitType].Traits.Get<PlaneInfo>().CruiseAltitude.Range;
|
||||||
var target = order.TargetLocation.CenterPosition + new WVec(0, 0, altitude);
|
var target = order.TargetLocation.CenterPosition + new WVec(0, 0, altitude);
|
||||||
var startEdge = target - (self.World.DistanceToMapEdge(target, -delta) + info.Cordon).Range * delta / 1024;
|
var startEdge = target - (self.World.Map.DistanceToEdge(target, -delta) + info.Cordon).Range * delta / 1024;
|
||||||
var finishEdge = target + (self.World.DistanceToMapEdge(target, delta) + info.Cordon).Range * delta / 1024;
|
var finishEdge = target + (self.World.Map.DistanceToEdge(target, delta) + info.Cordon).Range * delta / 1024;
|
||||||
|
|
||||||
Actor flare = null;
|
Actor flare = null;
|
||||||
Actor camera = null;
|
Actor camera = null;
|
||||||
|
|||||||
Reference in New Issue
Block a user