Code/SboxSuperuser/Engine/Messaging/IPlayerMessenger.cs

An interface for delivering staff messages to connected players. Exposes the online Steam ID list plus private chat, global chat and center-screen text sends, so the live engine adapter can be swapped for a recording test double.

namespace SboxSuperuser.Engine.Messaging;

/// <summary>Delivers staff messages to connected players. EngineMessenger is the live adapter; tests record instead.</summary>
internal interface IPlayerMessenger
{
	/// <summary>Steam IDs of every connected player.</summary>
	IReadOnlyList<string> Online { get; }

	/// <summary>Sends one player a private chat line; false when they are not connected.</summary>
	bool SendPrivate( string steamId, string text );

	/// <summary>Adds a plain line to everyone's chat.</summary>
	void SendChat( string text );

	/// <summary>Shows text in the middle of everyone's screen for a few seconds.</summary>
	void SendCenter( string text );
}