Files
2026-03-03 05:27:03 +05:00

82 lines
2.8 KiB
C#

using UnityEngine;
using UHFPS.Tools;
using ThunderWire.Attributes;
namespace UHFPS.Runtime
{
[Docs("https://docs.twgamesdev.com/uhfps/guides/save-load-manager/previous-scene-persistency")]
public class LevelInteract : MonoBehaviour, IInteractStart
{
public enum TriggerTypeEnum { Trigger, Interact, Event }
public enum LevelTypeEnum { NextLevel, WorldState, PlayerData }
public TriggerTypeEnum TriggerType = TriggerTypeEnum.Interact;
public LevelTypeEnum LevelType = LevelTypeEnum.NextLevel;
public string NextLevelName;
public bool CustomTransform;
public Transform TargetTransform;
public float LookUpDown;
private void OnTriggerEnter(Collider other)
{
if (TriggerType != TriggerTypeEnum.Trigger)
return;
if (other.CompareTag("Player"))
SwitchLevel();
}
public void InteractStart()
{
if (TriggerType != TriggerTypeEnum.Interact)
return;
SwitchLevel();
}
public void SwitchLevel()
{
if (LevelType == LevelTypeEnum.PlayerData)
{
SaveGameManager.SavePlayer();
GameManager.Instance.LoadNextLevel(NextLevelName);
}
else if (CustomTransform)
{
SaveGameManager.SaveGame(TargetTransform.position, new Vector2(TargetTransform.eulerAngles.y, LookUpDown), () =>
{
if (LevelType == LevelTypeEnum.NextLevel)
GameManager.Instance.LoadNextLevel(NextLevelName);
else
GameManager.Instance.LoadNextWorld(NextLevelName);
});
}
else
{
SaveGameManager.SaveGame(() =>
{
if (LevelType == LevelTypeEnum.NextLevel)
GameManager.Instance.LoadNextLevel(NextLevelName);
else
GameManager.Instance.LoadNextWorld(NextLevelName);
});
}
}
private void OnDrawGizmos()
{
if(CustomTransform && TargetTransform != null)
{
#if UNITY_EDITOR
UnityEditor.Handles.color = Color.green.Alpha(0.01f);
UnityEditor.Handles.DrawSolidDisc(TargetTransform.position, Vector3.up, 1f);
UnityEditor.Handles.color = Color.green;
UnityEditor.Handles.DrawWireDisc(TargetTransform.position, Vector3.up, 1f);
#endif
Gizmos.DrawSphere(TargetTransform.position, 0.05f);
GizmosE.DrawGizmosArrow(TargetTransform.position, TargetTransform.forward);
}
}
}
}