bad-piggies-0.1.3-porting/Assets/Scripts/Assembly-CSharp/Loader.cs
2024-02-24 22:40:44 -05:00

92 lines
1.7 KiB
C#

using System.Collections;
using UnityEngine;
public class Loader : MonoBehaviour
{
private static Loader instance;
private Vector3 originalPosition = Vector3.zero;
private string m_lastLoadedLevel = string.Empty;
public static Loader Instance
{
get
{
return instance;
}
}
public string LastLoadedString
{
get
{
return m_lastLoadedLevel;
}
}
public void LoadLevel(string levelName, bool showLoadingScreen)
{
m_lastLoadedLevel = levelName;
if (showLoadingScreen)
{
Show();
}
else
{
base.gameObject.active = true;
}
GameProgress.Save();
StartCoroutine(LoadLevelAsync(levelName));
}
private IEnumerator LoadLevelAsync(string levelName)
{
yield return Application.LoadLevelAsync(levelName);
Debug.Log("Level loaded: " + levelName);
}
private void Awake()
{
Assert.Check(instance == null, "Singleton " + base.name + " spawned twice");
instance = this;
Object.DontDestroyOnLoad(this);
originalPosition = base.transform.position;
}
private void Start()
{
Hide();
}
private void Show()
{
RepositionToNearplane();
base.gameObject.SetActiveRecursively(true);
}
private void Hide()
{
base.gameObject.SetActiveRecursively(false);
}
private void RepositionToNearplane()
{
GameObject gameObject = GameObject.Find("HUDCamera");
if (!gameObject)
{
gameObject = GameObject.Find("Main Camera");
}
if ((bool)gameObject && (bool)gameObject.camera)
{
float z = gameObject.transform.position.z + gameObject.camera.nearClipPlane * 2f;
base.transform.position = new Vector3(originalPosition.x, originalPosition.y - gameObject.transform.InverseTransformPoint(0f, 0f, 0f).y, z);
}
}
private void OnLevelWasLoaded(int levelIndex)
{
Hide();
RepositionToNearplane();
}
}