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)
{
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

View File

@@ -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";

View File

@@ -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

View File

@@ -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,19 +30,29 @@ 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();
AtCursor = buffer.ReadBoolean();
if (!AtCursor)
{
Coordinates = buffer.ReadGridLocalCoordinates();
}
}
public override void WriteToBuffer(NetOutgoingMessage buffer)
{
buffer.Write(Message);
buffer.Write(AtCursor);
if (!AtCursor)
{
buffer.Write(Coordinates);
}
}
}
}
}