Examine fixes (#6831)
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user