79 lines
2.9 KiB
C#
79 lines
2.9 KiB
C#
using HarmonyLib;
|
|
using Main;
|
|
using Manager;
|
|
using MelonLoader;
|
|
using System;
|
|
using System.Reflection;
|
|
using UnityEngine;
|
|
|
|
namespace SinmaiAssist.Common;
|
|
|
|
public class SinglePlayer
|
|
{
|
|
[HarmonyPrefix]
|
|
[HarmonyPatch(typeof(GameMainObject), "Start")]
|
|
public static bool TurnOffRightMonitor(GameMainObject __instance)
|
|
{
|
|
Camera mainCamera = Camera.main;
|
|
|
|
if (mainCamera == null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
var position = mainCamera.gameObject.transform.position;
|
|
if (SinmaiAssist.MainConfig.Common.SinglePlayer.HideSubMonitor)
|
|
{
|
|
mainCamera.gameObject.transform.position = new Vector3(-540f, -420f, position.z);
|
|
mainCamera.orthographicSize = 540f;
|
|
}
|
|
else
|
|
{
|
|
mainCamera.gameObject.transform.position = new Vector3(-540f, position.y, position.z);
|
|
}
|
|
var rightMonitorField = typeof(GameMainObject).GetField("rightMonitor", BindingFlags.NonPublic | BindingFlags.Instance);
|
|
Transform rightMonitor = (Transform)rightMonitorField.GetValue(__instance);
|
|
rightMonitor.transform.localScale = Vector3.zero;
|
|
|
|
return false;
|
|
}
|
|
|
|
[HarmonyPrefix]
|
|
[HarmonyPatch(typeof(MeshButton), "Awake")]
|
|
public static bool FixDummyTouchPanel(MeshButton __instance)
|
|
{
|
|
CustomGraphic customGraphic = __instance.targetGraphic as CustomGraphic;
|
|
FieldInfo touchAreaField = AccessTools.Field(typeof(MeshButton), "touchArea");
|
|
FieldInfo vertexArrayField = AccessTools.Field(typeof(MeshButton), "vertexArray");
|
|
|
|
touchAreaField.SetValue(__instance, (Manager.InputManager.TouchPanelArea)Enum.Parse(typeof(Manager.InputManager.TouchPanelArea), __instance.name));
|
|
|
|
Vector2[] vertexArray = new Vector2[customGraphic.vertex.Count];
|
|
|
|
for (int i = 0; i < customGraphic.vertex.Count; i++)
|
|
{
|
|
if (SinmaiAssist.MainConfig.Common.SinglePlayer.HideSubMonitor)
|
|
{
|
|
vertexArray[i] = RectTransformUtility.WorldToScreenPoint(
|
|
Camera.main,
|
|
new Vector2(
|
|
(__instance.transform.position.x + customGraphic.vertex[i].x + 540f) * Camera.main.orthographicSize / 540f,
|
|
(__instance.transform.position.y + customGraphic.vertex[i].y + 420f) * Camera.main.orthographicSize / 540f
|
|
)
|
|
);
|
|
}
|
|
else
|
|
{
|
|
vertexArray[i] = RectTransformUtility.WorldToScreenPoint(
|
|
Camera.main,
|
|
new Vector2(
|
|
__instance.transform.position.x + customGraphic.vertex[i].x + 540f,
|
|
__instance.transform.position.y + customGraphic.vertex[i].y
|
|
)
|
|
);
|
|
}
|
|
}
|
|
vertexArrayField.SetValue(__instance, vertexArray);
|
|
return false;
|
|
}
|
|
} |