Allow server to send cursor-located popup messages.
This commit is contained in:
@@ -43,7 +43,14 @@ namespace Content.Client
|
||||
|
||||
private void DoNotifyMessage(MsgDoNotify message)
|
||||
{
|
||||
PopupMessage(_eyeManager.WorldToScreen(message.Coordinates), message.Message);
|
||||
if (message.AtCursor)
|
||||
{
|
||||
PopupMessage(message.Message);
|
||||
}
|
||||
else
|
||||
{
|
||||
PopupMessage(_eyeManager.WorldToScreen(message.Coordinates), message.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public override void PopupMessage(GridCoordinates coordinates, IEntity viewer, string message)
|
||||
@@ -56,6 +63,16 @@ namespace Content.Client
|
||||
PopupMessage(_eyeManager.WorldToScreen(coordinates), message);
|
||||
}
|
||||
|
||||
public override void PopupMessageCursor(IEntity viewer, string message)
|
||||
{
|
||||
if (viewer != _playerManager.LocalPlayer.ControlledEntity)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
PopupMessage(message);
|
||||
}
|
||||
|
||||
public void PopupMessage(ScreenCoordinates coordinates, string message)
|
||||
{
|
||||
var label = new PopupLabel
|
||||
|
||||
@@ -42,6 +42,19 @@ namespace Content.Server
|
||||
_netManager.ServerSendMessage(netMessage, actor.playerSession.ConnectedClient);
|
||||
}
|
||||
|
||||
public override void PopupMessageCursor(IEntity viewer, string message)
|
||||
{
|
||||
if (!viewer.TryGetComponent(out IActorComponent actor))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var netMessage = _netManager.CreateNetMessage<MsgDoNotify>();
|
||||
netMessage.Message = message;
|
||||
netMessage.AtCursor = true;
|
||||
_netManager.ServerSendMessage(netMessage, actor.playerSession.ConnectedClient);
|
||||
}
|
||||
|
||||
public class PopupMsgCommand : IClientCommand
|
||||
{
|
||||
public string Command => "srvpopupmsg";
|
||||
|
||||
@@ -8,6 +8,7 @@ namespace Content.Shared.Interfaces
|
||||
{
|
||||
void PopupMessage(IEntity source, IEntity viewer, string message);
|
||||
void PopupMessage(GridCoordinates coordinates, IEntity viewer, string message);
|
||||
void PopupMessageCursor(IEntity viewer, string message);
|
||||
}
|
||||
|
||||
public static class NotifyManagerExt
|
||||
|
||||
@@ -17,6 +17,7 @@ namespace Content.Shared
|
||||
}
|
||||
|
||||
public abstract void PopupMessage(GridCoordinates coordinates, IEntity viewer, string message);
|
||||
public abstract void PopupMessageCursor(IEntity viewer, string message);
|
||||
|
||||
protected class MsgDoNotify : NetMessage
|
||||
{
|
||||
@@ -29,18 +30,28 @@ namespace Content.Shared
|
||||
#endregion
|
||||
|
||||
public string Message { get; set; }
|
||||
public GridCoordinates Coordinates;
|
||||
public bool AtCursor { get; set; }
|
||||
public GridCoordinates Coordinates { get; set; }
|
||||
|
||||
public override void ReadFromBuffer(NetIncomingMessage buffer)
|
||||
{
|
||||
Message = buffer.ReadString();
|
||||
Coordinates = buffer.ReadGridLocalCoordinates();
|
||||
AtCursor = buffer.ReadBoolean();
|
||||
if (!AtCursor)
|
||||
{
|
||||
Coordinates = buffer.ReadGridLocalCoordinates();
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteToBuffer(NetOutgoingMessage buffer)
|
||||
{
|
||||
buffer.Write(Message);
|
||||
buffer.Write(Coordinates);
|
||||
buffer.Write(AtCursor);
|
||||
|
||||
if (!AtCursor)
|
||||
{
|
||||
buffer.Write(Coordinates);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user