mirror of
https://github.com/soarqin/DSP_Mods.git
synced 2026-08-05 11:10:12 +08:00
159 lines
5.5 KiB
C#
159 lines
5.5 KiB
C#
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using CommonAPI.Systems;
|
|
using UXAssist.Common;
|
|
using UXAssist.UI;
|
|
using GameLogicProc = UXAssist.Common.GameLogic;
|
|
|
|
namespace UXAssist.Functions.UI;
|
|
|
|
internal static class MenuButtonUI
|
|
{
|
|
private static bool _initialized;
|
|
private static PressKeyBind _toggleKey;
|
|
private static bool _configWinInitialized;
|
|
private static MyConfigWindow _configWin;
|
|
private static GameObject _buttonOnPlanetGlobe;
|
|
|
|
public static void Init()
|
|
{
|
|
_toggleKey = KeyBindings.RegisterKeyBinding(new BuiltinKey
|
|
{
|
|
key = new CombineKey((int)KeyCode.BackQuote, CombineKey.ALT_COMB, ECombineKeyAction.OnceClick, false),
|
|
conflictGroup = KeyBindConflict.MOVEMENT | KeyBindConflict.FLYING | KeyBindConflict.SAILING | KeyBindConflict.BUILD_MODE_1 | KeyBindConflict.KEYBOARD_KEYBIND,
|
|
name = "OpenUXAssistConfigWindow",
|
|
canOverride = true
|
|
});
|
|
I18N.Add("KEYOpenUXAssistConfigWindow", "[UXA] Open UXAssist Config Window", "[UXA] 打开UX助手设置面板");
|
|
I18N.Add("UXAssist Config", "UXAssist Config", "UX助手设置");
|
|
I18N.OnInitialized += RecreateConfigWindow;
|
|
}
|
|
|
|
public static void Start()
|
|
{
|
|
}
|
|
|
|
public static void Uninit()
|
|
{
|
|
}
|
|
|
|
public static void OnInputUpdate()
|
|
{
|
|
if (_toggleKey.keyValue)
|
|
{
|
|
ToggleConfigWindow();
|
|
}
|
|
}
|
|
|
|
public static void OnUpdate()
|
|
{
|
|
}
|
|
|
|
public static void ToggleConfigWindow()
|
|
{
|
|
if (!_configWinInitialized)
|
|
{
|
|
if (!I18N.Initialized()) return;
|
|
_configWinInitialized = true;
|
|
_configWin = MyConfigWindow.CreateInstance();
|
|
}
|
|
|
|
if (_configWin.active)
|
|
{
|
|
_configWin._Close();
|
|
}
|
|
else
|
|
{
|
|
_configWin.Open();
|
|
}
|
|
}
|
|
|
|
public static void InitMenuButtons()
|
|
{
|
|
if (_initialized) return;
|
|
var uiRoot = UIRoot.instance;
|
|
if (!uiRoot) return;
|
|
{
|
|
var mainMenu = uiRoot.uiMainMenu;
|
|
var src = mainMenu.newGameButton;
|
|
var parent = src.transform.parent;
|
|
var btn = GameObject.Instantiate(src, parent);
|
|
btn.name = "button-uxassist-config";
|
|
var l = btn.text.GetComponent<Localizer>();
|
|
if (l != null)
|
|
{
|
|
l.stringKey = "UXAssist Config";
|
|
l.translation = "UXAssist Config".Translate();
|
|
}
|
|
|
|
btn.text.text = "UXAssist Config".Translate();
|
|
btn.text.fontSize = btn.text.fontSize * 7 / 8;
|
|
I18N.OnInitialized += () => { btn.text.text = "UXAssist Config".Translate(); };
|
|
var vec = ((RectTransform)mainMenu.exitButton.transform).anchoredPosition3D;
|
|
var vec2 = ((RectTransform)mainMenu.creditsButton.transform).anchoredPosition3D;
|
|
var transform1 = (RectTransform)btn.transform;
|
|
transform1.anchoredPosition3D = new Vector3(vec.x, vec.y + (vec.y - vec2.y) * 2, vec.z);
|
|
btn.button.onClick.RemoveAllListeners();
|
|
btn.button.onClick.AddListener(ToggleConfigWindow);
|
|
}
|
|
{
|
|
var panel = uiRoot.uiGame.planetGlobe;
|
|
var src = panel.button2;
|
|
var sandboxMenu = uiRoot.uiGame.sandboxMenu;
|
|
var icon = sandboxMenu.categoryButtons[6].transform.Find("icon")?.GetComponent<Image>()?.sprite;
|
|
var b = GameObject.Instantiate(src, src.transform.parent);
|
|
_buttonOnPlanetGlobe = b.gameObject;
|
|
var rect = (RectTransform)_buttonOnPlanetGlobe.transform;
|
|
var btn = _buttonOnPlanetGlobe.GetComponent<UIButton>();
|
|
var img = _buttonOnPlanetGlobe.transform.Find("button-2/icon")?.GetComponent<Image>();
|
|
if (img != null)
|
|
{
|
|
img.sprite = icon;
|
|
}
|
|
|
|
if (_buttonOnPlanetGlobe != null && btn != null)
|
|
{
|
|
_buttonOnPlanetGlobe.name = "open-uxassist-config";
|
|
rect.localScale = new Vector3(0.6f, 0.6f, 0.6f);
|
|
rect.anchoredPosition3D = new Vector3(64f, -5f, 0f);
|
|
b.onClick.RemoveAllListeners();
|
|
btn.onClick += _ => { ToggleConfigWindow(); };
|
|
btn.tips.tipTitle = "UXAssist Config";
|
|
I18N.OnInitialized += () => { btn.tips.tipTitle = "UXAssist Config".Translate(); };
|
|
btn.tips.tipText = null;
|
|
btn.tips.corner = 9;
|
|
btn.tips.offset = new Vector2(-20f, -20f);
|
|
_buttonOnPlanetGlobe.SetActive(true);
|
|
}
|
|
}
|
|
AutoCruiseUI.InitToggleAutoCruiseCheckButton();
|
|
AutoConstructUI.InitToggleAutoConstructCheckButton();
|
|
StarmapFilterUI.InitStarmapButtons();
|
|
_initialized = true;
|
|
}
|
|
|
|
public static void RecreateConfigWindow()
|
|
{
|
|
if (!_configWinInitialized) return;
|
|
var wasActive = _configWin.active;
|
|
if (wasActive) _configWin._Close();
|
|
MyConfigWindow.DestroyInstance(_configWin);
|
|
_configWinInitialized = false;
|
|
if (wasActive) ToggleConfigWindow();
|
|
}
|
|
|
|
public static void UpdateGlobeButtonPosition(UIPlanetGlobe planetGlobe)
|
|
{
|
|
if (_buttonOnPlanetGlobe == null) return;
|
|
var rect = (RectTransform)_buttonOnPlanetGlobe.transform;
|
|
if (planetGlobe.dysonSphereSystemUnlocked || planetGlobe.logisticsSystemUnlocked)
|
|
{
|
|
rect.anchoredPosition3D = new Vector3(64f, -5f, 0f);
|
|
}
|
|
else
|
|
{
|
|
rect.anchoredPosition3D = new Vector3(128f, -100f, 0f);
|
|
}
|
|
}
|
|
}
|