Allow server to send cursor-located popup messages.
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user