diff --git a/Content.Client/Eui/BaseEui.cs b/Content.Client/Eui/BaseEui.cs index 65ebe3d213..ee5ad3c974 100644 --- a/Content.Client/Eui/BaseEui.cs +++ b/Content.Client/Eui/BaseEui.cs @@ -19,34 +19,49 @@ namespace Content.Client.Eui IoCManager.InjectDependencies(this); } - public void Initialize(EuiManager mgr, uint id) + internal void Initialize(EuiManager mgr, uint id) { Manager = mgr; Id = id; } + /// + /// Called when the EUI is opened by the server. + /// public virtual void Opened() { } + /// + /// Called when the EUI is closed by the server. + /// public virtual void Closed() { } + /// + /// Called when a new state comes in from the server. + /// public virtual void HandleState(EuiStateBase state) { } + /// + /// Called when a message comes in from the server. + /// public virtual void HandleMessage(EuiMessageBase msg) { } + /// + /// Send a message to the server-side implementation. + /// protected void SendMessage(EuiMessageBase msg) { var netMsg = _netManager.CreateNetMessage(); netMsg.Id = Id; netMsg.Message = msg; - + _netManager.ClientSendMessage(netMsg); } } diff --git a/Content.Server/Eui/BaseEui.cs b/Content.Server/Eui/BaseEui.cs index 5b58cc4a4a..cd2dc4c52f 100644 --- a/Content.Server/Eui/BaseEui.cs +++ b/Content.Server/Eui/BaseEui.cs @@ -9,46 +9,56 @@ using Robust.Shared.IoC; namespace Content.Server.Eui { + /// + /// Base class to implement server-side for an EUI. + /// + /// + /// An EUI is a system for making a relatively-easy connection between client and server + /// for the purposes of UIs. + /// + /// + /// An equivalently named class much exist server side for an EUI to work. + /// It will be instantiated, opened and closed automatically. + /// public abstract class BaseEui { private bool _isStateDirty = false; + /// + /// The player that this EUI is open for. + /// + public IPlayerSession Player { get; private set; } = default!; public bool IsShutDown { get; private set; } public EuiManager Manager { get; private set; } = default!; - public IPlayerSession Player { get; private set; } = default!; public uint Id { get; private set; } - public void Initialize(EuiManager manager, IPlayerSession player, uint id) - { - Manager = manager; - Player = player; - Id = id; - Opened(); - } - + /// + /// Called when the UI has been opened. Do initializing logic here. + /// public virtual void Opened() { } + /// + /// Called when the UI has been closed. + /// public virtual void Closed() { } + /// + /// Called when a message comes in from the client. + /// public virtual void HandleMessage(EuiMessageBase msg) { } - public void Shutdown() - { - Closed(); - IsShutDown = true; - } - /// /// Mark the current UI state as dirty and queue for an update. /// + /// public void StateDirty() { if (_isStateDirty) @@ -60,17 +70,43 @@ namespace Content.Server.Eui Manager.QueueStateUpdate(this); } + /// + /// Called some time after has been called + /// to get a new UI state that can be sent to the client. + /// public virtual EuiStateBase GetNewState() { throw new NotSupportedException(); } + /// + /// Send a message to the client-side EUI. + /// + public void SendMessage(EuiMessageBase message) + { + var netMgr = IoCManager.Resolve(); + var msg = netMgr.CreateNetMessage(); + msg.Id = Id; + msg.Message = message; + + netMgr.ServerSendMessage(msg, Player.ConnectedClient); + } + + /// + /// Close the EUI, breaking the connection between client and server. + /// public void Close() { Manager.CloseEui(this); } - public void DoStateUpdate() + internal void Shutdown() + { + Closed(); + IsShutDown = true; + } + + internal void DoStateUpdate() { _isStateDirty = false; @@ -84,14 +120,12 @@ namespace Content.Server.Eui netMgr.ServerSendMessage(msg, Player.ConnectedClient); } - public void SendMessage(EuiMessageBase message) + internal void Initialize(EuiManager manager, IPlayerSession player, uint id) { - var netMgr = IoCManager.Resolve(); - var msg = netMgr.CreateNetMessage(); - msg.Id = Id; - msg.Message = message; - - netMgr.ServerSendMessage(msg, Player.ConnectedClient); + Manager = manager; + Player = player; + Id = id; + Opened(); } } } diff --git a/Content.Server/Eui/EuiManager.cs b/Content.Server/Eui/EuiManager.cs index 80e0246d08..b5a8ae2a87 100644 --- a/Content.Server/Eui/EuiManager.cs +++ b/Content.Server/Eui/EuiManager.cs @@ -82,7 +82,7 @@ namespace Content.Server.Eui public void CloseEui(BaseEui eui) { - eui.Closed(); + eui.Shutdown(); _playerData[eui.Player].OpenUIs.Remove(eui.Id); var msg = _net.CreateNetMessage();