OldBlueWater/BlueWater/Assets/02.Scripts/CombatOnGui.cs

134 lines
5.5 KiB
C#
Raw Normal View History

using System;
using Sirenix.OdinInspector;
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public class CombatOnGui : MonoBehaviour
{
[Title("컴포넌트")]
[SerializeField] private PhysicsMovement combatPlayerMovement;
[SerializeField] private CombatLight combatLight;
[SerializeField] private BossPortal bossPortal;
[Title("GUI 옵션")]
[SerializeField] private bool showGUI = true;
[SerializeField] private int guiTextSize = 28;
private float prevForwardSlopeAngle;
private void OnGUI()
{
if (Application.isPlaying == false) return;
if (!showGUI) return;
if (!enabled) return;
GUIStyle labelStyle = GUI.skin.label;
labelStyle.normal.textColor = Color.yellow;
labelStyle.fontSize = Math.Max(guiTextSize, 20);
prevForwardSlopeAngle = combatPlayerMovement.MyCurrentValue.forwardSlopeAngle == -90f
? prevForwardSlopeAngle
: combatPlayerMovement.MyCurrentValue.forwardSlopeAngle;
var oldColor = GUI.color;
GUI.color = new Color(0f, 0f, 0f, 0.5f);
GUI.Box(new Rect(40, 40, 420, 240), "");
GUI.color = oldColor;
GUILayout.BeginArea(new Rect(50, 50, 1000, 500));
GUILayout.Label($"Ground Height : {Mathf.Min(combatPlayerMovement.MyCurrentValue.groundDistance, 99.99f): 00.00}",
labelStyle);
GUILayout.Label($"Slope Angle(Ground) : {combatPlayerMovement.MyCurrentValue.groundSlopeAngle: 00.00}", labelStyle);
GUILayout.Label($"Slope Angle(Forward) : {prevForwardSlopeAngle: 00.00}", labelStyle);
GUILayout.Label($"Allowed Slope Angle : {combatPlayerMovement.MyMovementOption.maxSlopeAngle: 00.00}", labelStyle);
GUILayout.Label($"Current Speed Mag : {combatPlayerMovement.MyCurrentValue.horizontalVelocity.magnitude: 00.00}",
labelStyle);
GUILayout.EndArea();
float sWidth = Screen.width;
float sHeight = Screen.height;
GUIStyle RTLabelStyle = GUI.skin.label;
RTLabelStyle.fontSize = 20;
RTLabelStyle.normal.textColor = Color.green;
oldColor = GUI.color;
GUI.color = new Color(1f, 1f, 1f, 0.5f);
GUI.Box(new Rect(sWidth - 355f, 5f, 340f, 100f), "");
GUI.color = oldColor;
var yPos = 10f;
GUI.Label(new Rect(sWidth - 350f, yPos, 150f, 30f), $"Speed : {combatPlayerMovement.MyMovementOption.moveSpeed: 00.00}",
RTLabelStyle);
combatPlayerMovement.MyMovementOption.moveSpeed = GUI.HorizontalSlider(new Rect(sWidth - 180f, yPos + 10f, 160f, 20f),
combatPlayerMovement.MyMovementOption.moveSpeed, 1f, 10f);
yPos += 20f;
GUI.Label(new Rect(sWidth - 350f, yPos, 150f, 30f), $"Max Slope : {combatPlayerMovement.MyMovementOption.maxSlopeAngle: 00}",
RTLabelStyle);
combatPlayerMovement.MyMovementOption.maxSlopeAngle = (int)GUI.HorizontalSlider(
new Rect(sWidth - 180f, yPos + 10f, 160f, 20f), combatPlayerMovement.MyMovementOption.maxSlopeAngle, 1f, 75f);
yPos += 20f;
GUI.Label(new Rect(sWidth - 350f, yPos, 180f, 30f), $"TimeScale : {Time.timeScale: 0.00}",
RTLabelStyle);
Time.timeScale = GUI.HorizontalSlider(
new Rect(sWidth - 180f, yPos + 10f, 160f, 20f), Time.timeScale, 0f, 1f);
Time.fixedDeltaTime = 0.02f * Time.timeScale;
yPos = 130f;
var buttonWidth = 200f;
var buttonHeight = 30f;
var buttonSpacing = 35f;
var buttonStyle = GUI.skin.button;
buttonStyle.fontSize = 15;
var spawnPosition = combatPlayerMovement.MyComponents.spawnPosition;
for (var i = 0; i < spawnPosition.Length; i++)
{
if (GUI.Button(new Rect(sWidth - 350f, yPos, buttonWidth, buttonHeight), spawnPosition[i].name, buttonStyle))
{
SpawnPlayer(spawnPosition[i].position);
}
yPos += buttonSpacing;
}
buttonWidth = 80f;
buttonHeight = 30f;
yPos = 10f;
if (GUI.Button(new Rect(sWidth - 550f, yPos, buttonWidth, buttonHeight), "Base", buttonStyle))
{
combatLight.CurrentTimeOfDay = CombatLight.TimeOfDay.BASE;
}
if (GUI.Button(new Rect(sWidth - 450f, yPos, buttonWidth, buttonHeight), "Afternoon", buttonStyle))
{
combatLight.CurrentTimeOfDay = CombatLight.TimeOfDay.AFTERNOON;
}
yPos += 40f;
if (GUI.Button(new Rect(sWidth - 550f, yPos, buttonWidth, buttonHeight), "Sunset", buttonStyle))
{
combatLight.CurrentTimeOfDay = CombatLight.TimeOfDay.SUNSET;
}
if (GUI.Button(new Rect(sWidth - 450f, yPos, buttonWidth, buttonHeight), "Night", buttonStyle))
{
combatLight.CurrentTimeOfDay = CombatLight.TimeOfDay.NIGHT;
}
labelStyle.fontSize = Math.Max(guiTextSize, 20);
}
private void SpawnPlayer(Vector3 position)
{
combatPlayerMovement.Move(position);
if (bossPortal)
{
bossPortal.ResetPortal();
}
}
}
}