Merge pull request #233 from Acruid/19-05-16_ExamineImprovements
Examine Improvements
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
using System.Threading;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Content.Shared.GameObjects.EntitySystemMessages;
|
||||
using Content.Shared.Input;
|
||||
@@ -7,6 +7,7 @@ using Robust.Client.GameObjects.EntitySystems;
|
||||
using Robust.Client.Interfaces.GameObjects.Components;
|
||||
using Robust.Client.Interfaces.Input;
|
||||
using Robust.Client.Interfaces.UserInterface;
|
||||
using Robust.Client.Player;
|
||||
using Robust.Client.UserInterface;
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
using Robust.Shared.GameObjects;
|
||||
@@ -25,10 +26,14 @@ namespace Content.Client.GameObjects.EntitySystems
|
||||
{
|
||||
public const string StyleClassEntityTooltip = "entity-tooltip";
|
||||
|
||||
public const float ExamineRange = 1.5f;
|
||||
public const float ExamineRangeSquared = ExamineRange * ExamineRange;
|
||||
|
||||
#pragma warning disable 649
|
||||
[Dependency] private IInputManager _inputManager;
|
||||
[Dependency] private IUserInterfaceManager _userInterfaceManager;
|
||||
[Dependency] private IEntityManager _entityManager;
|
||||
[Dependency] private IPlayerManager _playerManager;
|
||||
#pragma warning restore 649
|
||||
|
||||
private Popup _examineTooltipOpen;
|
||||
@@ -56,6 +61,13 @@ namespace Content.Client.GameObjects.EntitySystems
|
||||
return;
|
||||
}
|
||||
|
||||
var playerEntity = _playerManager.LocalPlayer.ControlledEntity;
|
||||
if(playerEntity == null)
|
||||
return;
|
||||
|
||||
if((entity.Transform.WorldPosition - playerEntity.Transform.WorldPosition).LengthSquared > ExamineRangeSquared)
|
||||
return;
|
||||
|
||||
DoExamine(entity);
|
||||
}
|
||||
|
||||
@@ -70,6 +82,7 @@ namespace Content.Client.GameObjects.EntitySystems
|
||||
_userInterfaceManager.StateRoot.AddChild(_examineTooltipOpen);
|
||||
var panel = new PanelContainer();
|
||||
panel.AddStyleClass(StyleClassEntityTooltip);
|
||||
panel.ModulateSelfOverride = Color.LightGray.WithAlpha(0.90f);
|
||||
_examineTooltipOpen.AddChild(panel);
|
||||
panel.SetAnchorAndMarginPreset(Control.LayoutPreset.Wide);
|
||||
var vBox = new VBoxContainer();
|
||||
|
||||
@@ -13,13 +13,13 @@ namespace Content.Client.Input
|
||||
{
|
||||
var common = contexts.GetContext("common");
|
||||
common.AddFunction(ContentKeyFunctions.FocusChat);
|
||||
common.AddFunction(ContentKeyFunctions.ExamineEntity);
|
||||
|
||||
var human = contexts.GetContext("human");
|
||||
human.AddFunction(ContentKeyFunctions.SwapHands);
|
||||
human.AddFunction(ContentKeyFunctions.Drop);
|
||||
human.AddFunction(ContentKeyFunctions.ActivateItemInHand);
|
||||
human.AddFunction(ContentKeyFunctions.OpenCharacterMenu);
|
||||
human.AddFunction(ContentKeyFunctions.ExamineEntity);
|
||||
human.AddFunction(ContentKeyFunctions.UseItemInHand);
|
||||
human.AddFunction(ContentKeyFunctions.ActivateItemInWorld);
|
||||
human.AddFunction(ContentKeyFunctions.ThrowItemInHand);
|
||||
|
||||
@@ -29,8 +29,12 @@ namespace Content.Server.GameObjects.EntitySystems
|
||||
|
||||
public class ExamineSystem : EntitySystem
|
||||
{
|
||||
public const float ExamineRange = 1.5f;
|
||||
public const float ExamineRangeSquared = ExamineRange * ExamineRange;
|
||||
|
||||
#pragma warning disable 649
|
||||
[Dependency] private IEntityManager _entityManager;
|
||||
[Dependency] private IPlayerManager _playerManager;
|
||||
#pragma warning restore 649
|
||||
|
||||
private static readonly FormattedMessage _entityNotFoundMessage;
|
||||
@@ -95,18 +99,24 @@ namespace Content.Server.GameObjects.EntitySystems
|
||||
{
|
||||
base.HandleNetMessage(channel, message);
|
||||
|
||||
if (message is ExamineSystemMessages.RequestExamineInfoMessage request)
|
||||
{
|
||||
if (!_entityManager.TryGetEntity(request.EntityUid, out var entity))
|
||||
{
|
||||
RaiseNetworkEvent(new ExamineSystemMessages.ExamineInfoResponseMessage(
|
||||
request.EntityUid, _entityNotFoundMessage));
|
||||
return;
|
||||
}
|
||||
if (!(message is ExamineSystemMessages.RequestExamineInfoMessage request))
|
||||
return;
|
||||
|
||||
var text = GetExamineText(entity);
|
||||
RaiseNetworkEvent(new ExamineSystemMessages.ExamineInfoResponseMessage(request.EntityUid, text));
|
||||
var session = _playerManager.GetSessionByChannel(channel);
|
||||
var playerEnt = session.AttachedEntity;
|
||||
|
||||
if((playerEnt == null) ||
|
||||
(!_entityManager.TryGetEntity(request.EntityUid, out var entity)) ||
|
||||
(entity.Transform.MapID != playerEnt.Transform.MapID) ||
|
||||
((entity.Transform.WorldPosition - playerEnt.Transform.WorldPosition).LengthSquared > ExamineRangeSquared))
|
||||
{
|
||||
RaiseNetworkEvent(new ExamineSystemMessages.ExamineInfoResponseMessage(
|
||||
request.EntityUid, _entityNotFoundMessage));
|
||||
return;
|
||||
}
|
||||
|
||||
var text = GetExamineText(entity);
|
||||
RaiseNetworkEvent(new ExamineSystemMessages.ExamineInfoResponseMessage(request.EntityUid, text));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user