Allow server to send cursor-located popup messages.

This commit is contained in:
Pieter-Jan Briers
2020-05-23 18:45:47 +02:00
parent 7346774616
commit 36b5326a37
4 changed files with 46 additions and 4 deletions

View File

@@ -42,9 +42,16 @@ namespace Content.Client
} }
private void DoNotifyMessage(MsgDoNotify message) private void DoNotifyMessage(MsgDoNotify message)
{
if (message.AtCursor)
{
PopupMessage(message.Message);
}
else
{ {
PopupMessage(_eyeManager.WorldToScreen(message.Coordinates), message.Message); PopupMessage(_eyeManager.WorldToScreen(message.Coordinates), message.Message);
} }
}
public override void PopupMessage(GridCoordinates coordinates, IEntity viewer, string message) public override void PopupMessage(GridCoordinates coordinates, IEntity viewer, string message)
{ {
@@ -56,6 +63,16 @@ namespace Content.Client
PopupMessage(_eyeManager.WorldToScreen(coordinates), message); 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) public void PopupMessage(ScreenCoordinates coordinates, string message)
{ {
var label = new PopupLabel var label = new PopupLabel

View File

@@ -42,6 +42,19 @@ namespace Content.Server
_netManager.ServerSendMessage(netMessage, actor.playerSession.ConnectedClient); _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 class PopupMsgCommand : IClientCommand
{ {
public string Command => "srvpopupmsg"; public string Command => "srvpopupmsg";

View File

@@ -8,6 +8,7 @@ namespace Content.Shared.Interfaces
{ {
void PopupMessage(IEntity source, IEntity viewer, string message); void PopupMessage(IEntity source, IEntity viewer, string message);
void PopupMessage(GridCoordinates coordinates, IEntity viewer, string message); void PopupMessage(GridCoordinates coordinates, IEntity viewer, string message);
void PopupMessageCursor(IEntity viewer, string message);
} }
public static class NotifyManagerExt public static class NotifyManagerExt

View File

@@ -17,6 +17,7 @@ namespace Content.Shared
} }
public abstract void PopupMessage(GridCoordinates coordinates, IEntity viewer, string message); public abstract void PopupMessage(GridCoordinates coordinates, IEntity viewer, string message);
public abstract void PopupMessageCursor(IEntity viewer, string message);
protected class MsgDoNotify : NetMessage protected class MsgDoNotify : NetMessage
{ {
@@ -29,19 +30,29 @@ namespace Content.Shared
#endregion #endregion
public string Message { get; set; } public string Message { get; set; }
public GridCoordinates Coordinates; public bool AtCursor { get; set; }
public GridCoordinates Coordinates { get; set; }
public override void ReadFromBuffer(NetIncomingMessage buffer) public override void ReadFromBuffer(NetIncomingMessage buffer)
{ {
Message = buffer.ReadString(); Message = buffer.ReadString();
AtCursor = buffer.ReadBoolean();
if (!AtCursor)
{
Coordinates = buffer.ReadGridLocalCoordinates(); Coordinates = buffer.ReadGridLocalCoordinates();
} }
}
public override void WriteToBuffer(NetOutgoingMessage buffer) public override void WriteToBuffer(NetOutgoingMessage buffer)
{ {
buffer.Write(Message); buffer.Write(Message);
buffer.Write(AtCursor);
if (!AtCursor)
{
buffer.Write(Coordinates); buffer.Write(Coordinates);
} }
} }
} }
}
} }