diff --git a/CruiseAssist/CruiseAssistConfigManager.cs b/CruiseAssist/CruiseAssistConfigManager.cs index 21d2dea..7ce4572 100644 --- a/CruiseAssist/CruiseAssistConfigManager.cs +++ b/CruiseAssist/CruiseAssistConfigManager.cs @@ -1,4 +1,6 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Linq; using BepInEx.Configuration; using CruiseAssist.Commons; using CruiseAssist.Enums; @@ -82,8 +84,10 @@ internal class CruiseAssistConfigManager(ConfigFile config) : ConfigManager(conf var reset = CruiseAssistPlugin.Seed != -1; if (!reset) return; CruiseAssistPlugin.Seed = -1; - CruiseAssistPlugin.History = new List(); - CruiseAssistPlugin.Bookmark = new List(); + CruiseAssistPlugin.History = []; + CruiseAssistPlugin.HistoryDistinct = []; + CruiseAssistPlugin.Bookmark = []; + CruiseAssistPlugin.BookmarkSet = []; LogManager.LogInfo("clear seed."); } else @@ -91,7 +95,9 @@ internal class CruiseAssistConfigManager(ConfigFile config) : ConfigManager(conf if (CruiseAssistPlugin.Seed == GameMain.galaxy.seed) return; CruiseAssistPlugin.Seed = GameMain.galaxy.seed; CruiseAssistPlugin.History = ListUtils.ParseToIntList(Bind("Save", $"History_{CruiseAssistPlugin.Seed}", "").Value); + CruiseAssistPlugin.HistoryDistinct = Enumerable.Reverse(CruiseAssistPlugin.History).Distinct().ToList(); CruiseAssistPlugin.Bookmark = ListUtils.ParseToIntList(Bind("Save", $"Bookmark_{CruiseAssistPlugin.Seed}", "").Value); + CruiseAssistPlugin.BookmarkSet = [..CruiseAssistPlugin.Bookmark]; LogManager.LogInfo($"change seed {CruiseAssistPlugin.Seed}."); } } diff --git a/CruiseAssist/CruiseAssistPlugin.cs b/CruiseAssist/CruiseAssistPlugin.cs index 7efd272..c555cd2 100644 --- a/CruiseAssist/CruiseAssistPlugin.cs +++ b/CruiseAssist/CruiseAssistPlugin.cs @@ -148,6 +148,28 @@ public class CruiseAssistPlugin : BaseUnityPlugin internal static readonly List Extensions = []; private Harmony _harmony; private static bool _initialized; + + public static void AddHistory(int id) + { + if (History.Count >= 128) + { + History.RemoveAt(0); + } + History.Add(id); + HistoryDistinct = Enumerable.Reverse(History).Distinct().ToList(); + } + + public static void RemoveHistoryAt(int index) + { + History.RemoveAt(index); + HistoryDistinct = Enumerable.Reverse(History).Distinct().ToList(); + } + + public static void ClearHistory() + { + History.Clear(); + HistoryDistinct.Clear(); + } public static bool HasBookmark(int id) => BookmarkSet.Contains(id); diff --git a/CruiseAssist/Patches/Patch_GameMain.cs b/CruiseAssist/Patches/Patch_GameMain.cs index 17ff42f..cab2f2c 100644 --- a/CruiseAssist/Patches/Patch_GameMain.cs +++ b/CruiseAssist/Patches/Patch_GameMain.cs @@ -11,10 +11,10 @@ internal class Patch_GameMain [HarmonyPostfix] public static void Begin_Postfix() { + CruiseAssistStarListUI.OnReset(); ConfigManager.CheckConfig(ConfigManager.Step.GameMainBegin); CruiseAssistPlugin.Extensions.ForEach(delegate(ICruiseAssistExtensionAPI extension) { - CruiseAssistStarListUI.OnReset(); extension.CheckConfig(ConfigManager.Step.GameMainBegin.ToString()); }); } diff --git a/CruiseAssist/Patches/Patch_PlayerMoveWalk.cs b/CruiseAssist/Patches/Patch_PlayerMoveWalk.cs index fae4cf4..d95df05 100644 --- a/CruiseAssist/Patches/Patch_PlayerMoveWalk.cs +++ b/CruiseAssist/Patches/Patch_PlayerMoveWalk.cs @@ -23,11 +23,7 @@ internal class Patch_PlayerMoveWalk { if (CruiseAssistPlugin.History.Count == 0 || CruiseAssistPlugin.History.Last() != GameMain.localPlanet.id) { - if (CruiseAssistPlugin.History.Count >= 128) - { - CruiseAssistPlugin.History.RemoveAt(0); - } - CruiseAssistPlugin.History.Add(GameMain.localPlanet.id); + CruiseAssistPlugin.AddHistory(GameMain.localPlanet.id); ConfigManager.CheckConfig(ConfigManager.Step.State); } } diff --git a/CruiseAssist/UI/CruiseAssistStarListUI.cs b/CruiseAssist/UI/CruiseAssistStarListUI.cs index f71a319..f826200 100644 --- a/CruiseAssist/UI/CruiseAssistStarListUI.cs +++ b/CruiseAssist/UI/CruiseAssistStarListUI.cs @@ -70,10 +70,6 @@ public static class CruiseAssistStarListUI { fixedHeight = 40f }; - _hRangeLabelHighlightStyle = new GUIStyle(_hRangeLabelStyle) - { - fixedHeight = 40f - }; _nActionButtonStyle = new GUIStyle(CruiseAssistMainUI.BaseButtonStyle) { fixedWidth = 40f, @@ -232,7 +228,7 @@ public static class CruiseAssistStarListUI var enumBookmark = ListSelected != 1 ? CruiseAssistPlugin.Bookmark : Enumerable.Reverse(CruiseAssistPlugin.History); if (ListSelected == 1 && ActionSelected[ListSelected] != 2 && CruiseAssistPlugin.Conf.HideDuplicateHistoryFlag) { - enumBookmark = Enumerable.Reverse(CruiseAssistPlugin.HistoryDistinct); + enumBookmark = CruiseAssistPlugin.HistoryDistinct; } var listIndex = -1; @@ -334,7 +330,7 @@ public static class CruiseAssistStarListUI { if (listIndex != 0) { - CruiseAssistPlugin.History.RemoveAt(CruiseAssistPlugin.History.Count - 1 - listIndex); + CruiseAssistPlugin.RemoveHistoryAt(CruiseAssistPlugin.History.Count - 1 - listIndex); CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300L; }