using System; using Robust.Shared.Log; using Robust.Shared.Timing; namespace Robust.Server { /// /// Top level class that controls the game logic of the server. /// public interface IBaseServer { /// /// The maximum number of players allowed in the server. /// int MaxPlayers { get; } /// /// The displayed name of our server. /// string ServerName { get; } /// /// Sets up the server, loads the game, gets ready for client connections. /// /// bool Start(ServerOptions options, Func? logHandler = null); /// /// Hard restarts the server, shutting it down, kicking all players, and starting the server again. /// void Restart(); /// /// Shuts down the server, and ends the process. /// /// Reason why the server was shut down. void Shutdown(string? reason); /// /// Enters the main loop of the server. This functions blocks until the server is shut down. /// void MainLoop(); } internal interface IBaseServerInternal : IBaseServer { ServerOptions Options { get; } bool ContentStart { set; } void OverrideMainLoop(IGameLoop gameLoop); void SetCommandLineArgs(CommandLineArgs args); } }