Add ScreenMap.ActorsAt(MouseInput) overload.
This commit is contained in:
@@ -19,7 +19,7 @@ namespace OpenRA.Orders
|
|||||||
{
|
{
|
||||||
public IEnumerable<Order> Order(World world, CPos xy, MouseInput mi)
|
public IEnumerable<Order> Order(World world, CPos xy, MouseInput mi)
|
||||||
{
|
{
|
||||||
var underCursor = world.ScreenMap.ActorsAt(Game.viewport.ViewToWorldPx(mi.Location))
|
var underCursor = world.ScreenMap.ActorsAt(mi)
|
||||||
.Where(a => !world.FogObscures(a) && a.HasTrait<ITargetable>())
|
.Where(a => !world.FogObscures(a) && a.HasTrait<ITargetable>())
|
||||||
.OrderByDescending(a => a.Info.SelectionPriority())
|
.OrderByDescending(a => a.Info.SelectionPriority())
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
@@ -60,7 +60,7 @@ namespace OpenRA.Orders
|
|||||||
public string GetCursor(World world, CPos xy, MouseInput mi)
|
public string GetCursor(World world, CPos xy, MouseInput mi)
|
||||||
{
|
{
|
||||||
var useSelect = false;
|
var useSelect = false;
|
||||||
var underCursor = world.ScreenMap.ActorsAt(Game.viewport.ViewToWorldPx(mi.Location))
|
var underCursor = world.ScreenMap.ActorsAt(mi)
|
||||||
.Where(a => !world.FogObscures(a) && a.HasTrait<ITargetable>())
|
.Where(a => !world.FogObscures(a) && a.HasTrait<ITargetable>())
|
||||||
.OrderByDescending(a => a.Info.SelectionPriority())
|
.OrderByDescending(a => a.Info.SelectionPriority())
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
|
|||||||
@@ -127,6 +127,11 @@ namespace OpenRA.Traits
|
|||||||
.Select(kv => kv.Key);
|
.Select(kv => kv.Key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IEnumerable<Actor> ActorsAt(MouseInput mi)
|
||||||
|
{
|
||||||
|
return ActorsAt(worldRenderer.Viewport.ViewToWorldPx(mi.Location));
|
||||||
|
}
|
||||||
|
|
||||||
public IEnumerable<Actor> ActorsInBox(int2 a, int2 b)
|
public IEnumerable<Actor> ActorsInBox(int2 a, int2 b)
|
||||||
{
|
{
|
||||||
return ActorsInBox(Rectangle.FromLTRB(Math.Min(a.X, b.X), Math.Min(a.Y, b.Y), Math.Max(a.X, b.X), Math.Max(a.Y, b.Y)));
|
return ActorsInBox(Rectangle.FromLTRB(Math.Min(a.X, b.X), Math.Min(a.Y, b.Y), Math.Max(a.X, b.X), Math.Max(a.Y, b.Y)));
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ namespace OpenRA.Mods.RA
|
|||||||
|
|
||||||
static IEnumerable<Actor> FriendlyGuardableUnits(World world, MouseInput mi)
|
static IEnumerable<Actor> FriendlyGuardableUnits(World world, MouseInput mi)
|
||||||
{
|
{
|
||||||
return world.ScreenMap.ActorsAt(Game.viewport.ViewToWorldPx(mi.Location))
|
return world.ScreenMap.ActorsAt(mi)
|
||||||
.Where(a => !world.FogObscures(a) && !a.IsDead() &&
|
.Where(a => !world.FogObscures(a) && !a.IsDead() &&
|
||||||
a.AppearsFriendlyTo(world.LocalPlayer.PlayerActor) &&
|
a.AppearsFriendlyTo(world.LocalPlayer.PlayerActor) &&
|
||||||
a.HasTrait<Guardable>());
|
a.HasTrait<Guardable>());
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ namespace OpenRA.Mods.RA
|
|||||||
yield break;
|
yield break;
|
||||||
}
|
}
|
||||||
|
|
||||||
var underCursor = world.ScreenMap.ActorsAt(Game.viewport.ViewToWorldPx(mi.Location))
|
var underCursor = world.ScreenMap.ActorsAt(mi)
|
||||||
.Where(a => !world.FogObscures(a))
|
.Where(a => !world.FogObscures(a))
|
||||||
.OrderByDescending(a => a.Info.Traits.Contains<SelectableInfo>()
|
.OrderByDescending(a => a.Info.Traits.Contains<SelectableInfo>()
|
||||||
? a.Info.Traits.Get<SelectableInfo>().Priority : int.MinValue)
|
? a.Info.Traits.Get<SelectableInfo>().Priority : int.MinValue)
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ namespace OpenRA.Mods.RA.Orders
|
|||||||
{
|
{
|
||||||
if (mi.Button == MouseButton.Left)
|
if (mi.Button == MouseButton.Left)
|
||||||
{
|
{
|
||||||
var underCursor = world.ScreenMap.ActorsAt(Game.viewport.ViewToWorldPx(mi.Location))
|
var underCursor = world.ScreenMap.ActorsAt(mi)
|
||||||
.Where(a => a.Owner == world.LocalPlayer && a.HasTrait<T>()).FirstOrDefault();
|
.Where(a => a.Owner == world.LocalPlayer && a.HasTrait<T>()).FirstOrDefault();
|
||||||
|
|
||||||
if (underCursor != null)
|
if (underCursor != null)
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ namespace OpenRA.Mods.RA.Orders
|
|||||||
{
|
{
|
||||||
if (mi.Button == MouseButton.Left)
|
if (mi.Button == MouseButton.Left)
|
||||||
{
|
{
|
||||||
var underCursor = world.ScreenMap.ActorsAt(Game.viewport.ViewToWorldPx(mi.Location))
|
var underCursor = world.ScreenMap.ActorsAt(mi)
|
||||||
.Where(a => !world.FogObscures(a) && a.AppearsFriendlyTo(world.LocalPlayer.PlayerActor) && a.HasTrait<RepairableBuilding>()).FirstOrDefault();
|
.Where(a => !world.FogObscures(a) && a.AppearsFriendlyTo(world.LocalPlayer.PlayerActor) && a.HasTrait<RepairableBuilding>()).FirstOrDefault();
|
||||||
|
|
||||||
if (underCursor == null)
|
if (underCursor == null)
|
||||||
|
|||||||
Reference in New Issue
Block a user