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);
}
}