Examine fixes (#6831)

This commit is contained in:
mirrorcult
2022-02-20 20:42:16 -07:00
committed by GitHub
parent b87806f7ed
commit e88f179b5f
4 changed files with 33 additions and 35 deletions

View File

@@ -40,7 +40,6 @@ namespace Content.Client.Examine
SubscribeLocalEvent<GetVerbsEvent<ExamineVerb>>(AddExamineVerb); SubscribeLocalEvent<GetVerbsEvent<ExamineVerb>>(AddExamineVerb);
SubscribeNetworkEvent<ExamineSystemMessages.ExamineInfoResponseMessage>(OnExamineInfoResponse); SubscribeNetworkEvent<ExamineSystemMessages.ExamineInfoResponseMessage>(OnExamineInfoResponse);
SubscribeNetworkEvent<VerbsResponseEvent>(OnVerbsResponse);
CommandBinds.Builder CommandBinds.Builder
.Bind(ContentKeyFunctions.ExamineEntity, new PointerInputCmdHandler(HandleExamine, outsidePrediction: true)) .Bind(ContentKeyFunctions.ExamineEntity, new PointerInputCmdHandler(HandleExamine, outsidePrediction: true))
@@ -117,29 +116,13 @@ namespace Content.Client.Examine
// opening at the old tooltip rather than the cursor/another entity, // opening at the old tooltip rather than the cursor/another entity,
// since there's probably one open already if it's coming in from the server. // since there's probably one open already if it's coming in from the server.
OpenTooltip(player.Value, ev.EntityUid, ev.CenterAtCursor, ev.OpenAtOldTooltip); OpenTooltip(player.Value, ev.EntityUid, ev.CenterAtCursor, ev.OpenAtOldTooltip);
UpdateTooltipInfo(player.Value, ev.EntityUid, ev.Message, ev.GetVerbs); UpdateTooltipInfo(player.Value, ev.EntityUid, ev.Message, ev.Verbs);
}
private void OnVerbsResponse(VerbsResponseEvent ev)
{
if (ev.Verbs == null || _examineTooltipOpen == null)
return;
var verbs = new List<ExamineVerb>();
foreach (var verb in ev.Verbs)
{
if (verb is ExamineVerb ex)
verbs.Add(ex);
}
AddVerbsToTooltip(verbs);
} }
public override void SendExamineTooltip(EntityUid player, EntityUid target, FormattedMessage message, bool getVerbs, bool centerAtCursor) public override void SendExamineTooltip(EntityUid player, EntityUid target, FormattedMessage message, bool getVerbs, bool centerAtCursor)
{ {
OpenTooltip(player, target, centerAtCursor, false); OpenTooltip(player, target, centerAtCursor, false);
UpdateTooltipInfo(player, target, message, getVerbs); UpdateTooltipInfo(player, target, message);
} }
/// <summary> /// <summary>
@@ -163,7 +146,7 @@ namespace Content.Client.Examine
if (openAtOldTooltip && oldTooltipPos != null) if (openAtOldTooltip && oldTooltipPos != null)
{ {
popupPos = oldTooltipPos.Value; popupPos = _userInterfaceManager.ScreenToUIPosition(oldTooltipPos.Value);
} }
else if (centeredOnCursor) else if (centeredOnCursor)
{ {
@@ -172,6 +155,7 @@ namespace Content.Client.Examine
else else
{ {
popupPos = _eyeManager.CoordinatesToScreen(Transform(target).Coordinates); popupPos = _eyeManager.CoordinatesToScreen(Transform(target).Coordinates);
popupPos = _userInterfaceManager.ScreenToUIPosition(popupPos);
} }
// Actually open the tooltip. // Actually open the tooltip.
@@ -221,7 +205,7 @@ namespace Content.Client.Examine
/// <summary> /// <summary>
/// Fills the examine tooltip with a message and buttons if applicable. /// Fills the examine tooltip with a message and buttons if applicable.
/// </summary> /// </summary>
public void UpdateTooltipInfo(EntityUid player, EntityUid target, FormattedMessage message, bool getVerbs = true) public void UpdateTooltipInfo(EntityUid player, EntityUid target, FormattedMessage message, List<Verb>? verbs=null)
{ {
var vBox = _examineTooltipOpen?.GetChild(0).GetChild(0); var vBox = _examineTooltipOpen?.GetChild(0).GetChild(0);
if (vBox == null) if (vBox == null)
@@ -239,12 +223,11 @@ namespace Content.Client.Examine
break; break;
} }
if (getVerbs) verbs ??= new List<Verb>();
{ var totalVerbs = _verbSystem.GetLocalVerbs(target, player, typeof(ExamineVerb));
// Get verbs totalVerbs.UnionWith(verbs);
var set = _verbSystem.GetVerbs(target, player, typeof(ExamineVerb));
AddVerbsToTooltip(set); AddVerbsToTooltip(totalVerbs);
}
} }
private void AddVerbsToTooltip(IEnumerable<Verb> verbs) private void AddVerbsToTooltip(IEnumerable<Verb> verbs)

