From 13e9a200b50d8762c388187757f9b4c29909a1d9 Mon Sep 17 00:00:00 2001 From: Soar Qin Date: Fri, 22 Mar 2024 02:53:22 +0800 Subject: [PATCH] WIP --- AutoPilot/README.md | 20 +++++++ AutoPilot/UI/AutoPilotConfigUI.cs | 4 +- AutoPilot/UI/StringsUI.cs | 3 +- CruiseAssist/README.md | 21 +++++++ CruiseAssist/UI/CruiseAssistConfigUI.cs | 4 +- CruiseAssist/UI/CruiseAssistStarListUI.cs | 68 +++++++++++++++++------ CruiseAssist/UI/StringsUI.cs | 9 +-- 7 files changed, 102 insertions(+), 27 deletions(-) create mode 100644 AutoPilot/README.md create mode 100644 CruiseAssist/README.md diff --git a/AutoPilot/README.md b/AutoPilot/README.md new file mode 100644 index 0000000..e90d641 --- /dev/null +++ b/AutoPilot/README.md @@ -0,0 +1,20 @@ +# AutoPilot + +## What's this? + +Auto pilot to a planet or star system. + +This mod is a CruiseAssist extension. + +Original mod: [AutoPilot](https://thunderstore.io/package/tanu/AutoPilot/) +It was discontinued, so I made a fork of it. + +## CHANGE LOG + +### 0.1.0 +* Cleanup from disassmbly codes of AutoPilot 0.0.4. +* Optimization to codes. +* Add a simple localization implementation. + +### Origianal AutoPilot Changelogs +Check [original mod](https://thunderstore.io/c/dyson-sphere-program/p/tanu/AutoPilot/) for details diff --git a/AutoPilot/UI/AutoPilotConfigUI.cs b/AutoPilot/UI/AutoPilotConfigUI.cs index 6aba9e7..d06e0f5 100644 --- a/AutoPilot/UI/AutoPilotConfigUI.cs +++ b/AutoPilot/UI/AutoPilotConfigUI.cs @@ -87,7 +87,7 @@ internal static class AutoPilotConfigUI _labelStyle.fixedWidth = 240f; GUILayout.Label(Strings.Get(17), _labelStyle); GUILayout.FlexibleSpace(); - SetValue(ref TempWarpMinRangeAu, GUILayout.TextArea(TempWarpMinRangeAu, _textFieldStyle), 1, 60, ref AutoPilotPlugin.Conf.WarpMinRangeAu); + SetValue(ref TempWarpMinRangeAu, GUILayout.TextField(TempWarpMinRangeAu, _textFieldStyle), 1, 60, ref AutoPilotPlugin.Conf.WarpMinRangeAu); _labelStyle.fixedWidth = 20f; GUILayout.Label("AU", _labelStyle); GUILayout.EndHorizontal(); @@ -95,7 +95,7 @@ internal static class AutoPilotConfigUI _labelStyle.fixedWidth = 240f; GUILayout.Label(Strings.Get(18), _labelStyle); GUILayout.FlexibleSpace(); - SetValue(ref TempSpeedToWarp, GUILayout.TextArea(TempSpeedToWarp, _textFieldStyle), 0, 2000, ref AutoPilotPlugin.Conf.SpeedToWarp); + SetValue(ref TempSpeedToWarp, GUILayout.TextField(TempSpeedToWarp, _textFieldStyle), 0, 2000, ref AutoPilotPlugin.Conf.SpeedToWarp); _labelStyle.fixedWidth = 20f; GUILayout.Label("m/s", _labelStyle); GUILayout.EndHorizontal(); diff --git a/AutoPilot/UI/StringsUI.cs b/AutoPilot/UI/StringsUI.cs index 0cdebce..dabc66a 100644 --- a/AutoPilot/UI/StringsUI.cs +++ b/AutoPilot/UI/StringsUI.cs @@ -1,5 +1,4 @@ using System; -using CruiseAssist.Commons; using HarmonyLib; namespace AutoPilot.UI; @@ -60,7 +59,7 @@ public static class Strings "最小能量百分比 (0-100 默认:20)", "最大速度 (0-2000 默认:2000)", "启用曲速最小距离 (1-60 默认:2)", - "航行速度达到此值时启动曲速 (0-2000 默认:1200)", + "启动曲速的航行速度 (0-2000 默认:1200)", "即使本星系的行星也允许曲速", // 20 "设置目标行星后立即开始导航", diff --git a/CruiseAssist/README.md b/CruiseAssist/README.md new file mode 100644 index 0000000..49a0115 --- /dev/null +++ b/CruiseAssist/README.md @@ -0,0 +1,21 @@ +# CruiseAssist + +## What's this? + +Adjust the orientation to the target planet or star when moving between planets or star systems. + +You can set the target by selecting it in the indicator, by selecting it in the star list, or by facing the star. + +Original mod: [CruiseAssist](https://thunderstore.io/package/tanu/CruiseAssist/) +It was discontinued, so I made a fork of it. + +## CHANGE LOG + +### 0.1.0 +* Cleanup from disassmbly codes of CruiseAssist 0.0.37. +* Heavily optimization to codes, with CPU usage reduced a lot. +* Add search text box to star list. +* Add a simple localization implementation. + +### Origianal CruiseAssit Changelogs +* Check [original mod](https://thunderstore.io/c/dyson-sphere-program/p/tanu/CruiseAssit/) for details diff --git a/CruiseAssist/UI/CruiseAssistConfigUI.cs b/CruiseAssist/UI/CruiseAssistConfigUI.cs index fd56df6..aadb712 100644 --- a/CruiseAssist/UI/CruiseAssistConfigUI.cs +++ b/CruiseAssist/UI/CruiseAssistConfigUI.cs @@ -1,6 +1,4 @@ -using System; -using CruiseAssist.Commons; -using CruiseAssist.Enums; +using CruiseAssist.Enums; using UnityEngine; namespace CruiseAssist.UI; diff --git a/CruiseAssist/UI/CruiseAssistStarListUI.cs b/CruiseAssist/UI/CruiseAssistStarListUI.cs index 8c5c264..497fc77 100644 --- a/CruiseAssist/UI/CruiseAssistStarListUI.cs +++ b/CruiseAssist/UI/CruiseAssistStarListUI.cs @@ -1,6 +1,6 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; +using CruiseAssist.Commons; using HarmonyLib; using UnityEngine; @@ -17,6 +17,7 @@ public static class CruiseAssistStarListUI private static GUIStyle _nSortButtonStyle; private static GUIStyle _verticalScrollbarStyle; private static GUIStyle _commonButtonStyle; + private static GUIStyle _searchLabelStyle; private static string[] _tabs = [ Strings.Get(10), Strings.Get(11), @@ -25,8 +26,8 @@ public static class CruiseAssistStarListUI private static string[][] _buttonTexts = [ - [Strings.Get(13), Strings.Get(14)], - [Strings.Get(13), Strings.Get(14), Strings.Get(15)], + [Strings.Get(13), Strings.Get(12)], + [Strings.Get(13), Strings.Get(12), Strings.Get(15)], [Strings.Get(13), Strings.Get(16), Strings.Get(15)] ]; @@ -89,13 +90,20 @@ public static class CruiseAssistStarListUI }, fontSize = 12 }; - _verticalScrollbarStyle = new GUIStyle(CruiseAssistMainUI.BaseVerticalScrollBarStyle); + _verticalScrollbarStyle = CruiseAssistMainUI.BaseVerticalScrollBarStyle; _commonButtonStyle = new GUIStyle(CruiseAssistMainUI.BaseButtonStyle) { fixedWidth = 80f, fixedHeight = 20f, fontSize = 12 }; + _searchLabelStyle = new GUIStyle(GUI.skin.label) + { + fixedWidth = 50f, + fixedHeight = 20f, + fontSize = 12, + alignment = TextAnchor.MiddleRight + }; return; void LangChanged() @@ -170,7 +178,18 @@ public static class CruiseAssistStarListUI { case 0: UpdateStarPlanetList(); - foreach (var celestialBody in _celestialBodies) + GUILayout.BeginHorizontal(); + GUILayout.Label(Strings.Get(32), _searchLabelStyle); + GUI.changed = false; + _searchString = GUILayout.TextField(_searchString, CruiseAssistMainUI.BaseTextFieldStyle); + if (GUI.changed) + { + _searchResults = string.IsNullOrEmpty(_searchString) + ? null + : _celestialBodies.Where(celestialBody => (celestialBody.IsPlanet ? celestialBody.PlanetData.name : celestialBody.StarData.name).Contains(_searchString)).ToList(); + } + GUILayout.EndHorizontal(); + foreach (var celestialBody in _searchResults ?? _celestialBodies) { var selected = celestialBody.Selected; GUILayout.BeginHorizontal(); @@ -495,7 +514,7 @@ public static class CruiseAssistStarListUI return; } _nextCheckTick2 = GameMain.instance.timei + (GameMain.data.localPlanet == null ? 30 : 300); - foreach (var body in ListSelected == 1 ? History : Bookmark) + foreach (var body in ListSelected == 1 ? _historyDistinct : Bookmark) { body.Range = (body.PlanetData.uPosition - GameMain.mainPlayer.uPosition).magnitude - body.PlanetData.realRadius; } @@ -645,13 +664,16 @@ public static class CruiseAssistStarListUI { History.RemoveAt(0); } - - History.Add(new BookmarkCelestialBody - { - PlanetData = planet, - Range = (planet.uPosition - GameMain.mainPlayer.uPosition).magnitude - planet.realRadius, - InBookmark = HasBookmark(planet.id) - }); + var b = History.Find(b => b.PlanetData == planet); + if (b != null) + History.Add(b); + else + History.Add(new BookmarkCelestialBody + { + PlanetData = planet, + Range = (planet.uPosition - GameMain.mainPlayer.uPosition).magnitude - planet.realRadius, + InBookmark = HasBookmark(planet.id) + }); _historyDistinct = Enumerable.Reverse(History).Distinct().ToList(); } @@ -665,7 +687,7 @@ public static class CruiseAssistStarListUI { if (index < 0 || index >= _historyDistinct.Count) return; var body = _historyDistinct[index]; - History.Remove(body); + History.RemoveAll(b => b == body); _historyDistinct.RemoveAt(index); } @@ -687,8 +709,20 @@ public static class CruiseAssistStarListUI if (!int.TryParse(s, out var id)) continue; var planet = GameMain.galaxy.PlanetById(id); if (planet == null) continue; - AddHistory(planet); + var b = History.Find(b => b.PlanetData == planet); + if (b != null) + { + History.Add(b); + continue; + } + History.Add(new BookmarkCelestialBody + { + PlanetData = planet, + Range = (planet.uPosition - GameMain.mainPlayer.uPosition).magnitude - planet.realRadius, + InBookmark = HasBookmark(planet.id) + }); } + _historyDistinct = Enumerable.Reverse(History).Distinct().ToList(); } private static bool HasBookmark(int id) => BookmarkSet.Contains(id); @@ -763,6 +797,8 @@ public static class CruiseAssistStarListUI private static List _stars; private static List _localStarPlanets; private static List _selectedStarPlanets; + private static List _searchResults; + private static string _searchString; private static readonly List History = []; private static List _historyDistinct = []; diff --git a/CruiseAssist/UI/StringsUI.cs b/CruiseAssist/UI/StringsUI.cs index e911d38..607428a 100644 --- a/CruiseAssist/UI/StringsUI.cs +++ b/CruiseAssist/UI/StringsUI.cs @@ -1,5 +1,4 @@ using System; -using CruiseAssist.Commons; using HarmonyLib; namespace CruiseAssist.UI; @@ -45,7 +44,8 @@ public static class Strings "Hide bottom close button.", // 30 "FULL", - "MINI" + "MINI", + "Search: ", ]; private static readonly string[] ZhoCn = @@ -71,7 +71,7 @@ public static class Strings // 15 "删除", "排序", - "设为目标", + "选择", "添加", "删除", // 20 @@ -88,7 +88,8 @@ public static class Strings "隐藏底部关闭按钮", // 30 "完整", - "迷你" + "迷你", + "搜索:", ]; public static Action OnLanguageChanged;