Files
se-launcher/PluginLoader/Patch/Patch_CreateMenu.cs

60 lines
2.0 KiB
C#

using HarmonyLib;
using PluginLoader.GUI;
using Sandbox.Graphics.GUI;
using SpaceEngineers.Game.GUI;
using VRage.Game;
using VRage.Utils;
using VRageMath;
// ReSharper disable InconsistentNaming
namespace PluginLoader.Patch;
[HarmonyPatch(typeof(MyGuiScreenMainMenu), "CreateMainMenu")]
public static class Patch_CreateMainMenu
{
public static void Postfix(MyGuiScreenMainMenu __instance, Vector2 leftButtonPositionOrigin,
ref Vector2 lastButtonPosition)
{
MyGuiControlButton lastBtn = null;
foreach (var control in __instance.Controls)
if (control is MyGuiControlButton btn && btn.Position == lastButtonPosition)
{
lastBtn = btn;
break;
}
Vector2 position;
if (lastBtn == null)
{
position = lastButtonPosition + MyGuiConstants.MENU_BUTTONS_POSITION_DELTA;
}
else
{
position = lastBtn.Position;
lastBtn.Position = lastButtonPosition + MyGuiConstants.MENU_BUTTONS_POSITION_DELTA;
}
var openBtn = new MyGuiControlButton(position, MyGuiControlButtonStyleEnum.StripeLeft,
originAlign: MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM,
text: new("Plugins"),
onButtonClick: _ => MyGuiScreenPluginConfig.OpenMenu())
{
BorderEnabled = false,
BorderSize = 0,
BorderHighlightEnabled = false,
BorderColor = Vector4.Zero
};
__instance.Controls.Add(openBtn);
}
}
[HarmonyPatch(typeof(MyGuiScreenMainMenu), "CreateInGameMenu")]
public static class Patch_CreateInGameMenu
{
public static void Postfix(MyGuiScreenMainMenu __instance, Vector2 leftButtonPositionOrigin,
ref Vector2 lastButtonPosition)
{
Patch_CreateMainMenu.Postfix(__instance, leftButtonPositionOrigin, ref lastButtonPosition);
}
}