mirror of
https://github.com/soarqin/DSP_Mods_TO.git
synced 2025-12-14 02:23:32 +08:00
146 lines
7.9 KiB
C#
146 lines
7.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using BepInEx.Configuration;
|
|
using CruiseAssist.Commons;
|
|
using CruiseAssist.Enums;
|
|
using CruiseAssist.UI;
|
|
|
|
namespace CruiseAssist;
|
|
|
|
internal class CruiseAssistConfigManager(ConfigFile config) : ConfigManager(config)
|
|
{
|
|
|
|
protected override void CheckConfigImplements(Step step)
|
|
{
|
|
var saveFlag = false;
|
|
switch (step)
|
|
{
|
|
case Step.Awake:
|
|
saveFlag = OnAwake();
|
|
OnAwakeOrGameMainBegin();
|
|
OnAwakeOrGameMainBeginOrStateOrChangeSeed();
|
|
break;
|
|
case Step.GameMainBegin:
|
|
OnAwakeOrGameMainBegin();
|
|
OnAwakeOrGameMainBeginOrStateOrChangeSeed();
|
|
break;
|
|
case Step.ChangeSeed:
|
|
OnAwakeOrGameMainBeginOrStateOrChangeSeed();
|
|
break;
|
|
case Step.State:
|
|
OnAwakeOrGameMainBeginOrStateOrChangeSeed();
|
|
saveFlag = OnState();
|
|
break;
|
|
case Step.UniverseGenCreateGalaxy:
|
|
default:
|
|
break;
|
|
}
|
|
if (saveFlag)
|
|
{
|
|
Save();
|
|
}
|
|
}
|
|
|
|
private static bool OnState()
|
|
{
|
|
var saveFlag = false;
|
|
LogManager.LogInfo("check state.");
|
|
saveFlag |= UpdateEntry("Setting", "Enable", CruiseAssistPlugin.Enable);
|
|
saveFlag |= UpdateEntry("Setting", "MarkVisited", CruiseAssistPlugin.Conf.MarkVisitedFlag);
|
|
saveFlag |= UpdateEntry("Setting", "SelectFocus", CruiseAssistPlugin.Conf.SelectFocusFlag);
|
|
saveFlag |= UpdateEntry("Setting", "HideDuplicateHistory", CruiseAssistPlugin.Conf.HideDuplicateHistoryFlag);
|
|
saveFlag |= UpdateEntry("Setting", "AutoDisableLockCursor", CruiseAssistPlugin.Conf.AutoDisableLockCursorFlag);
|
|
saveFlag |= UpdateEntry("Setting", "ShowMainWindowWhenTargetSelectedEvenNotSailMode", CruiseAssistPlugin.Conf.ShowMainWindowWhenTargetSelectedEvenNotSailModeFlag);
|
|
saveFlag |= UpdateEntry("Setting", "CloseStarListWhenSetTargetPlanet", CruiseAssistPlugin.Conf.CloseStarListWhenSetTargetPlanetFlag);
|
|
saveFlag |= UpdateEntry("Setting", "HideBottomCloseButton", CruiseAssistPlugin.Conf.HideBottomCloseButtonFlag);
|
|
saveFlag |= UpdateEntry("Setting", "UIScale", (int)CruiseAssistMainUI.Scale);
|
|
saveFlag |= UpdateEntry("Setting", "MainWindowViewMode", CruiseAssistMainUI.ViewMode.ToString());
|
|
for (var j = 0; j < 2; j++)
|
|
{
|
|
saveFlag |= UpdateEntry("State", $"MainWindow{j}Left", (int)CruiseAssistMainUI.Rect[j].x);
|
|
saveFlag |= UpdateEntry("State", $"MainWindow{j}Top", (int)CruiseAssistMainUI.Rect[j].y);
|
|
saveFlag |= UpdateEntry("State", $"StarListWindow{j}Left", (int)CruiseAssistStarListUI.Rect[j].x);
|
|
saveFlag |= UpdateEntry("State", $"StarListWindow{j}Top", (int)CruiseAssistStarListUI.Rect[j].y);
|
|
saveFlag |= UpdateEntry("State", $"ConfigWindow{j}Left", (int)CruiseAssistConfigUI.Rect[j].x);
|
|
saveFlag |= UpdateEntry("State", $"ConfigWindow{j}Top", (int)CruiseAssistConfigUI.Rect[j].y);
|
|
}
|
|
saveFlag |= UpdateEntry("State", "StarListWindowListSelected", CruiseAssistStarListUI.ListSelected);
|
|
saveFlag |= UpdateEntry("State", "DebugWindowLeft", (int)CruiseAssistDebugUI.Rect.x);
|
|
saveFlag |= UpdateEntry("State", "DebugWindowTop", (int)CruiseAssistDebugUI.Rect.y);
|
|
if (CruiseAssistPlugin.Seed != -1)
|
|
{
|
|
saveFlag |= UpdateEntry("Save", $"History_{CruiseAssistPlugin.Seed}", ListUtils.ToString(CruiseAssistPlugin.History));
|
|
saveFlag |= UpdateEntry("Save", $"Bookmark_{CruiseAssistPlugin.Seed}", ListUtils.ToString(CruiseAssistPlugin.Bookmark));
|
|
}
|
|
CruiseAssistMainUI.NextCheckGameTick = long.MaxValue;
|
|
return saveFlag;
|
|
}
|
|
|
|
private static void OnAwakeOrGameMainBeginOrStateOrChangeSeed()
|
|
{
|
|
if (DSPGame.IsMenuDemo || GameMain.galaxy == null)
|
|
{
|
|
var reset = CruiseAssistPlugin.Seed != -1;
|
|
if (!reset) return;
|
|
CruiseAssistPlugin.Seed = -1;
|
|
CruiseAssistPlugin.History = [];
|
|
CruiseAssistPlugin.HistoryDistinct = [];
|
|
CruiseAssistPlugin.Bookmark = [];
|
|
CruiseAssistPlugin.BookmarkSet = [];
|
|
LogManager.LogInfo("clear seed.");
|
|
}
|
|
else
|
|
{
|
|
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}.");
|
|
}
|
|
}
|
|
|
|
private static void OnAwakeOrGameMainBegin()
|
|
{
|
|
CruiseAssistDebugUI.Show = Bind("Debug", "DebugWindowShow", false).Value;
|
|
CruiseAssistPlugin.Enable = Bind("Setting", "Enable", true).Value;
|
|
CruiseAssistPlugin.Conf.MarkVisitedFlag = Bind("Setting", "MarkVisited", true).Value;
|
|
CruiseAssistPlugin.Conf.SelectFocusFlag = Bind("Setting", "SelectFocus", true).Value;
|
|
CruiseAssistPlugin.Conf.HideDuplicateHistoryFlag = Bind("Setting", "HideDuplicateHistory", true).Value;
|
|
CruiseAssistPlugin.Conf.AutoDisableLockCursorFlag = Bind("Setting", "AutoDisableLockCursor", false).Value;
|
|
CruiseAssistPlugin.Conf.ShowMainWindowWhenTargetSelectedEvenNotSailModeFlag = Bind("Setting", "ShowMainWindowWhenTargetSelectedEvenNotSailMode", true).Value;
|
|
CruiseAssistPlugin.Conf.CloseStarListWhenSetTargetPlanetFlag = Bind("Setting", "CloseStarListWhenSetTargetPlanet", false).Value;
|
|
CruiseAssistPlugin.Conf.HideBottomCloseButtonFlag = Bind("Setting", "HideBottomCloseButton", true).Value;
|
|
CruiseAssistMainUI.Scale = Bind("Setting", "UIScale", 150).Value;
|
|
var viewModeStr = Bind("Setting", "MainWindowViewMode", CruiseAssistMainUIViewMode.Full.ToString()).Value;
|
|
EnumUtils.TryParse(viewModeStr, out CruiseAssistMainUI.ViewMode);
|
|
for (var i = 0; i < 2; i++)
|
|
{
|
|
CruiseAssistMainUI.Rect[i].x = Bind("State", $"MainWindow{i}Left", 100).Value;
|
|
CruiseAssistMainUI.Rect[i].y = Bind("State", $"MainWindow{i}Top", 100).Value;
|
|
CruiseAssistStarListUI.Rect[i].x = Bind("State", $"StarListWindow{i}Left", 100).Value;
|
|
CruiseAssistStarListUI.Rect[i].y = Bind("State", $"StarListWindow{i}Top", 100).Value;
|
|
CruiseAssistConfigUI.Rect[i].x = Bind("State", $"ConfigWindow{i}Left", 100).Value;
|
|
CruiseAssistConfigUI.Rect[i].y = Bind("State", $"ConfigWindow{i}Top", 100).Value;
|
|
}
|
|
CruiseAssistStarListUI.ListSelected = Bind("State", "StarListWindowListSelected", 0).Value;
|
|
CruiseAssistDebugUI.Rect.x = Bind("State", "DebugWindowLeft", 100).Value;
|
|
CruiseAssistDebugUI.Rect.y = Bind("State", "DebugWindowTop", 100).Value;
|
|
}
|
|
|
|
private static bool OnAwake()
|
|
{
|
|
var configEntry = Bind("Base", "ModVersion", "0.0.37", "Don't change.");
|
|
configEntry.Value = "0.0.37";
|
|
Migration("State", "MainWindow0Left", 100, "State", "InfoWindowLeft");
|
|
Migration("State", "MainWindow0Top", 100, "State", "InfoWindowTop");
|
|
Migration("State", "MainWindow0Left", 100, "State", "MainWindowLeft");
|
|
Migration("State", "MainWindow0Top", 100, "State", "MainWindowTop");
|
|
Migration("State", "StarListWindow0Left", 100, "State", "StarListWindowLeft");
|
|
Migration("State", "StarListWindow0Top", 100, "State", "StarListWindowTop");
|
|
Migration("Setting", "CloseStarListWhenSetTargetPlanet", false, "Setting", "HideStarListWhenSetTargetPlanet");
|
|
return true;
|
|
}
|
|
} |