AquaDX/AquaMai/Utils/PractiseModeUI.cs

162 lines
5.5 KiB
C#

using System;
using AquaMai.Fix;
using Manager;
using UnityEngine;
using UrGUI.GUIWindow;
namespace AquaMai.Utils;
public class PractiseModeUI : MonoBehaviour
{
private float playerWidth;
private float playerCenter;
private float windowTop;
private float controlHeight;
private float margin;
private float sideButtonWidth;
private float centerButtonWidth;
private int fontSize;
public void Start()
{
playerWidth = Screen.height / 1920f * 1080;
if (AquaMai.AppConfig.UX.SinglePlayer)
{
playerCenter = Screen.width / 2f;
}
else
{
playerCenter = Screen.width / 2f - playerWidth / 2;
}
windowTop = Screen.height - playerWidth + playerWidth * .22f;
controlHeight = playerWidth * .13f;
margin = playerWidth * .01f;
sideButtonWidth = playerWidth * .1f;
centerButtonWidth = playerWidth * .28f;
fontSize = (int)(playerWidth * .02f);
}
public Rect GetButtonRect(int pos, int row)
{
float x;
float width;
switch (pos)
{
case 0:
x = playerCenter - centerButtonWidth / 2 - sideButtonWidth - margin;
width = sideButtonWidth;
break;
case 1:
x = playerCenter - centerButtonWidth / 2;
width = centerButtonWidth;
break;
case 2:
x = playerCenter + centerButtonWidth / 2 + margin;
width = sideButtonWidth;
break;
default:
throw new ArgumentOutOfRangeException(nameof(pos), pos, null);
}
return new Rect(x, windowTop + (margin + controlHeight) * row + margin, width, controlHeight);
}
public void OnGUI()
{
var labelStyle = GUI.skin.GetStyle("label");
labelStyle.fontSize = fontSize;
labelStyle.alignment = TextAnchor.MiddleCenter;
var buttonStyle = GUI.skin.GetStyle("button");
buttonStyle.fontSize = fontSize;
GUI.Box(new Rect(
playerCenter - centerButtonWidth / 2 - sideButtonWidth - margin * 2,
windowTop,
centerButtonWidth + sideButtonWidth * 2 + margin * 4,
controlHeight * 4 + margin * 5
), "");
GUI.Button(GetButtonRect(0, 0), "Seek <<");
GUI.Button(GetButtonRect(1, 0), "Pause");
GUI.Button(GetButtonRect(2, 0), "Seek >>");
if (PractiseMode.repeatStart == -1)
{
GUI.Button(GetButtonRect(0, 1), "Start");
GUI.Label(GetButtonRect(1, 1), "Loop not set");
}
else if (PractiseMode.repeatEnd == -1)
{
GUI.Button(GetButtonRect(0, 1), "End");
GUI.Label(GetButtonRect(1, 1), "Loop start set");
GUI.Button(GetButtonRect(2, 1), "Reset");
}
else
{
GUI.Label(GetButtonRect(1, 1), "Loop set");
GUI.Button(GetButtonRect(2, 1), "Reset");
}
GUI.Button(GetButtonRect(0, 2), "Speed -");
GUI.Label(GetButtonRect(1, 2), $"Speed {PractiseMode.speed * 100:000}%");
GUI.Button(GetButtonRect(2, 2), "Speed +");
GUI.Button(GetButtonRect(1, 3), "Speed Reset");
}
public void Update()
{
if (InputManager.GetTouchPanelAreaDown(InputManager.TouchPanelArea.E8))
{
DebugFeature.Seek(-1000);
}
else if (InputManager.GetTouchPanelAreaDown(InputManager.TouchPanelArea.E2))
{
DebugFeature.Seek(1000);
}
else if (InputManager.GetTouchPanelAreaDown(InputManager.TouchPanelArea.B8) || InputManager.GetTouchPanelAreaDown(InputManager.TouchPanelArea.B1))
{
DebugFeature.Pause = !DebugFeature.Pause;
}
else if (InputManager.GetTouchPanelAreaDown(InputManager.TouchPanelArea.B7) && PractiseMode.repeatStart == -1)
{
PractiseMode.repeatStart = DebugFeature.CurrentPlayMsec;
}
else if (InputManager.GetTouchPanelAreaDown(InputManager.TouchPanelArea.B7) && PractiseMode.repeatEnd == -1)
{
PractiseMode.SetRepeatEnd(DebugFeature.CurrentPlayMsec);
}
else if (InputManager.GetTouchPanelAreaDown(InputManager.TouchPanelArea.B2))
{
PractiseMode.ClearRepeat();
}
else if (InputManager.GetTouchPanelAreaDown(InputManager.TouchPanelArea.B6))
{
PractiseMode.SpeedDown();
}
else if (InputManager.GetTouchPanelAreaDown(InputManager.TouchPanelArea.B3))
{
PractiseMode.SpeedUp();
}
else if (InputManager.GetTouchPanelAreaDown(InputManager.TouchPanelArea.B5) || InputManager.GetTouchPanelAreaDown(InputManager.TouchPanelArea.B4))
{
PractiseMode.SpeedReset();
}
else if (
InputManager.GetTouchPanelAreaDown(InputManager.TouchPanelArea.A1) ||
InputManager.GetTouchPanelAreaDown(InputManager.TouchPanelArea.A2) ||
InputManager.GetTouchPanelAreaDown(InputManager.TouchPanelArea.A3) ||
InputManager.GetTouchPanelAreaDown(InputManager.TouchPanelArea.A4) ||
InputManager.GetTouchPanelAreaDown(InputManager.TouchPanelArea.A5) ||
InputManager.GetTouchPanelAreaDown(InputManager.TouchPanelArea.A6) ||
InputManager.GetTouchPanelAreaDown(InputManager.TouchPanelArea.A7) ||
InputManager.GetTouchPanelAreaDown(InputManager.TouchPanelArea.A8)
)
{
PractiseMode.ui = null;
Destroy(this);
}
}
}