Add InRangeUnoccluded extension methods (#2224)

* Rename RangeExtensions to UnobstructedExtensions

* Add InRangeUnoccluded extension methods
This commit is contained in:
DrSmugleaf
2020-10-11 13:13:45 +02:00
committed by GitHub
parent ab2149abf0
commit ba4c596195
6 changed files with 433 additions and 4 deletions

View File

@@ -10,7 +10,7 @@ using static Content.Shared.GameObjects.EntitySystems.SharedInteractionSystem;
namespace Content.Client.Utility
{
public static class RangeExtensions
public static class UnobstructedExtensions
{
private static SharedInteractionSystem SharedInteractionSystem => EntitySystem.Get<SharedInteractionSystem>();

View File

@@ -13,8 +13,8 @@ namespace Content.IntegrationTests.Tests.Interaction
{
[TestFixture]
[TestOf(typeof(SharedInteractionSystem))]
[TestOf(typeof(SharedRangeExtensions))]
[TestOf(typeof(RangeExtensions))]
[TestOf(typeof(SharedUnobstructedExtensions))]
[TestOf(typeof(UnobstructedExtensions))]
public class InRangeUnobstructed : ContentIntegrationTest
{
private const string HumanId = "BaseHumanMob_Content";

View File

@@ -1,5 +1,6 @@
using System.Linq;
using Content.Shared.GameObjects.Components.Mobs;
using Content.Shared.Interfaces.GameObjects.Components;
using Content.Shared.Utility;
using JetBrains.Annotations;
using Robust.Shared.Containers;
@@ -92,6 +93,61 @@ namespace Content.Shared.GameObjects.EntitySystems
return (rayResults[0].HitPos - other.Position).Length < 1f;
}
public static bool InRangeUnOccluded(IEntity origin, IEntity other, float range, Ignored predicate, bool ignoreInsideBlocker = true)
{
var originPos = origin.Transform.MapPosition;
var otherPos = other.Transform.MapPosition;
return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(IEntity origin, IComponent other, float range, Ignored predicate, bool ignoreInsideBlocker = true)
{
var originPos = origin.Transform.MapPosition;
var otherPos = other.Owner.Transform.MapPosition;
return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(IEntity origin, EntityCoordinates other, float range, Ignored predicate, bool ignoreInsideBlocker = true)
{
var originPos = origin.Transform.MapPosition;
var otherPos = other.ToMap(origin.EntityManager);
return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(IEntity origin, MapCoordinates other, float range, Ignored predicate, bool ignoreInsideBlocker = true)
{
var originPos = origin.Transform.MapPosition;
return InRangeUnOccluded(originPos, other, range, predicate, ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(ITargetedInteractEventArgs args, float range, Ignored predicate, bool ignoreInsideBlocker = true)
{
var originPos = args.User.Transform.MapPosition;
var otherPos = args.Target.Transform.MapPosition;
return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(DragDropEventArgs args, float range, Ignored predicate, bool ignoreInsideBlocker = true)
{
var originPos = args.User.Transform.MapPosition;
var otherPos = args.DropLocation.ToMap(args.User.EntityManager);
return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(AfterInteractEventArgs args, float range, Ignored predicate, bool ignoreInsideBlocker = true)
{
var originPos = args.User.Transform.MapPosition;
var otherPos = args.Target.Transform.MapPosition;
return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker);
}
public static FormattedMessage GetExamineText(IEntity entity, IEntity examiner)
{
var message = new FormattedMessage();

View File

@@ -10,7 +10,7 @@ using static Content.Shared.GameObjects.EntitySystems.SharedInteractionSystem;
namespace Content.Shared.Utility
{
public static class SharedRangeExtensions
public static class SharedUnobstructedExtensions
{
private static SharedInteractionSystem SharedInteractionSystem => EntitySystem.Get<SharedInteractionSystem>();

View File

@@ -0,0 +1,372 @@
using Content.Shared.GameObjects.EntitySystems;
using Content.Shared.Interfaces.GameObjects.Components;
using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Interfaces.GameObjects.Components;
using Robust.Shared.IoC;
using Robust.Shared.Map;
using static Content.Shared.GameObjects.EntitySystems.ExamineSystemShared;
using static Content.Shared.GameObjects.EntitySystems.SharedInteractionSystem;
namespace Content.Shared.Utility
{
public static class SharedUnoccludedExtensions
{
#region Entities
public static bool InRangeUnOccluded(
this IEntity origin,
IEntity other,
float range = ExamineRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
return ExamineSystemShared.InRangeUnOccluded(origin, other, range, predicate, ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this IEntity origin,
IComponent other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
return ExamineSystemShared.InRangeUnOccluded(origin, other, range, predicate, ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this IEntity origin,
IContainer other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var otherEntity = other.Owner;
return ExamineSystemShared.InRangeUnOccluded(origin, otherEntity, range, predicate, ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this IEntity origin,
EntityCoordinates other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
return ExamineSystemShared.InRangeUnOccluded(origin, other, range, predicate, ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this IEntity origin,
MapCoordinates other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
return ExamineSystemShared.InRangeUnOccluded(origin, other, range, predicate, ignoreInsideBlocker);
}
#endregion
#region Components
public static bool InRangeUnOccluded(
this IComponent origin,
IEntity other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var originEntity = origin.Owner;
return ExamineSystemShared.InRangeUnOccluded(originEntity, other, range, predicate, ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this IComponent origin,
IComponent other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var originEntity = origin.Owner;
return ExamineSystemShared.InRangeUnOccluded(originEntity, other, range, predicate, ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this IComponent origin,
IContainer other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var originEntity = origin.Owner;
var otherEntity = other.Owner;
return ExamineSystemShared.InRangeUnOccluded(originEntity, otherEntity, range, predicate,
ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this IComponent origin,
EntityCoordinates other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var originEntity = origin.Owner;
return ExamineSystemShared.InRangeUnOccluded(originEntity, other, range, predicate, ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this IComponent origin,
MapCoordinates other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var originEntity = origin.Owner;
return ExamineSystemShared.InRangeUnOccluded(originEntity, other, range, predicate,
ignoreInsideBlocker);
}
#endregion
#region Containers
public static bool InRangeUnOccluded(
this IContainer origin,
IEntity other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var originEntity = origin.Owner;
return ExamineSystemShared.InRangeUnOccluded(originEntity, other, range, predicate,
ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this IContainer origin,
IComponent other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var originEntity = origin.Owner;
return ExamineSystemShared.InRangeUnOccluded(originEntity, other, range, predicate, ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this IContainer origin,
IContainer other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var originEntity = origin.Owner;
var otherEntity = other.Owner;
return ExamineSystemShared.InRangeUnOccluded(originEntity, otherEntity, range, predicate,
ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this IContainer origin,
EntityCoordinates other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var originEntity = origin.Owner;
return ExamineSystemShared.InRangeUnOccluded(originEntity, other, range, predicate, ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this IContainer origin,
MapCoordinates other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var originEntity = origin.Owner;
return ExamineSystemShared.InRangeUnOccluded(originEntity, other, range, predicate, ignoreInsideBlocker);
}
#endregion
#region EntityCoordinates
public static bool InRangeUnOccluded(
this EntityCoordinates origin,
IEntity other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var entityManager = IoCManager.Resolve<IEntityManager>();
var originPosition = origin.ToMap(entityManager);
var otherPosition = other.Transform.MapPosition;
return ExamineSystemShared.InRangeUnOccluded(originPosition, otherPosition, range,
predicate, ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this EntityCoordinates origin,
IComponent other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var entityManager = IoCManager.Resolve<IEntityManager>();
var originPosition = origin.ToMap(entityManager);
var otherPosition = other.Owner.Transform.MapPosition;
return ExamineSystemShared.InRangeUnOccluded(originPosition, otherPosition, range,
predicate, ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this EntityCoordinates origin,
IContainer other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var entityManager = IoCManager.Resolve<IEntityManager>();
var originPosition = origin.ToMap(entityManager);
var otherPosition = other.Owner.Transform.MapPosition;
return ExamineSystemShared.InRangeUnOccluded(originPosition, otherPosition, range,
predicate, ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this EntityCoordinates origin,
EntityCoordinates other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var entityManager = IoCManager.Resolve<IEntityManager>();
var originPosition = origin.ToMap(entityManager);
var otherPosition = other.ToMap(entityManager);
return ExamineSystemShared.InRangeUnOccluded(originPosition, otherPosition, range,
predicate, ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this EntityCoordinates origin,
MapCoordinates other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var entityManager = IoCManager.Resolve<IEntityManager>();
var originPosition = origin.ToMap(entityManager);
return ExamineSystemShared.InRangeUnOccluded(originPosition, other, range, predicate,
ignoreInsideBlocker);
}
#endregion
#region MapCoordinates
public static bool InRangeUnOccluded(
this MapCoordinates origin,
IEntity other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var otherPosition = other.Transform.MapPosition;
return ExamineSystemShared.InRangeUnOccluded(origin, otherPosition, range, predicate,
ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this MapCoordinates origin,
IComponent other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var otherPosition = other.Owner.Transform.MapPosition;
return ExamineSystemShared.InRangeUnOccluded(origin, otherPosition, range, predicate,
ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this MapCoordinates origin,
IContainer other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var otherPosition = other.Owner.Transform.MapPosition;
return ExamineSystemShared.InRangeUnOccluded(origin, otherPosition, range, predicate,
ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this MapCoordinates origin,
EntityCoordinates other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
var entityManager = IoCManager.Resolve<IEntityManager>();
var otherPosition = other.ToMap(entityManager);
return ExamineSystemShared.InRangeUnOccluded(origin, otherPosition, range, predicate,
ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this MapCoordinates origin,
MapCoordinates other,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
return ExamineSystemShared.InRangeUnOccluded(origin, other, range, predicate,
ignoreInsideBlocker);
}
#endregion
#region EventArgs
public static bool InRangeUnOccluded(
this ITargetedInteractEventArgs args,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
return ExamineSystemShared.InRangeUnOccluded(args, range, predicate,
ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this DragDropEventArgs args,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
return ExamineSystemShared.InRangeUnOccluded(args, range, predicate,
ignoreInsideBlocker);
}
public static bool InRangeUnOccluded(
this AfterInteractEventArgs args,
float range = InteractionRange,
Ignored predicate = null,
bool ignoreInsideBlocker = false)
{
return ExamineSystemShared.InRangeUnOccluded(args, range, predicate,
ignoreInsideBlocker);
}
#endregion
}
}

View File

@@ -147,6 +147,7 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=unexcite/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Unequip/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=unlockable/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Unoccluded/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=uplink/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Wirecutter/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Xeno/@EntryIndexedValue">True</s:Boolean>