2021-06-09 22:19:39 +02:00
|
|
|
using Content.Client.Administration.Managers;
|
2021-02-25 09:50:45 +01:00
|
|
|
using Content.Client.Changelog;
|
2021-06-09 22:19:39 +02:00
|
|
|
using Content.Client.Chat.Managers;
|
2024-06-27 16:58:51 +02:00
|
|
|
using Content.Client.DebugMon;
|
2020-11-10 16:50:28 +01:00
|
|
|
using Content.Client.Eui;
|
2023-09-28 19:55:10 -04:00
|
|
|
using Content.Client.Fullscreen;
|
2024-10-17 13:06:07 +02:00
|
|
|
using Content.Client.GameTicking.Managers;
|
2022-05-18 06:07:35 +02:00
|
|
|
using Content.Client.GhostKick;
|
2023-01-16 21:42:22 +13:00
|
|
|
using Content.Client.Guidebook;
|
2018-08-16 15:57:11 -07:00
|
|
|
using Content.Client.Input;
|
2021-06-09 22:19:39 +02:00
|
|
|
using Content.Client.IoC;
|
|
|
|
|
using Content.Client.Launcher;
|
2024-05-12 09:18:21 +10:00
|
|
|
using Content.Client.Lobby;
|
2021-06-09 22:19:39 +02:00
|
|
|
using Content.Client.MainMenu;
|
|
|
|
|
using Content.Client.Parallax.Managers;
|
2022-08-07 08:00:42 +02:00
|
|
|
using Content.Client.Players.PlayTimeTracking;
|
2022-10-11 05:09:10 +02:00
|
|
|
using Content.Client.Radiation.Overlays;
|
2023-06-05 16:44:09 +12:00
|
|
|
using Content.Client.Replay;
|
2021-06-09 22:19:39 +02:00
|
|
|
using Content.Client.Screenshot;
|
|
|
|
|
using Content.Client.Singularity;
|
|
|
|
|
using Content.Client.Stylesheets;
|
|
|
|
|
using Content.Client.Viewport;
|
2021-02-16 15:07:17 +01:00
|
|
|
using Content.Client.Voting;
|
2024-02-29 22:44:28 +01:00
|
|
|
using Content.Shared.Ame.Components;
|
2024-04-07 11:35:55 +10:00
|
|
|
using Content.Shared.CCVar;
|
2021-06-09 22:19:39 +02:00
|
|
|
using Content.Shared.Gravity;
|
2022-10-21 01:54:18 -07:00
|
|
|
using Content.Shared.Localizations;
|
2020-04-13 22:27:47 +02:00
|
|
|
using Robust.Client;
|
2021-02-11 01:13:03 -08:00
|
|
|
using Robust.Client.Graphics;
|
|
|
|
|
using Robust.Client.Input;
|
2023-06-25 01:56:33 +02:00
|
|
|
using Robust.Client.Replays.Loading;
|
2021-02-11 01:13:03 -08:00
|
|
|
using Robust.Client.State;
|
2021-04-19 09:52:40 +02:00
|
|
|
using Robust.Client.UserInterface;
|
2023-06-25 01:56:33 +02:00
|
|
|
using Robust.Shared;
|
2022-09-14 20:42:35 -07:00
|
|
|
using Robust.Shared.Configuration;
|
2019-04-15 21:11:38 -06:00
|
|
|
using Robust.Shared.ContentPack;
|
|
|
|
|
using Robust.Shared.Prototypes;
|
2023-06-25 01:56:33 +02:00
|
|
|
using Robust.Shared.Replays;
|
2024-06-27 16:58:51 +02:00
|
|
|
using Robust.Shared.Timing;
|
2017-08-04 14:24:01 +02:00
|
|
|
|
2021-06-13 14:52:40 +02:00
|
|
|
namespace Content.Client.Entry
|
2017-08-04 14:24:01 +02:00
|
|
|
{
|
2022-02-16 00:23:23 -07:00
|
|
|
public sealed class EntryPoint : GameClient
|
2017-08-04 14:24:01 +02:00
|
|
|
{
|
2020-08-24 14:10:28 +02:00
|
|
|
[Dependency] private readonly IBaseClient _baseClient = default!;
|
|
|
|
|
[Dependency] private readonly IGameController _gameController = default!;
|
|
|
|
|
[Dependency] private readonly IStateManager _stateManager = default!;
|
2022-09-14 20:42:35 -07:00
|
|
|
[Dependency] private readonly IComponentFactory _componentFactory = default!;
|
|
|
|
|
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
|
|
|
|
[Dependency] private readonly IClientAdminManager _adminManager = default!;
|
|
|
|
|
[Dependency] private readonly IParallaxManager _parallaxManager = default!;
|
|
|
|
|
[Dependency] private readonly IConfigurationManager _configManager = default!;
|
|
|
|
|
[Dependency] private readonly IStylesheetManager _stylesheetManager = default!;
|
|
|
|
|
[Dependency] private readonly IScreenshotHook _screenshotHook = default!;
|
2023-09-28 19:55:10 -04:00
|
|
|
[Dependency] private readonly FullscreenHook _fullscreenHook = default!;
|
2022-09-14 20:42:35 -07:00
|
|
|
[Dependency] private readonly ChangelogManager _changelogManager = default!;
|
|
|
|
|
[Dependency] private readonly ViewportManager _viewportManager = default!;
|
|
|
|
|
[Dependency] private readonly IUserInterfaceManager _userInterfaceManager = default!;
|
|
|
|
|
[Dependency] private readonly IInputManager _inputManager = default!;
|
|
|
|
|
[Dependency] private readonly IOverlayManager _overlayManager = default!;
|
|
|
|
|
[Dependency] private readonly IChatManager _chatManager = default!;
|
|
|
|
|
[Dependency] private readonly IClientPreferencesManager _clientPreferencesManager = default!;
|
|
|
|
|
[Dependency] private readonly EuiManager _euiManager = default!;
|
|
|
|
|
[Dependency] private readonly IVoteManager _voteManager = default!;
|
2023-01-16 21:42:22 +13:00
|
|
|
[Dependency] private readonly DocumentParsingManager _documentParsingManager = default!;
|
2022-09-14 20:42:35 -07:00
|
|
|
[Dependency] private readonly GhostKickManager _ghostKick = default!;
|
|
|
|
|
[Dependency] private readonly ExtendedDisconnectInformationManager _extendedDisconnectInformation = default!;
|
2023-05-27 14:22:22 +10:00
|
|
|
[Dependency] private readonly JobRequirementsManager _jobRequirements = default!;
|
2022-10-21 01:54:18 -07:00
|
|
|
[Dependency] private readonly ContentLocalizationManager _contentLoc = default!;
|
2023-06-05 16:44:09 +12:00
|
|
|
[Dependency] private readonly ContentReplayPlaybackManager _playbackMan = default!;
|
2023-06-25 01:56:33 +02:00
|
|
|
[Dependency] private readonly IResourceManager _resourceManager = default!;
|
|
|
|
|
[Dependency] private readonly IReplayLoadManager _replayLoad = default!;
|
|
|
|
|
[Dependency] private readonly ILogManager _logManager = default!;
|
2024-06-27 16:58:51 +02:00
|
|
|
[Dependency] private readonly DebugMonitorManager _debugMonitorManager = default!;
|
2024-10-17 13:06:07 +02:00
|
|
|
[Dependency] private readonly TitleWindowManager _titleWindowManager = default!;
|
2019-04-29 12:53:09 +02:00
|
|
|
|
2017-08-04 14:24:01 +02:00
|
|
|
public override void Init()
|
|
|
|
|
{
|
2019-11-23 15:55:31 -05:00
|
|
|
ClientContentIoC.Register();
|
2019-10-02 10:45:06 +02:00
|
|
|
|
2020-10-29 17:50:25 +01:00
|
|
|
foreach (var callback in TestingCallbacks)
|
2019-06-29 01:58:16 +02:00
|
|
|
{
|
2020-10-29 17:50:25 +01:00
|
|
|
var cast = (ClientModuleTestingCallbacks) callback;
|
2019-06-29 01:58:16 +02:00
|
|
|
cast.ClientBeforeIoC?.Invoke();
|
|
|
|
|
}
|
|
|
|
|
|
2018-11-21 21:11:30 +01:00
|
|
|
IoCManager.BuildGraph();
|
2019-04-29 12:53:09 +02:00
|
|
|
IoCManager.InjectDependencies(this);
|
2022-08-21 11:42:57 +12:00
|
|
|
|
2022-10-21 01:54:18 -07:00
|
|
|
_contentLoc.Initialize();
|
2022-09-14 20:42:35 -07:00
|
|
|
_componentFactory.DoAutoRegistrations();
|
|
|
|
|
_componentFactory.IgnoreMissingComponents();
|
2018-12-13 07:47:19 -06:00
|
|
|
|
2022-09-14 20:42:35 -07:00
|
|
|
// Do not add to these, they are legacy.
|
|
|
|
|
_componentFactory.RegisterClass<SharedGravityGeneratorComponent>();
|
2023-06-28 05:02:06 -07:00
|
|
|
_componentFactory.RegisterClass<SharedAmeControllerComponent>();
|
2022-09-14 20:42:35 -07:00
|
|
|
// Do not add to the above, they are legacy
|
2018-12-13 07:47:19 -06:00
|
|
|
|
2023-05-02 04:57:11 +10:00
|
|
|
_prototypeManager.RegisterIgnore("utilityQuery");
|
|
|
|
|
_prototypeManager.RegisterIgnore("utilityCurvePreset");
|
2022-09-14 20:42:35 -07:00
|
|
|
_prototypeManager.RegisterIgnore("accent");
|
|
|
|
|
_prototypeManager.RegisterIgnore("gasReaction");
|
|
|
|
|
_prototypeManager.RegisterIgnore("seed"); // Seeds prototypes are server-only.
|
|
|
|
|
_prototypeManager.RegisterIgnore("objective");
|
|
|
|
|
_prototypeManager.RegisterIgnore("holiday");
|
|
|
|
|
_prototypeManager.RegisterIgnore("htnCompound");
|
|
|
|
|
_prototypeManager.RegisterIgnore("htnPrimitive");
|
|
|
|
|
_prototypeManager.RegisterIgnore("gameMap");
|
2022-11-01 21:17:35 -04:00
|
|
|
_prototypeManager.RegisterIgnore("gameMapPool");
|
2022-09-14 20:42:35 -07:00
|
|
|
_prototypeManager.RegisterIgnore("lobbyBackground");
|
|
|
|
|
_prototypeManager.RegisterIgnore("gamePreset");
|
2023-05-16 06:36:45 -05:00
|
|
|
_prototypeManager.RegisterIgnore("noiseChannel");
|
2024-08-27 18:01:17 +02:00
|
|
|
_prototypeManager.RegisterIgnore("playerConnectionWhitelist");
|
2023-05-16 06:36:45 -05:00
|
|
|
_prototypeManager.RegisterIgnore("spaceBiome");
|
|
|
|
|
_prototypeManager.RegisterIgnore("worldgenConfig");
|
2022-09-14 20:42:35 -07:00
|
|
|
_prototypeManager.RegisterIgnore("gameRule");
|
|
|
|
|
_prototypeManager.RegisterIgnore("worldSpell");
|
|
|
|
|
_prototypeManager.RegisterIgnore("entitySpell");
|
|
|
|
|
_prototypeManager.RegisterIgnore("instantSpell");
|
|
|
|
|
_prototypeManager.RegisterIgnore("roundAnnouncement");
|
|
|
|
|
_prototypeManager.RegisterIgnore("wireLayout");
|
|
|
|
|
_prototypeManager.RegisterIgnore("alertLevels");
|
|
|
|
|
_prototypeManager.RegisterIgnore("nukeopsRole");
|
2024-05-07 03:48:16 +02:00
|
|
|
_prototypeManager.RegisterIgnore("ghostRoleRaffleDecider");
|
2022-09-14 20:42:35 -07:00
|
|
|
|
|
|
|
|
_componentFactory.GenerateNetIds();
|
|
|
|
|
_adminManager.Initialize();
|
|
|
|
|
_screenshotHook.Initialize();
|
2023-09-28 19:55:10 -04:00
|
|
|
_fullscreenHook.Initialize();
|
2022-09-14 20:42:35 -07:00
|
|
|
_changelogManager.Initialize();
|
|
|
|
|
_viewportManager.Initialize();
|
|
|
|
|
_ghostKick.Initialize();
|
|
|
|
|
_extendedDisconnectInformation.Initialize();
|
2023-05-27 14:22:22 +10:00
|
|
|
_jobRequirements.Initialize();
|
2023-06-05 16:44:09 +12:00
|
|
|
_playbackMan.Initialize();
|
2022-09-14 20:42:35 -07:00
|
|
|
|
|
|
|
|
//AUTOSCALING default Setup!
|
|
|
|
|
_configManager.SetCVar("interface.resolutionAutoScaleUpperCutoffX", 1080);
|
|
|
|
|
_configManager.SetCVar("interface.resolutionAutoScaleUpperCutoffY", 720);
|
|
|
|
|
_configManager.SetCVar("interface.resolutionAutoScaleLowerCutoffX", 520);
|
|
|
|
|
_configManager.SetCVar("interface.resolutionAutoScaleLowerCutoffY", 240);
|
|
|
|
|
_configManager.SetCVar("interface.resolutionAutoScaleMinimum", 0.5f);
|
2018-08-16 15:57:11 -07:00
|
|
|
}
|
|
|
|
|
|
2024-10-17 13:06:07 +02:00
|
|
|
public override void Shutdown()
|
|
|
|
|
{
|
|
|
|
|
base.Shutdown();
|
|
|
|
|
_titleWindowManager.Shutdown();
|
|
|
|
|
}
|
|
|
|
|
|
2018-08-16 15:57:11 -07:00
|
|
|
public override void PostInit()
|
|
|
|
|
{
|
|
|
|
|
base.PostInit();
|
2023-05-13 02:02:25 +12:00
|
|
|
|
|
|
|
|
_stylesheetManager.Initialize();
|
|
|
|
|
|
2018-08-16 15:57:11 -07:00
|
|
|
// Setup key contexts
|
2022-09-14 20:42:35 -07:00
|
|
|
ContentContexts.SetupContexts(_inputManager.Contexts);
|
2021-03-09 04:33:41 -06:00
|
|
|
|
2022-09-14 20:42:35 -07:00
|
|
|
_parallaxManager.LoadDefaultParallax();
|
2022-07-25 15:10:23 +10:00
|
|
|
|
2022-09-14 20:42:35 -07:00
|
|
|
_overlayManager.AddOverlay(new SingularityOverlay());
|
|
|
|
|
_overlayManager.AddOverlay(new RadiationPulseOverlay());
|
|
|
|
|
_chatManager.Initialize();
|
|
|
|
|
_clientPreferencesManager.Initialize();
|
|
|
|
|
_euiManager.Initialize();
|
|
|
|
|
_voteManager.Initialize();
|
2024-04-07 11:35:55 +10:00
|
|
|
_userInterfaceManager.SetDefaultTheme(_configManager.GetCVar(CCVars.UIDefaultInterfaceTheme));
|
2023-09-15 02:05:55 +00:00
|
|
|
_userInterfaceManager.SetActiveTheme(_configManager.GetCVar(CVars.InterfaceTheme));
|
2023-01-16 21:42:22 +13:00
|
|
|
_documentParsingManager.Initialize();
|
2024-10-17 13:06:07 +02:00
|
|
|
_titleWindowManager.Initialize();
|
2020-04-04 15:11:28 +02:00
|
|
|
|
2021-03-10 14:48:29 +01:00
|
|
|
_baseClient.RunLevelChanged += (_, args) =>
|
2020-04-13 22:27:47 +02:00
|
|
|
{
|
|
|
|
|
if (args.NewLevel == ClientRunLevel.Initialize)
|
|
|
|
|
{
|
2020-04-17 14:44:33 +02:00
|
|
|
SwitchToDefaultState(args.OldLevel == ClientRunLevel.Connected ||
|
|
|
|
|
args.OldLevel == ClientRunLevel.InGame);
|
2020-04-13 22:27:47 +02:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2021-04-19 09:52:40 +02:00
|
|
|
// Disable engine-default viewport since we use our own custom viewport control.
|
2022-09-14 20:42:35 -07:00
|
|
|
_userInterfaceManager.MainViewport.Visible = false;
|
2021-04-19 09:52:40 +02:00
|
|
|
|
2020-04-17 14:44:33 +02:00
|
|
|
SwitchToDefaultState();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void SwitchToDefaultState(bool disconnected = false)
|
|
|
|
|
{
|
2020-04-04 15:11:28 +02:00
|
|
|
// Fire off into state dependent on launcher or not.
|
2020-04-17 14:44:33 +02:00
|
|
|
|
2023-06-25 01:56:33 +02:00
|
|
|
// Check if we're loading a replay via content bundle!
|
|
|
|
|
if (_configManager.GetCVar(CVars.LaunchContentBundle)
|
|
|
|
|
&& _resourceManager.ContentFileExists(
|
|
|
|
|
ReplayConstants.ReplayZipFolder.ToRootedPath() / ReplayConstants.FileMeta))
|
|
|
|
|
{
|
|
|
|
|
_logManager.GetSawmill("entry").Info("Loading content bundle replay from VFS!");
|
|
|
|
|
|
|
|
|
|
var reader = new ReplayFileReaderResources(
|
|
|
|
|
_resourceManager,
|
|
|
|
|
ReplayConstants.ReplayZipFolder.ToRootedPath());
|
|
|
|
|
|
2024-09-29 03:25:21 +03:00
|
|
|
_playbackMan.LastLoad = (null, ReplayConstants.ReplayZipFolder.ToRootedPath());
|
2023-06-25 01:56:33 +02:00
|
|
|
_replayLoad.LoadAndStartReplay(reader);
|
|
|
|
|
}
|
|
|
|
|
else if (_gameController.LaunchState.FromLauncher)
|
2020-04-04 15:11:28 +02:00
|
|
|
{
|
|
|
|
|
_stateManager.RequestStateChange<LauncherConnecting>();
|
2020-04-17 14:44:33 +02:00
|
|
|
var state = (LauncherConnecting) _stateManager.CurrentState;
|
|
|
|
|
|
|
|
|
|
if (disconnected)
|
|
|
|
|
{
|
|
|
|
|
state.SetDisconnected();
|
|
|
|
|
}
|
2020-04-04 15:11:28 +02:00
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_stateManager.RequestStateChange<MainScreen>();
|
|
|
|
|
}
|
2018-11-21 21:11:30 +01:00
|
|
|
}
|
2024-06-27 16:58:51 +02:00
|
|
|
|
|
|
|
|
public override void Update(ModUpdateLevel level, FrameEventArgs frameEventArgs)
|
|
|
|
|
{
|
|
|
|
|
if (level == ModUpdateLevel.FramePreEngine)
|
|
|
|
|
{
|
|
|
|
|
_debugMonitorManager.FrameUpdate();
|
|
|
|
|
}
|
|
|
|
|
}
|
2017-08-04 14:24:01 +02:00
|
|
|
}
|
|
|
|
|
}
|