60 lines
2.0 KiB
C#
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);
|
|
}
|
|
} |