View File

@@ -1,4 +1,7 @@
using System.Linq;
using Content.Server.Verbs;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.Verbs;
using JetBrains.Annotations; using JetBrains.Annotations;
using Robust.Server.GameObjects; using Robust.Server.GameObjects;
using Robust.Server.Player; using Robust.Server.Player;
@@ -11,6 +14,8 @@ namespace Content.Server.Examine
[UsedImplicitly] [UsedImplicitly]
public sealed class ExamineSystem : ExamineSystemShared public sealed class ExamineSystem : ExamineSystemShared
{ {
[Dependency] private readonly VerbSystem _verbSystem = default!;
private static readonly FormattedMessage _entityNotFoundMessage; private static readonly FormattedMessage _entityNotFoundMessage;
static ExamineSystem() static ExamineSystem()
@@ -33,8 +38,12 @@ namespace Content.Server.Examine
var session = actor.PlayerSession; var session = actor.PlayerSession;
SortedSet<Verb>? verbs = null;
if (getVerbs)
verbs = _verbSystem.GetLocalVerbs(target, player, typeof(ExamineVerb));
var ev = new ExamineSystemMessages.ExamineInfoResponseMessage( var ev = new ExamineSystemMessages.ExamineInfoResponseMessage(
target, message, getVerbs, centerAtCursor target, message, verbs?.ToList(), centerAtCursor
); );
RaiseNetworkEvent(ev, session.ConnectedClient); RaiseNetworkEvent(ev, session.ConnectedClient);
@@ -51,12 +60,16 @@ namespace Content.Server.Examine
|| !CanExamine(playerEnt, request.EntityUid)) || !CanExamine(playerEnt, request.EntityUid))
{ {
RaiseNetworkEvent(new ExamineSystemMessages.ExamineInfoResponseMessage( RaiseNetworkEvent(new ExamineSystemMessages.ExamineInfoResponseMessage(
request.EntityUid, _entityNotFoundMessage, request.GetVerbs), channel); request.EntityUid, _entityNotFoundMessage), channel);
return; return;
} }
SortedSet<Verb>? verbs = null;
if (request.GetVerbs)
verbs = _verbSystem.GetLocalVerbs(request.EntityUid, playerEnt, typeof(ExamineVerb));
var text = GetExamineText(request.EntityUid, player.AttachedEntity); var text = GetExamineText(request.EntityUid, player.AttachedEntity);
RaiseNetworkEvent(new ExamineSystemMessages.ExamineInfoResponseMessage(request.EntityUid, text, request.GetVerbs), channel); RaiseNetworkEvent(new ExamineSystemMessages.ExamineInfoResponseMessage(request.EntityUid, text, verbs?.ToList()), channel);
} }
} }
} }

View File

@@ -1,4 +1,5 @@
using System; using System;
using Content.Shared.Verbs;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
using Robust.Shared.Serialization; using Robust.Shared.Serialization;
using Robust.Shared.Utility; using Robust.Shared.Utility;
@@ -27,16 +28,17 @@ namespace Content.Shared.Examine
public readonly EntityUid EntityUid; public readonly EntityUid EntityUid;
public readonly FormattedMessage Message; public readonly FormattedMessage Message;
public readonly bool GetVerbs; public List<Verb>? Verbs;
public readonly bool CenterAtCursor; public readonly bool CenterAtCursor;
public readonly bool OpenAtOldTooltip; public readonly bool OpenAtOldTooltip;
public ExamineInfoResponseMessage(EntityUid entityUid, FormattedMessage message, public ExamineInfoResponseMessage(EntityUid entityUid, FormattedMessage message, List<Verb>? verbs=null,
bool getVerbs=false, bool centerAtCursor=true, bool openAtOldTooltip=true) bool centerAtCursor=true, bool openAtOldTooltip=true)
{ {
EntityUid = entityUid; EntityUid = entityUid;
Message = message; Message = message;
GetVerbs = getVerbs; Verbs = verbs;
CenterAtCursor = centerAtCursor; CenterAtCursor = centerAtCursor;
OpenAtOldTooltip = openAtOldTooltip; OpenAtOldTooltip = openAtOldTooltip;
} }

View File

@@ -1,2 +1,2 @@
health-examinable-verb-text = Health health-examinable-verb-text = Health
health-examinable-verb-disabled = Not close enough health-examinable-verb-disabled = Need to be in close range