From 6826bb33a0ff5c96fcdbfa02b3b363ebfa6e40a9 Mon Sep 17 00:00:00 2001 From: Alex Knauth Date: Wed, 8 Jan 2025 11:11:15 -0500 Subject: [PATCH] Updated splits from @mayonnaisical --------- Co-authored-by: mayonnaisical <85130913+mayonnaisical@users.noreply.github.com> Co-authored-by: PythonWizard318 <139416125+PythonWizard318@users.noreply.github.com> Co-authored-by: slaurent --- Components/LiveSplit.HollowKnight.Updates.xml | 31 +- Components/LiveSplit.HollowKnight.dll | Bin 566784 -> 567808 bytes HollowKnightComponent.cs | 278 +++++++----------- HollowKnightSettings.Designer.cs | 69 +---- HollowKnightSettings.cs | 129 ++++---- HollowKnightSplitSettings.cs | 41 +-- Properties/AssemblyInfo.cs | 4 +- README.md | 25 +- 8 files changed, 228 insertions(+), 349 deletions(-) diff --git a/Components/LiveSplit.HollowKnight.Updates.xml b/Components/LiveSplit.HollowKnight.Updates.xml index 5c06af6..52767e0 100644 --- a/Components/LiveSplit.HollowKnight.Updates.xml +++ b/Components/LiveSplit.HollowKnight.Updates.xml @@ -1,5 +1,34 @@  + + + + + + Major autosplitter update: + Splits saved in this version of the autosplitter will not be compatible with previous versions. It is strongly recommended to backup your saves before saving them in this version + All splits are now ordered, and have start-triggering and end-triggering autosplits which are integrated into the regular splits list + Splits for previously implicit start and end conditions now exist, and have automatically been added to your splits where applicable. + It is preferred for you to edit your splits to use start/end point splits specific for the category you are running. + + New and updated splits: + Added starting splits for start new game, start pantheon (Mayo) + Added Individual splits for all endings (Mayo) + Added Absolute Radiance Ending split for Pantheon of Hallownest (AlexKnauth) + Added Menu splits for Mothwing Cloak, Dashmaster, Dream Nail, Dream Gate, Void Heart and 3 Dreamers (Mayo) + Added Soul Sanctum Hallownest Seal split (Mayo) + Added Stag Position Updated split (Mayo) + Added City Toll Bench Room Transition split (Mayo) + Added Transition excluding discontinuities split (AlexKnauth) + Added Mask Upgrade 20 split for glitched extra mask (Peeka) + Added Map Crossroads Transition split (Peeka) + Fixed Credits Roll Ending split to not split on finishing any of Pantheon 1-4 (AlexKnauth) + Fixed Main Menu splits to be more reliable (Mayo) + Fixed Has Shade Soul Transition split to be room-dupe-safe (Python) + Fixed Enter Troupe Master Grimm Transition split to require Grimmchild equipped (AlexKnauth) + Fixed Pure Snail split to allow a full focus at full health (AlexKnauth) + + @@ -61,7 +90,7 @@ New transition autosplits: `Has Shade Soul`, `Grimm Flame 1-3`, `Beast Den` New menu autosplit: `Main Menu w/ Shade Soul` - New fun split: `Stinky`> + New fun split: `Stinky` diff --git a/Components/LiveSplit.HollowKnight.dll b/Components/LiveSplit.HollowKnight.dll index c4b31700f7ce06cddc671f53d99a968d64462e37..790c3a0a0505ff00c196abe39cd0501e44476a6c 100644 GIT binary patch delta 119691 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 diff --git a/HollowKnightComponent.cs b/HollowKnightComponent.cs index cecd779..2133913 100644 --- a/HollowKnightComponent.cs +++ b/HollowKnightComponent.cs @@ -37,13 +37,10 @@ public class HollowKnightComponent { "LookFor" }; private HollowKnightMemory mem; - private int currentSplit = -1, state = 0, lastLogCheck = 0; + private int currentSplitIndex = 0, state = 0, lastLogCheck = 0; private bool hasLog = false; private Dictionary currentValues = new Dictionary(); private HollowKnightSettings settings; - private HashSet splitsDone = new HashSet(); - private List failedValues = new List(); - private SplitName lastSplitDone; private static string LOGFILE = "_HollowKnight.log"; private PlayerData pdata = new PlayerData(); private GameState lastGameState; @@ -129,76 +126,77 @@ public void GetValues() { } #if !Info private void HandleSplits() { - SplitterAction action = SplitterAction.Pass; - string nextScene = mem.NextSceneName(); - string sceneName = mem.SceneName(); - - if (currentSplit == -1) { - if (settings.AutosplitStartRuns != null) { - action = CheckSplit(settings.AutosplitStartRuns.Value, nextScene, sceneName); - } else { - action = ((nextScene.Equals("Tutorial_01", StringComparison.OrdinalIgnoreCase) && - mem.GameState() == GameState.ENTERING_LEVEL) || - nextScene is "GG_Vengefly_V" or "GG_Boss_Door_Entrance" or "GG_Entrance_Cutscene") ? SplitterAction.Split : SplitterAction.Pass; - } - } else if (Model.CurrentState.CurrentPhase == TimerPhase.Running && settings.Splits.Count > 0) { - GameState gameState = mem.GameState(); - UIState uIState = mem.UIState(); - //SplitName finalSplit = settings.Splits[settings.Splits.Count - 1]; - - if (!settings.AutosplitEndRuns) { - if (currentSplit + 1 < Model.CurrentState.Run.Count) { - if (!settings.Ordered) { - action = NotOrderedSplits(gameState, uIState, nextScene, sceneName); - - } else if (currentSplit < settings.Splits.Count) { - action = OrderedSplits(gameState, uIState, nextScene, sceneName); - } - } else { - action = (nextScene.StartsWith("Cinematic_Ending", StringComparison.OrdinalIgnoreCase) || nextScene == "GG_End_Sequence") ? SplitterAction.Split : SplitterAction.Pass; - } - } else { - if (currentSplit < Model.CurrentState.Run.Count) { - if (currentSplit + 1 == Model.CurrentState.Run.Count) { - action = (nextScene.StartsWith("Cinematic_Ending", StringComparison.OrdinalIgnoreCase) || nextScene == "GG_End_Sequence") ? SplitterAction.Split : SplitterAction.Pass; - } - if (action == SplitterAction.Pass) { - if (!settings.Ordered) { - action = NotOrderedSplits(gameState, uIState, nextScene, sceneName); // unordered splits not compatible with Skip splits - } else if (currentSplit < settings.Splits.Count) { - action = OrderedSplits(gameState, uIState, nextScene, sceneName); - } - } - } - } - LoadRemoval(gameState, uIState, nextScene, sceneName); + + var action = SplitterAction.Pass; + string sceneNext = mem.NextSceneName(); + string sceneCurr = mem.SceneName(); + GameState gameState = mem.GameState(); + UIState uiState = mem.UIState(); + + var _GetCurrentSplit = () => { + SplitName s; + try { s = settings.Splits[currentSplitIndex]; } // gets the current split + catch { s = SplitName.ForgottenCrossroads; } // default split + return s; + }; + + var split = _GetCurrentSplit(); + + if ( + settings.Splits.Count > 0 // there are splits + && (Model.CurrentState.CurrentPhase == TimerPhase.Running // timer is running + || currentSplitIndex == 0) // current split is the start + ) { + action = GetAction(split, sceneNext, sceneCurr); // check for split + } + + // log if the split is not a pass and the game is not inactive or in the main menu + if ( + action != SplitterAction.Pass + && !((gameState == GameState.INACTIVE && uiState == UIState.INACTIVE) || gameState == GameState.MAIN_MENU) + && (hasLog || !Console.IsOutputRedirected) + ) { + WriteLogWithTime($"{action.ToString()}: " + split); } store.Update(); - HandleSplit(action); + + LoadRemoval(gameState, uiState, sceneNext, sceneCurr); + + DoAction(action); + + return; } private void LoadRemoval(GameState gameState, UIState uIState, string nextScene, string sceneName) { + + // only remove loads if timer is running + if (Model.CurrentState.CurrentPhase != TimerPhase.Running) return; + uIState = mem.UIState(); + bool loadingMenu = (sceneName != "Menu_Title" && string.IsNullOrEmpty(nextScene)) || (sceneName != "Menu_Title" && nextScene == "Menu_Title" - || (sceneName == "Quit_To_Menu")); + || (sceneName == "Quit_To_Menu") + ); + + bool teleporting = mem.CameraTeleporting(); + if (gameState == GameState.PLAYING && lastGameState == GameState.MAIN_MENU) { lookForTeleporting = true; } - bool teleporting = mem.CameraTeleporting(); if (lookForTeleporting && (teleporting || (gameState != GameState.PLAYING && gameState != GameState.ENTERING_LEVEL))) { lookForTeleporting = false; } - // TODO: look into Current Patch quitout issues. + // TODO: look into Current Patch quitout issues. // might have been fixed? cerpin you broke them in a way that made them work, right? Model.CurrentState.IsGameTimePaused = (gameState == GameState.PLAYING && teleporting && !mem.HazardRespawning()) - || lookForTeleporting + || (lookForTeleporting) || ((gameState is GameState.PLAYING or GameState.ENTERING_LEVEL) && uIState != UIState.PLAYING) || (gameState != GameState.PLAYING && !mem.AcceptingInput()) - || gameState is GameState.EXITING_LEVEL or GameState.LOADING - || mem.HeroTransitionState() == HeroTransitionState.WAITING_TO_ENTER_LEVEL + || (gameState is GameState.EXITING_LEVEL or GameState.LOADING) + || (mem.HeroTransitionState() == HeroTransitionState.WAITING_TO_ENTER_LEVEL) || (uIState != UIState.PLAYING && (loadingMenu || (uIState != UIState.PAUSED && (!string.IsNullOrEmpty(nextScene) || sceneName == "_test_charms"))) && nextScene != sceneName) @@ -209,93 +207,17 @@ private void LoadRemoval(GameState gameState, UIState uIState, string nextScene, || (mem.MenuState() == MainMenuState.LOGO && mem.GameState() == GameState.INACTIVE && uIState == UIState.INACTIVE) */ ; - lastGameState = gameState; - } - - private SplitterAction NotOrderedSplits(GameState gameState, UIState uIState, string nextScene, string sceneName) { - - foreach (SplitName Split in settings.Splits) { - if (splitsDone.Contains(Split)) { - continue; - } else if (Split.ToString().StartsWith("Menu")) { - if (!menuSplitHelper) - menuSplitHelper = Split == SplitName.Menu || - CheckSplit(Split, nextScene, sceneName) == SplitterAction.Split && !((gameState == GameState.INACTIVE && uIState == UIState.INACTIVE) || (gameState == GameState.MAIN_MENU)); - if (menuSplitHelper) { - if (CheckSplit(SplitName.Menu, nextScene, sceneName) == SplitterAction.Split) { - splitsDone.Add(Split); - lastSplitDone = Split; - menuSplitHelper = false; - if (hasLog || !Console.IsOutputRedirected) WriteLogWithTime("Split: " + Split); - return SplitterAction.Split; - } - } - } else if (!((gameState == GameState.INACTIVE && uIState == UIState.INACTIVE) || (gameState == GameState.MAIN_MENU))) { - if (CheckSplit(Split, nextScene, sceneName) == SplitterAction.Split) { - splitsDone.Add(Split); - lastSplitDone = Split; - menuSplitHelper = false; - if (hasLog || !Console.IsOutputRedirected) WriteLogWithTime("Split: " + Split); - return SplitterAction.Split; - } - } - } - return SplitterAction.Pass; - } - private SplitterAction OrderedSplits(GameState gameState, UIState uIState, string nextScene, string sceneName) { - SplitName Split = settings.Splits[currentSplit]; - - if (Split.ToString().StartsWith("Menu")) { - if (!menuSplitHelper) menuSplitHelper = Split == SplitName.Menu || CheckSplit(Split, nextScene, sceneName) != SplitterAction.Pass; - if (menuSplitHelper) { - if (CheckSplit(SplitName.Menu, nextScene, sceneName) == SplitterAction.Split) { - menuSplitHelper = false; - if (hasLog || !Console.IsOutputRedirected) WriteLogWithTime("Split: " + Split); - return SplitterAction.Split; - } else if (CheckSplit(SplitName.Menu, nextScene, sceneName) == SplitterAction.Skip) { - menuSplitHelper = false; - if (hasLog || !Console.IsOutputRedirected) WriteLogWithTime("Skip: " + Split); - return SplitterAction.Skip; - } - } - } else { - if (CheckSplit(Split, nextScene, sceneName) == SplitterAction.Split - && !((gameState == GameState.INACTIVE && uIState == UIState.INACTIVE) || (gameState == GameState.MAIN_MENU))) { - if (hasLog || !Console.IsOutputRedirected) WriteLogWithTime("Split: " + Split); - return SplitterAction.Split; - } else if (CheckSplit(Split, nextScene, sceneName) == SplitterAction.Skip - && !((gameState == GameState.INACTIVE && uIState == UIState.INACTIVE) || (gameState == GameState.MAIN_MENU))) { - if (hasLog || !Console.IsOutputRedirected) WriteLogWithTime("Skip: " + Split); - return SplitterAction.Skip; - } else if (CheckSplit(Split, nextScene, sceneName) == SplitterAction.Reset - && !((gameState == GameState.INACTIVE && uIState == UIState.INACTIVE) || (gameState == GameState.MAIN_MENU))) { - if (hasLog || !Console.IsOutputRedirected) WriteLogWithTime("Reset: " + Split); - return SplitterAction.Reset; - } - } - return SplitterAction.Pass; - } + lastGameState = gameState; - private bool shouldSplitTransition(string nextScene, string sceneName) { - if (nextScene != sceneName && !store.SplitThisTransition) { - return !( - string.IsNullOrEmpty(sceneName) || - string.IsNullOrEmpty(nextScene) || - menuingSceneNames.Contains(sceneName) || - menuingSceneNames.Contains(nextScene) - ); - } - return false; } - private SplitterAction CheckSplit(SplitName split, string nextScene, string sceneName) { - string currScene = sceneName; + private SplitterAction GetAction(SplitName split, string nextScene, string currScene) { bool shouldSplit = false; bool shouldSkip = false; bool shouldReset = false; - SplitterAction action; + SplitterAction action = SplitterAction.Pass; switch (split) { @@ -1325,11 +1247,27 @@ private SplitterAction CheckSplit(SplitName split, string nextScene, string scen #region Main Menu - case SplitName.Menu: shouldSplit = sceneName == "Menu_Title"; break; - case SplitName.MenuClaw: shouldSplit = mem.PlayerData(Offset.hasWallJump); break; - case SplitName.MenuGorgeousHusk: shouldSplit = mem.PlayerData(Offset.killedGorgeousHusk); break; - case SplitName.MenuIsmasTear: shouldSplit = mem.PlayerData(Offset.hasAcidArmour); break; - case SplitName.MenuShadeSoul: shouldSplit = mem.PlayerData(Offset.fireballLevel) == 2; break; + // this case is used for all main menu splits, be careful if you modify it + case SplitName.Menu: + shouldSplit = (currScene == "Menu_Title") && (nextScene != currScene); + menuSplitHelper = !shouldSplit && mem.UIState() != UIState.PLAYING; + break; + + // menuSplitHelper is set to true in case SplitName.Menu, and is only set back to false once it splits + // playerdata doesn't exist when you quit out or something so it can't check any additional conditions + // menuSplitHelper basically just remembers that you've met the conditions and lets you pass on to the + // SplitName.Menu case. + + case SplitName.MenuCloak: if (menuSplitHelper || mem.PlayerData(Offset.hasDash)) { goto case SplitName.Menu; } break; + case SplitName.MenuClaw: if (menuSplitHelper || mem.PlayerData(Offset.hasWallJump)) { goto case SplitName.Menu; } break; + case SplitName.MenuDashmaster: if (menuSplitHelper || mem.PlayerData(Offset.gotCharm_31)) { goto case SplitName.Menu; } break; + case SplitName.MenuGorgeousHusk: if (menuSplitHelper || mem.PlayerData(Offset.killedGorgeousHusk)) { goto case SplitName.Menu; } break; + case SplitName.MenuDreamNail: if (menuSplitHelper || mem.PlayerData(Offset.hasDreamNail)) { goto case SplitName.Menu; } break; + case SplitName.MenuDreamGate: if (menuSplitHelper || mem.PlayerData(Offset.hasDreamGate)) { goto case SplitName.Menu; } break; + case SplitName.MenuDreamer3: if (menuSplitHelper || mem.PlayerData(Offset.guardiansDefeated) == 3) { goto case SplitName.Menu; } break; + case SplitName.MenuVoidHeart: if (menuSplitHelper || mem.PlayerData(Offset.gotShadeCharm)) { goto case SplitName.Menu; } break; + case SplitName.MenuIsmasTear: if (menuSplitHelper || mem.PlayerData(Offset.hasAcidArmour)) { goto case SplitName.Menu; }; break; + case SplitName.MenuShadeSoul: if (menuSplitHelper || mem.PlayerData(Offset.fireballLevel) == 2) { goto case SplitName.Menu; }; break; #endregion Main Menu @@ -2034,10 +1972,7 @@ private SplitterAction CheckSplit(SplitName split, string nextScene, string scen #endregion Colosseum default: - //throw new Exception(split + " does not have a defined shouldsplit value"); - if (!failedValues.Contains(split)) { - failedValues.Add(split); - } + shouldSkip = true; break; } @@ -2048,39 +1983,38 @@ private SplitterAction CheckSplit(SplitName split, string nextScene, string scen action = SplitterAction.Skip; } else if (shouldSplit) { action = SplitterAction.Split; - } else { - action = SplitterAction.Pass; } return action; + } - private void HandleSplit(SplitterAction action, bool shouldReset = false) { - bool splitAdvanced = false; + private void DoAction(SplitterAction action, bool shouldReset = false) { + + var update = () => { + store.SplitThisTransition = true; + store.Update(); + }; if (action == SplitterAction.Reset || shouldReset) { - if (currentSplit >= 0) { + if (currentSplitIndex >= 0) { Model.Reset(); } } else if (action == SplitterAction.Skip) { - if (currentSplit >= 0) { + if (currentSplitIndex >= 0) { Model.SkipSplit(); + update(); } - splitAdvanced = true; } else if (action == SplitterAction.Split) { - if (currentSplit < 0) { + if (currentSplitIndex == 0) { // if start of run Model.Start(); - } else { + } else { // if anywhere else in run Model.Split(); } - splitAdvanced = true; + update(); } - if (splitAdvanced) { - store.SplitThisTransition = true; - store.Update(); - } - } + }//2007 #endif private void LogValues() { if (lastLogCheck == 0) { @@ -2100,7 +2034,7 @@ private void LogValues() { switch (key) { case "CurrentSplit": - curr = currentSplit.ToString(); + curr = currentSplitIndex.ToString(); break; case "State": curr = state.ToString(); break; case "GameState": curr = mem.GameState().ToString(); break; @@ -2172,19 +2106,12 @@ public void Update(IInvalidator invalidator, LiveSplitState lvstate, float width } public void OnReset(object sender, TimerPhase e) { - currentSplit = -1; + currentSplitIndex = 0; // index zero now has the auto-start split state = 0; + menuSplitHelper = false; lookForTeleporting = false; Model.CurrentState.IsGameTimePaused = true; - splitsDone.Clear(); store.Reset(); - if (failedValues.Count > 0) { - WriteLog("---------Splits without match-------------------"); - foreach (var value in failedValues) { - WriteLogWithTime(value.ToString() + " - does not have a defined shouldsplit value"); - } - failedValues.Clear(); - } WriteLog("---------Reset----------------------------------"); } public void OnResume(object sender, EventArgs e) { @@ -2194,32 +2121,31 @@ public void OnPause(object sender, EventArgs e) { WriteLog("---------Paused---------------------------------"); } public void OnStart(object sender, EventArgs e) { - currentSplit = 0; + currentSplitIndex = 1; state = 0; + menuSplitHelper = false; Model.CurrentState.IsGameTimePaused = true; Model.CurrentState.SetGameTime(Model.CurrentState.CurrentTime.RealTime); - splitsDone.Clear(); store.Reset(); - failedValues.Clear(); store.SplitThisTransition = true; store.Update(); WriteLog("---------New Game-------------------------------"); } public void OnUndoSplit(object sender, EventArgs e) { - currentSplit--; - //if (!settings.Ordered) splitsDone.Remove(lastSplitDone); Reminder of THIS BREAKS THINGS + currentSplitIndex--; state = 0; } public void OnSkipSplit(object sender, EventArgs e) { - currentSplit++; + currentSplitIndex++; state = 0; + menuSplitHelper = false; } public void OnSplit(object sender, EventArgs e) { - currentSplit++; + currentSplitIndex++; + state = 0; + menuSplitHelper = false; store.SplitThisTransition = true; store.Update(); - - state = 0; } public Control GetSettingsControl(LayoutMode mode) { return settings; } public void SetSettings(XmlNode document) { settings.SetSettings(document); } diff --git a/HollowKnightSettings.Designer.cs b/HollowKnightSettings.Designer.cs index c14d86d..5c76f2f 100644 --- a/HollowKnightSettings.Designer.cs +++ b/HollowKnightSettings.Designer.cs @@ -20,7 +20,7 @@ protected override void Dispose(bool disposing) { /// /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. + /// the contents of this method with the code editor. // oop sorry 'bout that /// private void InitializeComponent() { this.components = new System.ComponentModel.Container(); @@ -29,11 +29,8 @@ private void InitializeComponent() { this.flowOptions = new System.Windows.Forms.FlowLayoutPanel(); this.Options_GroupBox = new System.Windows.Forms.GroupBox(); this.versionLabel = new System.Windows.Forms.Label(); - this.RunBehaviour_GroupBox = new System.Windows.Forms.GroupBox(); + this.cboStartTriggerName = new System.Windows.Forms.ComboBox(); - this.chkAutosplitStartRuns = new System.Windows.Forms.CheckBox(); - this.chkOrdered = new System.Windows.Forms.CheckBox(); - this.chkAutosplitEndRuns = new System.Windows.Forms.CheckBox(); this.SortBy_GroupBox = new System.Windows.Forms.GroupBox(); this.rdAlpha = new System.Windows.Forms.RadioButton(); this.rdType = new System.Windows.Forms.RadioButton(); @@ -41,7 +38,7 @@ private void InitializeComponent() { this.flowMain.SuspendLayout(); this.flowOptions.SuspendLayout(); this.Options_GroupBox.SuspendLayout(); - this.RunBehaviour_GroupBox.SuspendLayout(); + this.SortBy_GroupBox.SuspendLayout(); this.SuspendLayout(); // @@ -52,7 +49,7 @@ private void InitializeComponent() { this.btnAddSplit.Size = new System.Drawing.Size(57, 21); this.btnAddSplit.TabIndex = 0; this.btnAddSplit.Text = "Add Split"; - this.ToolTips.SetToolTip(this.btnAddSplit, "All game endings automatically stop timer when on final split"); + this.ToolTips.SetToolTip(this.btnAddSplit, "Add another autosplit"); this.btnAddSplit.UseVisualStyleBackColor = true; this.btnAddSplit.Click += new System.EventHandler(this.btnAddSplit_Click); // @@ -89,7 +86,6 @@ private void InitializeComponent() { // this.Options_GroupBox.Controls.Add(this.btnAddSplit); this.Options_GroupBox.Controls.Add(this.versionLabel); - this.Options_GroupBox.Controls.Add(this.RunBehaviour_GroupBox); this.Options_GroupBox.Controls.Add(this.SortBy_GroupBox); this.Options_GroupBox.Location = new System.Drawing.Point(3, 3); this.Options_GroupBox.Name = "Options_GroupBox"; @@ -105,66 +101,17 @@ private void InitializeComponent() { this.versionLabel.Size = new System.Drawing.Size(182, 24); this.versionLabel.TabIndex = 7; this.versionLabel.Text = "Autosplitter Version: x.x.x.x"; - this.versionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // RunBehaviour_GroupBox - // - this.RunBehaviour_GroupBox.Controls.Add(this.cboStartTriggerName); - this.RunBehaviour_GroupBox.Controls.Add(this.chkAutosplitStartRuns); - this.RunBehaviour_GroupBox.Controls.Add(this.chkOrdered); - this.RunBehaviour_GroupBox.Controls.Add(this.chkAutosplitEndRuns); - this.RunBehaviour_GroupBox.Location = new System.Drawing.Point(143, 15); - this.RunBehaviour_GroupBox.Name = "RunBehaviour_GroupBox"; - this.RunBehaviour_GroupBox.Size = new System.Drawing.Size(301, 71); - this.RunBehaviour_GroupBox.TabIndex = 7; - this.RunBehaviour_GroupBox.TabStop = false; - this.RunBehaviour_GroupBox.Text = "Run behaviour"; // // cboStartTriggerName // this.cboStartTriggerName.Enabled = false; this.cboStartTriggerName.FormattingEnabled = true; - this.cboStartTriggerName.Location = new System.Drawing.Point(148, 42); + this.cboStartTriggerName.Location = new System.Drawing.Point(148, 17); this.cboStartTriggerName.Name = "cboStartTriggerName"; this.cboStartTriggerName.Size = new System.Drawing.Size(145, 21); this.cboStartTriggerName.TabIndex = 7; this.cboStartTriggerName.SelectedIndexChanged += new System.EventHandler(this.cboStartTriggerName_SelectedIndexChanged); // - // chkAutosplitStartRuns - // - this.chkAutosplitStartRuns.AutoSize = true; - this.chkAutosplitStartRuns.Location = new System.Drawing.Point(6, 42); - this.chkAutosplitStartRuns.Name = "chkAutosplitStartRuns"; - this.chkAutosplitStartRuns.Size = new System.Drawing.Size(139, 17); - this.chkAutosplitStartRuns.TabIndex = 6; - this.chkAutosplitStartRuns.Text = "Start-triggering autosplit:"; - this.ToolTips.SetToolTip(this.chkAutosplitStartRuns, "The specified autosplit starts the timer. Use for ILs"); - this.chkAutosplitStartRuns.UseVisualStyleBackColor = true; - this.chkAutosplitStartRuns.CheckedChanged += new System.EventHandler(this.AutosplitStartChanged); - // - // chkOrdered - // - this.chkOrdered.Location = new System.Drawing.Point(6, 17); - this.chkOrdered.Name = "chkOrdered"; - this.chkOrdered.Size = new System.Drawing.Size(92, 19); - this.chkOrdered.TabIndex = 4; - this.chkOrdered.Text = "Ordered Splits"; - this.ToolTips.SetToolTip(this.chkOrdered, "Required for runs with Pantheon and/or transition splits"); - this.chkOrdered.UseVisualStyleBackColor = true; - this.chkOrdered.CheckedChanged += new System.EventHandler(this.ControlChanged); - // - // chkAutosplitEndRuns - // - this.chkAutosplitEndRuns.AutoEllipsis = true; - this.chkAutosplitEndRuns.Location = new System.Drawing.Point(148, 17); - this.chkAutosplitEndRuns.Name = "chkAutosplitEndRuns"; - this.chkAutosplitEndRuns.Size = new System.Drawing.Size(133, 19); - this.chkAutosplitEndRuns.TabIndex = 5; - this.chkAutosplitEndRuns.Text = "End-triggering autosplit"; - this.ToolTips.SetToolTip(this.chkAutosplitEndRuns, "Any autosplit can stop the timer on final split to finish a run"); - this.chkAutosplitEndRuns.UseVisualStyleBackColor = true; - this.chkAutosplitEndRuns.CheckedChanged += new System.EventHandler(this.AutosplitEndChanged); - // // SortBy_GroupBox // this.SortBy_GroupBox.Controls.Add(this.rdAlpha); @@ -220,8 +167,6 @@ private void InitializeComponent() { this.flowMain.PerformLayout(); this.flowOptions.ResumeLayout(false); this.Options_GroupBox.ResumeLayout(false); - this.RunBehaviour_GroupBox.ResumeLayout(false); - this.RunBehaviour_GroupBox.PerformLayout(); this.SortBy_GroupBox.ResumeLayout(false); this.SortBy_GroupBox.PerformLayout(); this.ResumeLayout(false); @@ -235,14 +180,10 @@ private void InitializeComponent() { private System.Windows.Forms.FlowLayoutPanel flowOptions; private System.Windows.Forms.RadioButton rdType; private System.Windows.Forms.RadioButton rdAlpha; - private System.Windows.Forms.CheckBox chkOrdered; - private System.Windows.Forms.CheckBox chkAutosplitEndRuns; private System.Windows.Forms.GroupBox Options_GroupBox; private System.Windows.Forms.ToolTip ToolTips; private System.Windows.Forms.Label versionLabel; - private System.Windows.Forms.GroupBox RunBehaviour_GroupBox; private System.Windows.Forms.GroupBox SortBy_GroupBox; - private System.Windows.Forms.CheckBox chkAutosplitStartRuns; private System.Windows.Forms.ComboBox cboStartTriggerName; } } diff --git a/HollowKnightSettings.cs b/HollowKnightSettings.cs index 03ab586..f53a134 100644 --- a/HollowKnightSettings.cs +++ b/HollowKnightSettings.cs @@ -9,12 +9,10 @@ namespace LiveSplit.HollowKnight { public partial class HollowKnightSettings : UserControl { public List Splits { get; private set; } - public bool Ordered { get; set; } - public bool AutosplitEndRuns { get; set; } - public SplitName? AutosplitStartRuns { get; set; } private bool isLoading; private List availableSplits = new List(); private List availableSplitsAlphaSorted = new List(); + private Label startTriggerSeparator = new Label(); public HollowKnightSettings() { isLoading = true; @@ -36,6 +34,7 @@ public bool HasSplit(SplitName split) { private void Settings_Load(object sender, EventArgs e) { LoadSettings(); } + public void LoadSettings() { isLoading = true; this.flowMain.SuspendLayout(); @@ -44,10 +43,6 @@ public void LoadSettings() { flowMain.Controls.RemoveAt(i); } - chkOrdered.Checked = Ordered; - chkAutosplitEndRuns.Checked = AutosplitEndRuns; - chkAutosplitStartRuns.Checked = AutosplitStartRuns != null; - foreach (SplitName split in Splits) { MemberInfo info = typeof(SplitName).GetMember(split.ToString())[0]; DescriptionAttribute description = (DescriptionAttribute)info.GetCustomAttributes(typeof(DescriptionAttribute), false)[0]; @@ -61,9 +56,27 @@ public void LoadSettings() { flowMain.Controls.Add(setting); } + AddStartTriggerSeparator(); + isLoading = false; this.flowMain.ResumeLayout(true); } + + private void AddStartTriggerSeparator() { + // horizontal rule (https://stackoverflow.com/a/3296161) + this.startTriggerSeparator.AccessibleName = "Start trigger separator"; + this.startTriggerSeparator.Text = string.Empty; + this.startTriggerSeparator.BorderStyle = BorderStyle.Fixed3D; + this.startTriggerSeparator.AutoSize = false; + this.startTriggerSeparator.Height = 2; + this.flowMain.Controls.Add(this.startTriggerSeparator); + PositionStartTriggerSeparator(); + } + + private void PositionStartTriggerSeparator() { + this.flowMain.Controls.SetChildIndex(this.startTriggerSeparator, 2); + } + private void AddHandlers(HollowKnightSplitSettings setting) { setting.cboName.SelectedIndexChanged += new EventHandler(ControlChanged); setting.btnRemove.Click += new EventHandler(btnRemove_Click); @@ -135,14 +148,11 @@ public void ControlChanged(object sender, EventArgs e) { UpdateSplits(); } public void UpdateSplits() { - if (isLoading) return; - Ordered = chkOrdered.Checked; - AutosplitEndRuns = chkAutosplitEndRuns.Checked; - AutosplitStartRuns = chkAutosplitStartRuns.Checked ? - HollowKnightSplitSettings.GetSplitName(cboStartTriggerName.Text) : null; + if (isLoading) return; Splits.Clear(); + foreach (Control c in flowMain.Controls) { if (c is HollowKnightSplitSettings) { HollowKnightSplitSettings setting = (HollowKnightSplitSettings)c; @@ -152,14 +162,15 @@ public void UpdateSplits() { } } } + PositionStartTriggerSeparator(); } public XmlNode UpdateSettings(XmlDocument document) { + XmlElement xmlSettings = document.CreateElement("Settings"); - XmlElement xmlOrdered = document.CreateElement("Ordered"); - xmlOrdered.InnerText = Ordered.ToString(); - xmlSettings.AppendChild(xmlOrdered); + // TODO: have livesplit automatically change starting and ending split to just another split + /* XmlElement xmlAutosplitEndRuns = document.CreateElement("AutosplitEndRuns"); xmlAutosplitEndRuns.InnerText = AutosplitEndRuns.ToString(); xmlSettings.AppendChild(xmlAutosplitEndRuns); @@ -167,6 +178,7 @@ public XmlNode UpdateSettings(XmlDocument document) { XmlElement xmlAutosplitStartRuns = document.CreateElement("AutosplitStartRuns"); xmlAutosplitStartRuns.InnerText = AutosplitStartRuns.ToString(); xmlSettings.AppendChild(xmlAutosplitStartRuns); + */ XmlElement xmlSplits = document.CreateElement("Splits"); xmlSettings.AppendChild(xmlSplits); @@ -191,28 +203,6 @@ public void SetSettings(XmlNode settings) { XmlNode orderedNode = settings.SelectSingleNode(".//Ordered"); XmlNode AutosplitEndRunsNode = settings.SelectSingleNode(".//AutosplitEndRuns"); XmlNode AutosplitStartRunsNode = settings.SelectSingleNode(".//AutosplitStartRuns"); - bool isOrdered = false; - bool isAutosplitEndRuns = false; - - if (orderedNode != null) { - bool.TryParse(orderedNode.InnerText, out isOrdered); - } - if (AutosplitEndRunsNode != null) { - bool.TryParse(AutosplitEndRunsNode.InnerText, out isAutosplitEndRuns); - } - if (AutosplitStartRunsNode != null) { - string splitDescription = AutosplitStartRunsNode.InnerText.Trim(); - if (!string.IsNullOrEmpty(splitDescription)) { - cboStartTriggerName.DataSource = GetAvailableSplits(); - AutosplitStartRuns = HollowKnightSplitSettings.GetSplitName(splitDescription); - MemberInfo info = typeof(SplitName).GetMember(AutosplitStartRuns.ToString())[0]; - DescriptionAttribute description = (DescriptionAttribute)info.GetCustomAttributes(typeof(DescriptionAttribute), false)[0]; - cboStartTriggerName.Text = description.Description; - chkAutosplitStartRuns.Checked = true; - } - } - Ordered = isOrdered; - AutosplitEndRuns = isAutosplitEndRuns; Splits.Clear(); XmlNodeList splitNodes = settings.SelectNodes(".//Splits/Split"); @@ -222,33 +212,41 @@ public void SetSettings(XmlNode settings) { Splits.Add(split); } + if (AutosplitStartRunsNode != null || AutosplitEndRunsNode != null || orderedNode != null) { // if it's the an old .lss file + string splitDescription = AutosplitStartRunsNode?.InnerText?.Trim(); + + // if there's an explicit auto-start split, add it to the list, if not, add legacy start + if (!string.IsNullOrEmpty(splitDescription)) { + Splits.Insert(0, HollowKnightSplitSettings.GetSplitName(splitDescription)); + } else { // implicit auto-start in .lss, add it to the list + Splits.Insert(0, SplitName.LegacyStart); // add the legacy start split for now + } + + // check if autoend split + bool isAutosplitEndRuns = false; + if (AutosplitEndRunsNode != null) { + bool.TryParse(AutosplitEndRunsNode.InnerText, out isAutosplitEndRuns); + } + + // if there's an explicit auto-end, leave it, if there's not, add legacy ending split to list + if (!isAutosplitEndRuns) { + Splits.Add(SplitName.LegacyEnd); + } + + } } else if (customSettingsNode != null) { // WASM autosplitter - bool afterStart = false; - Ordered = true; - AutosplitEndRuns = true; - Splits.Clear(); XmlNodeList splitNodes = settings.SelectNodes(".//CustomSettings/Setting[@id='splits']/Setting"); foreach (XmlNode splitNode in splitNodes) { string value = splitNode.Attributes.GetNamedItem("value").Value; - if (!afterStart) { - afterStart = true; - cboStartTriggerName.DataSource = GetAvailableSplits(); - AutosplitStartRuns = HollowKnightSplitSettings.GetSplitName(value); - MemberInfo info = typeof(SplitName).GetMember(AutosplitStartRuns.ToString())[0]; - DescriptionAttribute description = (DescriptionAttribute)info.GetCustomAttributes(typeof(DescriptionAttribute), false)[0]; - cboStartTriggerName.Text = description.Description; - chkAutosplitStartRuns.Checked = true; - } else { - Splits.Add(HollowKnightSplitSettings.GetSplitName(value)); - } + Splits.Add(HollowKnightSplitSettings.GetSplitName(value)); } } else { // no splits settings, default - Ordered = false; - AutosplitEndRuns = false; Splits.Clear(); + Splits.Insert(0, SplitName.LegacyStart); + Splits.Add(SplitName.LegacyEnd); } } @@ -297,12 +295,6 @@ private void radio_CheckedChanged(object sender, EventArgs e) { } } } - - if (chkAutosplitStartRuns.Checked) { - string text = cboStartTriggerName.Text; - cboStartTriggerName.DataSource = GetAvailableSplits(); - cboStartTriggerName.Text = text; - } } private void flowMain_DragDrop(object sender, DragEventArgs e) { UpdateSplits(); @@ -327,22 +319,7 @@ private void flowMain_DragOver(object sender, DragEventArgs e) { destination.Invalidate(); } } - } - private void AutosplitEndChanged(object sender, EventArgs e) { - UpdateSplits(); - } - - private void AutosplitStartChanged(object sender, EventArgs e) { - if (chkAutosplitStartRuns.Checked) { - cboStartTriggerName.Enabled = true; - cboStartTriggerName.DataSource = GetAvailableSplits(); - } - else { - cboStartTriggerName.Text = ""; - cboStartTriggerName.Enabled = false; - cboStartTriggerName.DataSource = new List(); - } - UpdateSplits(); + PositionStartTriggerSeparator(); } private void cboStartTriggerName_SelectedIndexChanged(object sender, EventArgs e) { diff --git a/HollowKnightSplitSettings.cs b/HollowKnightSplitSettings.cs index 6885e14..aedc868 100644 --- a/HollowKnightSplitSettings.cs +++ b/HollowKnightSplitSettings.cs @@ -274,9 +274,6 @@ public enum SplitName { DungDefender, [Description("Dung Defender Idol (Item)"), ToolTip("Splits when picking up Dung Defender idol as the first idol")] DungDefenderIdol, - - - [Description("Glade Idol (Item)"), ToolTip("Splits when picking up the King's Idol in the Spirits' Glade")] GladeIdol, [Description("Elder Hu (Boss)"), ToolTip("Splits when killing Elder Hu")] @@ -623,8 +620,6 @@ public enum SplitName { AspidHunter, [Description("Aluba (Killed)"), ToolTip("Splits when killing an Aluba")] Aluba, - //[Description("Al2ba (Killed)"), ToolTip("Splits when killing two Alubas")] - //Al2ba, [Description("Little Baldur Hunter's Notes (Killed)"), ToolTip("Splits when killing all little Baldurs needed for Hunter's Notes journal completion")] RollerHuntersNotes, [Description("Maggots (Killed)"), ToolTip("Splits when killing both Maggots")] @@ -643,8 +638,6 @@ public enum SplitName { killedSanctumWarrior, [Description("Soul Twister (Killed)"), ToolTip("Splits on first Soul Twister kill")] killedSoulTwister, - //[Description("Revek (Killed)"), ToolTip("Splits when talking to Revek after clearing all other Glade ghosts")] - //Revek, [Description("Moss Knight (Mini Boss)"), ToolTip("Splits when killing Moss Knight")] MossKnight, [Description("Shrumal Ogres (Mini Boss)"), ToolTip("Splits when killing the final Shrumal Ogre")] @@ -1458,12 +1451,24 @@ public enum SplitName { Menu, [Description("Main Menu w/ Claw (Menu)"), ToolTip("Splits on transition to the main menu after Mantis Claw acquired")] MenuClaw, + [Description("Main Menu w/ Mothwing Cloak (Menu)"), ToolTip("Splits on transition to the main menu after Mothwing Cloak acquired")] + MenuCloak, + [Description("Main Menu w/ Dashmaster (Menu)"), ToolTip("Splits on transition to the main menu after Dashmaster acquired")] + MenuDashmaster, + [Description("Main Menu w/ Dream Nail (Menu)"), ToolTip("Splits on transition to the main menu after Dream Nail acquired")] + MenuDreamNail, + [Description("Main Menu w/ Dream Gate (Menu)"), ToolTip("Splits on transition to the main menu after Dream Gate acquired")] + MenuDreamGate, + [Description("Main Menu w/ 3 Dreamers (Menu)"), ToolTip("Splits on transition to the main menu after 3 Dreamers acquired")] + MenuDreamer3, [Description("Main Menu w/ Ghusk (Menu)"), ToolTip("Splits on transition to the main menu after Gorgeous Husk defeated")] MenuGorgeousHusk, [Description("Main Menu w/ Isma's Tear (Menu)"), ToolTip("Splits on transition to the main menu after Isma's Tear acquired")] MenuIsmasTear, [Description("Main Menu w/ Shade Soul (Menu)"), ToolTip("Splits on transition to the main menu after Shade Soul acquired")] MenuShadeSoul, + [Description("Main Menu w/ Void Heart (Menu)"), ToolTip("Splits on transition to the main menu after Void Heart acquired")] + MenuVoidHeart, [Description("Cornifer at Home (Transition)"), ToolTip("Splits when entering Iselda's hut while Cornifer is sleeping")] CorniferAtHome, @@ -1681,28 +1686,6 @@ public enum SplitName { [Description("Ghost Coins Incremented (Event)"), ToolTip("Splits when the ghostCoins PlayerData is updated. Unused by unmodded game, intended for use with mods.")] OnGhostCoinsIncremented, - /* - [Description("Mage Door (Test)"), ToolTip("Splits when Nailsmith is spared")] - MageDoor, - [Description("Sanctum Warrior Window (Test)"), ToolTip("Splits when Nailsmith is killed")] - MageWindow, - [Description("Mage Lord Enc. (Test)"), ToolTip("Splits when Nailsmith is spared")] - MageLordEncountered, - [Description("Mage Lord 2 Enc. (Test)"), ToolTip("Splits when Nailsmith is killed")] - MageDoor2, - [Description("Mage Window (Test)"), ToolTip("Splits when Nailsmith is spared")] - MageWindowGlass, - [Description("Mage Window Glass (Test)"), ToolTip("Splits when Nailsmith is killed")] - MageLordEncountered2, - */ - - - - /* - [Description("Equipped fr. health (menu testing)"), ToolTip("Splits when equipping charm23, for timing menuing")] - EquippedFragileHealth, - */ - } public class ToolTipAttribute : Attribute { public string ToolTip { get; set; } diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index 1f0d657..3f46791 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -12,8 +12,8 @@ [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] [assembly: Guid("b3294e28-2bd4-4e39-92fa-e04a620c7e77")] -[assembly: AssemblyVersion("3.1.16.0")] -[assembly: AssemblyFileVersion("3.1.16.0")] +[assembly: AssemblyVersion("4.0.0.0")] +[assembly: AssemblyFileVersion("4.0.0.0")] #if !Info [assembly: ComponentFactory(typeof(HollowKnightFactory))] #endif diff --git a/README.md b/README.md index 5534f5c..4568e4b 100644 --- a/README.md +++ b/README.md @@ -6,4 +6,27 @@ Hollow Knight Autosplitter / Load Remover - Edit your splits - Click the 'Activate' autosplitter button - Add any splits to your main splits file -- Hit the 'Settings' button to then set up the same autosplitter splits \ No newline at end of file +- Hit the 'Settings' button to then set up the same autosplitter splits + +## Building the autosplitter from source +If you would like to modify and build the autosplitter yourself, download the source and change the file path to your livesplit folder in `LiveSplit.HollowKnight.csproj`. +```xml + + + ..\..\LiveSplit + +``` +For example, I set it to `D:\Documents\LiveSplit` as that is where my `LiveSplit.exe` is. With this you should be set all to build it. + +## Make your own autosplit +If you would like to add or modify an autosplit, there are two things you must do: +Each split is a value in an enum called `SplitName`, which is declared in `HollowKnightSplitSettings.cs`. You must add a value for your splits, and give it the proper attributes that will be the split's name and mouse-over description inside LiveSplit. To add logic for your split, you need to add a case for it in the giant switch in `HollowKnightComponent`, and have it appropriately set the value of `shouldSplit`, `shouldSkip` and `shouldReset` to true for the conditions under which you wish to split, skip or reset respectively. + +**Important note** : Modifications to the autosplitter are allowed but may be subject to retiming at moderators' discretion. Modifications to the load removal or the start/end conditions may result in your run time being adjusted or retimed RTA. + + +## Contributing to the official autosplitter +Autosplitter maintenance is currently led by slaurent22. If you would like to contribute, send pull requests to [his branch](https://github.com/slaurent22/LiveSplit.HollowKnight) and he will manage including it in the next official update. + +*** +If you have any specific questions about the autosplitter's code, you can message @slaurent, @mayonnaisical or @cerpintext on discord