Files
crystall-punk-14/Content.Client/Entry/EntryPoint.cs

231 lines
10 KiB
C#
Raw Permalink Normal View History

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;
using Content.Client.DebugMon;
2020-11-10 16:50:28 +01:00
using Content.Client.Eui;
using Content.Client.Fullscreen;
using Content.Client.GameTicking.Managers;
using Content.Client.GhostKick;
using Content.Client.Guidebook;
using Content.Client.Input;
2021-06-09 22:19:39 +02:00
using Content.Client.IoC;
using Content.Client.Launcher;
using Content.Client.Lobby;
2021-06-09 22:19:39 +02:00
using Content.Client.MainMenu;
using Content.Client.Parallax.Managers;
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;
using Content.Client.Voting;
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;
using Robust.Client;
using Robust.Client.Graphics;
using Robust.Client.Input;
using Robust.Client.Replays.Loading;
using Robust.Client.State;
2021-04-19 09:52:40 +02:00
using Robust.Client.UserInterface;
using Robust.Shared;
2022-09-14 20:42:35 -07:00
using Robust.Shared.Configuration;
using Robust.Shared.ContentPack;
using Robust.Shared.Prototypes;
using Robust.Shared.Replays;
using Robust.Shared.Timing;
namespace Content.Client.Entry
{
public sealed class EntryPoint : GameClient
{
[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!;
[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!;
[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!;
[Dependency] private readonly IResourceManager _resourceManager = default!;
[Dependency] private readonly IReplayLoadManager _replayLoad = default!;
[Dependency] private readonly ILogManager _logManager = default!;
[Dependency] private readonly DebugMonitorManager _debugMonitorManager = default!;
[Dependency] private readonly TitleWindowManager _titleWindowManager = default!;
2019-04-29 12:53:09 +02:00
public override void Init()
{
ClientContentIoC.Register();
2019-10-02 10:45:06 +02:00
foreach (var callback in TestingCallbacks)
2019-06-29 01:58:16 +02:00
{
var cast = (ClientModuleTestingCallbacks) callback;
2019-06-29 01:58:16 +02:00
cast.ClientBeforeIoC?.Invoke();
}
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();
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
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");
_prototypeManager.RegisterIgnore("gameMapPool");
2022-09-14 20:42:35 -07:00
_prototypeManager.RegisterIgnore("lobbyBackground");
_prototypeManager.RegisterIgnore("gamePreset");
_prototypeManager.RegisterIgnore("noiseChannel");
_prototypeManager.RegisterIgnore("playerConnectionWhitelist");
_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");
_prototypeManager.RegisterIgnore("ghostRoleRaffleDecider");
2022-09-14 20:42:35 -07:00
_componentFactory.GenerateNetIds();
_adminManager.Initialize();
_screenshotHook.Initialize();
_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);
}
public override void Shutdown()
{
base.Shutdown();
_titleWindowManager.Shutdown();
}
public override void PostInit()
{
base.PostInit();
_stylesheetManager.Initialize();
// Setup key contexts
2022-09-14 20:42:35 -07:00
ContentContexts.SetupContexts(_inputManager.Contexts);
2022-09-14 20:42:35 -07:00
_parallaxManager.LoadDefaultParallax();
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));
_userInterfaceManager.SetActiveTheme(_configManager.GetCVar(CVars.InterfaceTheme));
_documentParsingManager.Initialize();
_titleWindowManager.Initialize();
_baseClient.RunLevelChanged += (_, args) =>
{
if (args.NewLevel == ClientRunLevel.Initialize)
{
SwitchToDefaultState(args.OldLevel == ClientRunLevel.Connected ||
args.OldLevel == ClientRunLevel.InGame);
}
};
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
SwitchToDefaultState();
}
private void SwitchToDefaultState(bool disconnected = false)
{
// Fire off into state dependent on launcher or not.
// 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());
_replayLoad.LoadAndStartReplay(reader);
}
else if (_gameController.LaunchState.FromLauncher)
{
_stateManager.RequestStateChange<LauncherConnecting>();
var state = (LauncherConnecting) _stateManager.CurrentState;
if (disconnected)
{
state.SetDisconnected();
}
}
else
{
_stateManager.RequestStateChange<MainScreen>();
}
}
public override void Update(ModUpdateLevel level, FrameEventArgs frameEventArgs)
{
if (level == ModUpdateLevel.FramePreEngine)
{
_debugMonitorManager.FrameUpdate();
}
}
}
}