first
This commit is contained in:
131
CringeLauncher/Launcher.cs
Normal file
131
CringeLauncher/Launcher.cs
Normal file
@@ -0,0 +1,131 @@
|
||||
using HarmonyLib;
|
||||
using Sandbox;
|
||||
using Sandbox.Engine.Multiplayer;
|
||||
using Sandbox.Engine.Networking;
|
||||
using Sandbox.Engine.Platform.VideoMode;
|
||||
using Sandbox.Engine.Utils;
|
||||
using Sandbox.Game;
|
||||
using Sandbox.Game.Localization;
|
||||
using SpaceEngineers.Game;
|
||||
using SpaceEngineers.Game.Achievements;
|
||||
using SpaceEngineers.Game.GUI;
|
||||
using VRage;
|
||||
using VRage.EOS;
|
||||
using VRage.FileSystem;
|
||||
using VRage.Game;
|
||||
using VRage.GameServices;
|
||||
using VRage.Mod.Io;
|
||||
using VRage.Platform.Windows;
|
||||
using VRage.Steam;
|
||||
using VRage.UserInterface;
|
||||
using VRageRender;
|
||||
|
||||
namespace CringeLauncher;
|
||||
|
||||
public class Launcher : IDisposable
|
||||
{
|
||||
private const uint AppId = 244850U;
|
||||
private SpaceEngineersGame? _game;
|
||||
private readonly Harmony _harmony = new("CringeLauncher");
|
||||
|
||||
public void Initialize(string[] args)
|
||||
{
|
||||
_harmony.PatchAll(typeof(Launcher).Assembly);
|
||||
InitTexts();
|
||||
SpaceEngineersGame.SetupBasicGameInfo();
|
||||
MyFinalBuildConstants.APP_VERSION = MyPerGameSettings.BasicGameInfo.GameVersion.GetValueOrDefault();
|
||||
MyVRageWindows.Init(MyPerGameSettings.BasicGameInfo.ApplicationName, MySandboxGame.Log,
|
||||
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
|
||||
MyPerGameSettings.BasicGameInfo.ApplicationName),
|
||||
false, false);
|
||||
MyInitializer.InvokeBeforeRun(AppId, MyPerGameSettings.BasicGameInfo.ApplicationName,
|
||||
MyVRage.Platform.System.GetAppDataPath(), true, 3, () =>
|
||||
{
|
||||
MyFakes.VOICE_CHAT_MIC_SENSITIVITY = MySandboxGame.Config.MicSensitivity;
|
||||
MyPlatformGameSettings.VOICE_CHAT_AUTOMATIC_ACTIVATION = MySandboxGame.Config.AutomaticVoiceChatActivation;
|
||||
});
|
||||
MyVRage.Platform.Init();
|
||||
InitUgc();
|
||||
SpaceEngineersGame.SetupPerGameSettings();
|
||||
MySandboxGame.InitMultithreading();
|
||||
MyVRage.Platform.System.OnThreadpoolInitialized();
|
||||
InitRender();
|
||||
MyFileSystem.InitUserSpecific(MyGameService.UserId.ToString());
|
||||
_game = new(args);
|
||||
}
|
||||
|
||||
public void Run() => _game?.Run();
|
||||
|
||||
#region Keen shit
|
||||
|
||||
private static void InitTexts()
|
||||
{
|
||||
MyLanguage.ObtainCurrentOSCulture();
|
||||
var textsPath = Path.Combine(MyFileSystem.RootPath, "Content\\Data\\Localization\\CoreTexts");
|
||||
var hashSet = new HashSet<MyLanguagesEnum>();
|
||||
MyTexts.LoadSupportedLanguages(textsPath, hashSet);
|
||||
|
||||
if (!MyTexts.Languages.TryGetValue(MyLanguage.GetOsLanguageCurrentOfficial(), out var description) &&
|
||||
!MyTexts.Languages.TryGetValue(MyLanguagesEnum.English, out description))
|
||||
return;
|
||||
|
||||
MyTexts.LoadTexts(textsPath, description.CultureName, description.SubcultureName);
|
||||
}
|
||||
|
||||
private static void InitUgc()
|
||||
{
|
||||
var steamGameService = MySteamGameService.Create(false, AppId);
|
||||
MyServiceManager.Instance.AddService(steamGameService);
|
||||
|
||||
var aggregator = new MyServerDiscoveryAggregator();
|
||||
MySteamGameService.InitNetworking(false, steamGameService, MyPerGameSettings.GameName, aggregator);
|
||||
MyEOSService.InitNetworking(false, MyPerGameSettings.GameName, steamGameService, "xyza7891964JhtVD93nm3nZp8t1MbnhC",
|
||||
"AKGM16qoFtct0IIIA8RCqEIYG4d4gXPPDNpzGuvlhLA", "24b1cd652a18461fa9b3d533ac8d6b5b",
|
||||
"1958fe26c66d4151a327ec162e4d49c8", "07c169b3b641401496d352cad1c905d6",
|
||||
"https://retail.epicgames.com/", MyEOSService.CreatePlatform(),
|
||||
MyPlatformGameSettings.VERBOSE_NETWORK_LOGGING, ArraySegment<string>.Empty, aggregator,
|
||||
MyMultiplayer.Channels);
|
||||
|
||||
MyServiceManager.Instance.AddService<IMyServerDiscovery>(aggregator);
|
||||
|
||||
MyServiceManager.Instance.AddService(MySteamGameService.CreateMicrophone());
|
||||
|
||||
MyGameService.WorkshopService.AddAggregate(MySteamUgcService.Create(AppId, steamGameService));
|
||||
|
||||
var modUgc = MyModIoService.Create(MyServiceManager.Instance.GetService<IMyGameService>(), "spaceengineers", "264",
|
||||
"1fb4489996a5e8ffc6ec1135f9985b5b", "331", "f2b64abe55452252b030c48adc0c1f0e",
|
||||
MyPlatformGameSettings.UGC_TEST_ENVIRONMENT, false);
|
||||
modUgc.IsConsentGiven = MySandboxGame.Config.ModIoConsent;
|
||||
MyGameService.WorkshopService.AddAggregate(modUgc);
|
||||
|
||||
MySpaceEngineersAchievements.Initialize();
|
||||
}
|
||||
|
||||
private static void InitRender()
|
||||
{
|
||||
var renderQualityHint = MyVRage.Platform.Render.GetRenderQualityHint();
|
||||
var preset = MyGuiScreenOptionsGraphics.GetPreset(renderQualityHint);
|
||||
|
||||
MyRenderProxy.Settings.User = MyVideoSettingsManager
|
||||
.GetGraphicsSettingsFromConfig(ref preset, renderQualityHint > MyRenderPresetEnum.CUSTOM)
|
||||
.PerformanceSettings.RenderSettings;
|
||||
MyRenderProxy.Settings.EnableAnsel = MyPlatformGameSettings.ENABLE_ANSEL;
|
||||
MyRenderProxy.Settings.EnableAnselWithSprites = MyPlatformGameSettings.ENABLE_ANSEL_WITH_SPRITES;
|
||||
|
||||
var graphicsRenderer = MySandboxGame.Config.GraphicsRenderer;
|
||||
MySandboxGame.Config.GraphicsRenderer = graphicsRenderer;
|
||||
|
||||
_ = new MyEngine();
|
||||
MyRenderProxy.Initialize(new MyDX11Render(MyRenderProxy.Settings));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_game?.Dispose();
|
||||
MyGameService.ShutDown();
|
||||
MyInitializer.InvokeAfterRun();
|
||||
MyVRage.Done();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user