From 30bc0788e34ed9807125aea283d75abb1877ed30 Mon Sep 17 00:00:00 2001 From: small Date: Mon, 18 Apr 2022 21:40:16 +0800 Subject: [PATCH] clear data befor open --- MyFirstPlugin.csproj | 3 +++ Patch.cs | 4 +--- Plugin.cs | 48 ++++++++++++++++++++++++++------------------ 3 files changed, 32 insertions(+), 23 deletions(-) diff --git a/MyFirstPlugin.csproj b/MyFirstPlugin.csproj index 712a1f5..fdfb513 100644 --- a/MyFirstPlugin.csproj +++ b/MyFirstPlugin.csproj @@ -30,5 +30,8 @@ lib\netstandard.dll False + + lib\UnityEngine.UI.dll + diff --git a/Patch.cs b/Patch.cs index ad8ab3f..267786e 100644 --- a/Patch.cs +++ b/Patch.cs @@ -9,13 +9,11 @@ internal class DSPPatch [HarmonyPrefix, HarmonyPatch(typeof(UIStationWindow), "_OnOpen")] public static bool openStorageWindow(UIStationWindow __instance) { - Debug.Log(__instance.stationId); - //如果有factory,跳过初始化过程 if (__instance.factory == null) { return true; } - Debug.Log(__instance.factory.planet); + //如果有factory,跳过初始化过程 __instance.transform.SetAsLastSibling(); return false; } diff --git a/Plugin.cs b/Plugin.cs index fc0a07d..f1dc5d4 100644 --- a/Plugin.cs +++ b/Plugin.cs @@ -3,6 +3,7 @@ using UnityEngine; using System.Collections.Generic; using System.Reflection; +using UnityEngine.Events; namespace MyFirstPlugin { @@ -15,9 +16,10 @@ public class Plugin : BaseUnityPlugin private List arrayList = new List(); internal static string search = ""; - internal static Dictionary itemCache = new Dictionary(); + internal static Dictionary itemCache = new Dictionary(); internal static List cells = new List(); - internal static Vector2 scroll = new Vector2(0,0); + internal static Vector2 scroll = new Vector2(0, 0); + internal static double time = 0; private void Awake() { @@ -28,12 +30,11 @@ private void Awake() Window.Show = false; Window.OnWinodwGUI = guiInfo; Window.OnWindowOpen = () => - { - getInfo(); - }; - Window.OnWindowClose = () => { arrayList.Clear(); + itemCache.Clear(); + cells.Clear(); + getInfo(); }; } @@ -46,9 +47,9 @@ void Update() { if (Input.GetKeyDown(KeyCode.F4)) { - if (!GameMain.isRunning) + if (!GameMain.isRunning && !GameMain.isPaused) { - Window.Show=false; + Window.Show = false; return; } Window.Show = !Window.Show; @@ -61,16 +62,16 @@ void getInfo() Dictionary> map = new Dictionary>(); foreach (StationComponent station in stations) { - if (station==null || station.isCollector || station.isVeinCollector) + if (station == null || station.isCollector || station.isVeinCollector) { continue; } - TransportInfo info=new TransportInfo(); + TransportInfo info = new TransportInfo(); info.id = station.id; info.gid = station.gid; - info.name = string.IsNullOrEmpty(station.name)?"transfer-"+ info.id : station.name; - info.entityId=station.entityId; - info.planetId=station.planetId; + info.name = string.IsNullOrEmpty(station.name) ? "transfer-" + info.id : station.name; + info.entityId = station.entityId; + info.planetId = station.planetId; arrayList.Add(info); int galaxy = station.planetId / 100; if (!map.ContainsKey(galaxy)) @@ -81,9 +82,9 @@ void getInfo() } foreach (var kv in map) { - string name=GameMain.galaxy.StarById(kv.Key).displayName; + string name = GameMain.galaxy.StarById(kv.Key).displayName; kv.Value.Sort(); - cells.Add(new Cell(name,kv.Value, OpenTransfer)); + cells.Add(new Cell(name, kv.Value, OpenTransfer)); } } @@ -92,9 +93,9 @@ void UpdateItems() StationComponent[] stations = GameMain.data.galacticTransport.stationPool; foreach (var info in arrayList) { - var item=stations[info.gid]; + var item = stations[info.gid]; int i = -1; - foreach(var storage in item.storage) + foreach (var storage in item.storage) { i++; if (storage.itemId <= 0) continue; @@ -109,14 +110,17 @@ void UpdateItems() void OpenTransfer(TransportInfo item) { - var uigame=UIRoot.instance.uiGame; + var uigame = UIRoot.instance.uiGame; uigame.OpenPlayerInventory(); var win = uigame.stationWindow; - win.player= GameMain.mainPlayer; + win.player = GameMain.mainPlayer; win.factory = GameMain.data.GetOrCreateFactory(GameMain.data.galaxy.PlanetById(item.planetId)); win.transport = win.factory.transport; win.powerSystem = win.factory.powerSystem; win.factorySystem = win.factory.factorySystem; + + win.nameInput.onValueChanged.AddListener(new UnityAction(win.OnNameInputSubmit)); + win.nameInput.onEndEdit.AddListener(new UnityAction(win.OnNameInputSubmit)); win._Open(); win.stationId = item.id; Window.Show = false; @@ -129,7 +133,11 @@ void OnGUI() void guiInfo() { - UpdateItems(); + if (GameMain.gameTime - time > 1) + { + UpdateItems(); + time = GameMain.gameTime; + } GUILayout.BeginHorizontal(); GUILayout.Label("Search:", GUILayout.ExpandWidth(false)); search = GUILayout.TextField(search);