using System; using Robust.Shared.GameObjects; using Robust.Shared.Timing; namespace Robust.Client; [NotContentImplementable] public interface IGameController { InitialLaunchState LaunchState { get; } void Shutdown(string? reason=null); /// /// Try to cause the launcher to either reconnect to the same server or connect to a new server. /// *The engine will shutdown on success.* /// Will throw an exception if contacting the launcher failed (success indicates it is now the launcher's responsibility). /// To redial the same server, retrieve the server's address from `LaunchState.Ss14Address`. /// /// The server address, such as "ss14://localhost:1212/". /// Informational text on the cause of the reconnect. Empty or null gives a default reason. void Redial(string address, string? text = null); /// /// This event gets invoked prior to performing entity tick update logic. If this is null the game /// controller will simply call . /// This exists to give content module more control over tick updating. /// event Action? TickUpdateOverride; /// /// Get the games Title, if Options.DefaultWindowTitle or if defaultWindowTitle is not set in the manifest.yml, it will default to RobustToolbox. /// string GameTitle(); /// /// Get the games Window Icon set, if Options.WindowIconSet or if windowIconSet is not set in the manifest.yml, it will default to an empty string. /// string WindowIconSet(); /// /// Get the games Splash Logo, if Options.SplashLogo or if splashLogo is not set in the manifest.yml, it will default to an empty string. /// string SplashLogo(); }