134 lines
5.5 KiB
C#
134 lines
5.5 KiB
C#
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);
|
|
|
|
foreach (var element in bossPortal)
|
|
{
|
|
element.ResetPortal();
|
|
}
|
|
}
|
|
}
|
|
} |