From 19c5fed53abd4671f1a53e6724aa0e814f862f54 Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Sat, 20 Nov 2021 18:25:29 +1300 Subject: [PATCH] Entity menu tweaks (#5414) * adjust lookup * change grouping * change range from 0.2 to 0.25 --- .../UI/EntityMenuPresenterGrouping.cs | 39 +------------------ Content.Client/Verbs/VerbSystem.cs | 6 +-- 2 files changed, 3 insertions(+), 42 deletions(-) diff --git a/Content.Client/ContextMenu/UI/EntityMenuPresenterGrouping.cs b/Content.Client/ContextMenu/UI/EntityMenuPresenterGrouping.cs index 00fe9f64ce..e72bcae0e7 100644 --- a/Content.Client/ContextMenu/UI/EntityMenuPresenterGrouping.cs +++ b/Content.Client/ContextMenu/UI/EntityMenuPresenterGrouping.cs @@ -20,7 +20,7 @@ namespace Content.Client.ContextMenu.UI { if (GroupingContextMenuType == 0) { - var newEntities = entities.GroupBy(e => e, new PrototypeContextMenuComparer()).ToList(); + var newEntities = entities.GroupBy(e => e.Name + (e.Prototype?.ID ?? string.Empty)).ToList(); return newEntities.Select(grp => grp.ToList()).ToList(); } else @@ -80,42 +80,5 @@ namespace Content.Client.ContextMenu.UI return GetHashCodeList[_depth](e); } } - - private sealed class PrototypeContextMenuComparer : IEqualityComparer - { - public bool Equals(IEntity? x, IEntity? y) - { - if (x == null) - { - return y == null; - } - if (y != null) - { - if (x.Prototype?.ID == y.Prototype?.ID) - { - var xStates = x.GetComponent().AllLayers.Where(e => e.Visible).Select(s => s.RsiState.Name); - var yStates = y.GetComponent().AllLayers.Where(e => e.Visible).Select(s => s.RsiState.Name); - - return xStates.OrderBy(t => t).SequenceEqual(yStates.OrderBy(t => t)); - } - } - return false; - } - - public int GetHashCode(IEntity e) - { - var hash = EqualityComparer.Default.GetHashCode(e.Prototype?.ID!); - - if (e.TryGetComponent(out var sprite)) - { - foreach (var element in sprite.AllLayers.Where(obj => obj.Visible).Select(s => s.RsiState.Name)) - { - hash ^= EqualityComparer.Default.GetHashCode(element!); - } - } - - return hash; - } - } } } diff --git a/Content.Client/Verbs/VerbSystem.cs b/Content.Client/Verbs/VerbSystem.cs index e93f79b73d..1f518fdd70 100644 --- a/Content.Client/Verbs/VerbSystem.cs +++ b/Content.Client/Verbs/VerbSystem.cs @@ -32,7 +32,7 @@ namespace Content.Client.Verbs /// /// When a user right clicks somewhere, how large is the box we use to get entities for the context menu? /// - public const float EntityMenuLookupSize = 1f; + public const float EntityMenuLookupSize = 0.25f; public EntityMenuPresenter EntityMenu = default!; public VerbMenuPresenter VerbMenu = default!; @@ -100,9 +100,7 @@ namespace Content.Client.Verbs return false; // Get entities - var entities = _entityLookup.GetEntitiesIntersecting( - targetPos.MapId, - Box2.CenteredAround(targetPos.Position, (EntityMenuLookupSize, EntityMenuLookupSize))) + var entities = _entityLookup.GetEntitiesInRange(targetPos.MapId, targetPos.Position, EntityMenuLookupSize) .ToList(); if (entities.Count == 0)