public override void Load() { Hotkeys.Load(); Core.Load(); FastForwardBoost.Load(); DisableAchievements.Load(); GraphicsCore.Load(); SimplifiedGraphicsFeature.Load(); CenterCamera.Load(); AutoMute.Load(); HideGameplay.Load(); HitboxTweak.Load(); InfoHud.Load(); ConsoleEnhancements.Load(); AttributeUtils.Invoke <LoadAttribute>(); // Open unix IO pipe for interfacing with Linux / Mac Celeste Studio if (UnixRtcEnabled) { File.Delete("/tmp/celestetas"); UnixRtc = new NamedPipeServerStream("/tmp/celestetas", PipeDirection.InOut); UnixRtc.WaitForConnection(); UnixRtcStreamOut = new StreamWriter(UnixRtc); UnixRtcStreamIn = new StreamReader(UnixRtc); Logger.Log("CelesteTAS", "Unix socket is active on /tmp/celestetas"); } // Open memory mapped file for interfacing with Windows Celeste Studio StudioCommunicationClient.Run(); #if DEBUG Benchmark.Load(); #endif }
public void Unload() { On.Celeste.Level.Update -= Level_Update; IL.Celeste.LightingRenderer.Render -= LightingRenderer_Render; On.Celeste.ColorGrade.Set_MTexture_MTexture_float -= ColorGradeOnSet_MTexture_MTexture_float; IL.Celeste.BloomRenderer.Apply -= BloomRendererOnApply; On.Celeste.Decal.Render -= Decal_Render; On.Monocle.Particle.Render -= Particle_Render; IL.Celeste.BackdropRenderer.Render -= BackdropRenderer_Render; On.Celeste.CrystalStaticSpinner.CreateSprites -= CrystalStaticSpinner_CreateSprites; On.Celeste.DustStyles.Get_Session -= DustStyles_Get_Session; On.Celeste.DreamBlock.Lerp -= DreamBlock_Lerp; On.Celeste.LavaRect.Wave -= LavaRect_Wave; On.Celeste.FloatingDebris.ctor_Vector2 -= FloatingDebris_ctor; On.Celeste.MoonCreature.ctor_Vector2 -= MoonCreature_ctor; IL.Celeste.LightningRenderer.Render -= LightningRenderer_RenderIL; On.Celeste.LightningRenderer.Bolt.Render -= Bolt_Render; On.Celeste.SummitCloud.Render -= SummitCloudOnRender; On.Celeste.SpotlightWipe.Render -= SpotlightWipeOnRender; ilHooks.ForEach(hook => hook.Dispose()); Instance = null; }
public override void Unload() { Hotkeys.Unload(); Core.Unload(); FastForwardBoost.Unload(); DisableAchievements.Unload(); GraphicsCore.Unload(); SimplifiedGraphicsFeature.Unload(); CenterCamera.Unload(); AutoMute.Unload(); HideGameplay.Unload(); HitboxTweak.Unload(); InfoHud.Unload(); ConsoleEnhancements.Unload(); StudioCommunicationClient.Destroy(); AttributeUtils.Invoke <UnloadAttribute>(); UnixRtc?.Dispose(); #if DEBUG Benchmark.Unload(); #endif }
private static void CreateOptions(EverestModule everestModule, TextMenu menu, bool inGame) { options = new List <TextMenu.Item> { HitboxTweak.CreateSubMenu(menu, inGame), SimplifiedGraphicsFeature.CreateSubMenu(), InfoHud.CreateSubMenu(), new TextMenuExt.SubMenu("Round Values".ToDialogText(), false).Apply(subMenu => { subMenu.Add(new TextMenu.OnOff("Round Position".ToDialogText(), Settings.RoundPosition).Change(value => Settings.RoundPosition = value)); subMenu.Add(new TextMenu.OnOff("Round Speed".ToDialogText(), Settings.RoundSpeed).Change(value => Settings.RoundSpeed = value)); subMenu.Add(new TextMenu.OnOff("Round Velocity".ToDialogText(), Settings.RoundVelocity).Change(value => Settings.RoundVelocity = value)); subMenu.Add(new TextMenu.OnOff("Round Custom Info".ToDialogText(), Settings.RoundCustomInfo).Change(value => Settings.RoundCustomInfo = value)); }), new TextMenuExt.SubMenu("Relaunch Required".ToDialogText(), false).Apply(subMenu => { subMenu.Add(new TextMenu.OnOff("Launch Studio At Boot".ToDialogText(), Settings.LaunchStudioAtBoot).Change(value => Settings.LaunchStudioAtBoot = value)); subMenu.Add(new TextMenu.OnOff("Auto Extract New Studio".ToDialogText(), Settings.AutoExtractNewStudio).Change(value => Settings.AutoExtractNewStudio = value)); // TODO need some guys who know Linux to make it actually work // subMenu.Add(new TextMenu.OnOff("Unix RTC".ToDialogText(), Settings.UnixRtc).Change(value => Settings.UnixRtc = value)); }), new TextMenuExt.SubMenu("More Options".ToDialogText(), false).Apply(subMenu => { subMenu.Add(new TextMenu.OnOff("Center Camera".ToDialogText(), Settings.CenterCamera).Change(value => Settings.CenterCamera = value)); subMenu.Add(new TextMenu.OnOff("Pause After Load State".ToDialogText(), Settings.PauseAfterLoadState).Change(value => Settings.PauseAfterLoadState = value)); subMenu.Add(new TextMenu.OnOff("Restore Settings".ToDialogText(), Settings.RestoreSettings).Change(value => Settings.RestoreSettings = value)); subMenu.Add( new TextMenu.OnOff("Disable Achievements".ToDialogText(), Settings.DisableAchievements).Change(value => Settings.DisableAchievements = value)); subMenu.Add(new TextMenu.OnOff("Mod 9D Lighting".ToDialogText(), Settings.Mod9DLighting).Change(value => Settings.Mod9DLighting = value)); }), new TextMenu.Button(Dialog.Clean("options_keyconfig")).Pressed(() => { menu.Focused = false; Entity keyboardConfig; if (CreateKeyboardConfigUi != null) { keyboardConfig = CreateKeyboardConfigUi.Invoke(everestModule, new object[] { menu }) as Entity; } else { keyboardConfig = new ModuleSettingsKeyboardConfigUI(everestModule) { OnClose = () => menu.Focused = true }; } Engine.Scene.Add(keyboardConfig); Engine.Scene.OnEndOfFrame += () => Engine.Scene.Entities.UpdateLists(); }).Apply(item => keyConfigButton = item) }; }
private static void CreateOptions(EverestModule everestModule, TextMenu menu, bool inGame) { options = new List <TextMenu.Item> { new TextMenuExt.SubMenu("Show Hitboxes".ToDialogText(), false).Apply(subMenu => { showHitboxesSubmenu = subMenu; subMenu.Add(new TextMenu.OnOff("Enabled".ToDialogText(), Settings.ShowHitboxes).Change(value => Settings.ShowHitboxes = value)); subMenu.Add(new TextMenu.Option <ActualCollideHitboxTypes>("Actual Collide Hitboxes".ToDialogText()).Apply(option => { Array enumValues = Enum.GetValues(typeof(ActualCollideHitboxTypes)); foreach (ActualCollideHitboxTypes value in enumValues) { option.Add(value.ToString().SpacedPascalCase().ToDialogText(), value, value.Equals(Settings.ShowActualCollideHitboxes)); } option.Change(value => Settings.ShowActualCollideHitboxes = value); })); subMenu.Add(new TextMenu.OnOff("Hide Trigger Hitboxes".ToDialogText(), Settings.HideTriggerHitboxes).Change(value => Settings.HideTriggerHitboxes = value)); subMenu.Add(new TextMenu.OnOff("Simplified Hitboxes".ToDialogText(), Settings.SimplifiedHitboxes).Change(value => Settings.SimplifiedHitboxes = value)); subMenu.Add(HitboxColor.CreateEntityHitboxColorButton(menu, inGame)); subMenu.Add(HitboxColor.CreateTriggerHitboxColorButton(menu, inGame)); subMenu.Add(HitboxColor.CreateSolidTilesHitboxColorButton(menu, inGame)); }), SimplifiedGraphicsFeature.CreateSimplifiedGraphicsOption(), new TextMenuExt.SubMenu("Relaunch Required".ToDialogText(), false).Apply(subMenu => { subMenu.Add(new TextMenu.OnOff("Launch Studio At Boot".ToDialogText(), Settings.LaunchStudioAtBoot).Change(value => Settings.LaunchStudioAtBoot = value)); subMenu.Add(new TextMenu.OnOff("Auto Extract New Studio".ToDialogText(), Settings.AutoExtractNewStudio).Change(value => Settings.AutoExtractNewStudio = value)); subMenu.Add(new TextMenu.OnOff("Unix RTC".ToDialogText(), Settings.UnixRtc).Change(value => Settings.UnixRtc = value)); }), new TextMenuExt.SubMenu("More Options".ToDialogText(), false).Apply(subMenu => { subMenu.Add(new TextMenu.OnOff("Center Camera".ToDialogText(), Settings.CenterCamera).Change(value => Settings.CenterCamera = value)); subMenu.Add(new TextMenu.OnOff("Round Position".ToDialogText(), Settings.RoundPosition).Change(value => Settings.RoundPosition = value)); subMenu.Add(new TextMenu.Option <InfoPositions>("Info HUD".ToDialogText()).Apply(option => { Array enumValues = Enum.GetValues(typeof(InfoPositions)); foreach (InfoPositions value in enumValues) { option.Add(value.ToString().SpacedPascalCase(), value, value.Equals(Settings.InfoHud)); } option.Change(value => Settings.InfoHud = value); })); subMenu.Add(new TextMenu.OnOff("Pause After Load State".ToDialogText(), Settings.PauseAfterLoadState).Change(value => Settings.PauseAfterLoadState = value)); subMenu.Add(new TextMenu.OnOff("Restore Settings".ToDialogText(), Settings.RestoreSettings).Change(value => Settings.RestoreSettings = value)); subMenu.Add( new TextMenu.OnOff("Disable Achievements".ToDialogText(), Settings.DisableAchievements).Change(value => Settings.DisableAchievements = value)); subMenu.Add(new TextMenu.OnOff("Mod 9D Lighting".ToDialogText(), Settings.Mod9DLighting).Change(value => Settings.Mod9DLighting = value)); }), new TextMenu.Button(Dialog.Clean("options_keyconfig")).Pressed(() => { menu.Focused = false; Entity keyboardConfig; if (CreateKeyboardConfigUi != null) { keyboardConfig = CreateKeyboardConfigUi.Invoke(everestModule, new object[] { menu }) as Entity; } else { keyboardConfig = new ModuleSettingsKeyboardConfigUI(everestModule) { OnClose = () => menu.Focused = true }; } Engine.Scene.Add(keyboardConfig); Engine.Scene.OnEndOfFrame += () => Engine.Scene.Entities.UpdateLists(); }).Apply(item => keyConfigButton = item) }; }