114 lines
3.2 KiB
C#
114 lines
3.2 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using PixelCrushers;
|
|
using PixelCrushers.DialogueSystem;
|
|
using Sirenix.OdinInspector;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
|
|
namespace Beyond
|
|
{
|
|
[RequireComponent(typeof(BoxCollider))]
|
|
public class PortalController : MonoBehaviour
|
|
{
|
|
[SerializeField] private LevelLoaderData _levelLoaderData;
|
|
[SerializeField] private string LevelToLoadName;
|
|
[SerializeField] private string m_spawnPoint;
|
|
|
|
// [SerializeField] private GameObject _portalAudioToSpawn;
|
|
|
|
private LevelData _levelToLoadData;
|
|
private BoxCollider _trigger;
|
|
private static bool s_luaMethodRegistered = false;
|
|
|
|
private void RegisterLuaFunctions()
|
|
{
|
|
Lua.RegisterFunction("LoadLevel", this, SymbolExtensions.GetMethodInfo(() => LoadLevel((string)null)));
|
|
s_luaMethodRegistered = true;
|
|
}
|
|
|
|
private void UnregisterLuaFunctions()
|
|
{
|
|
Lua.UnregisterFunction("LoadLevel");
|
|
s_luaMethodRegistered = false;
|
|
}
|
|
|
|
private void Awake()
|
|
{
|
|
if (!s_luaMethodRegistered)
|
|
{
|
|
RegisterLuaFunctions();
|
|
}
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
if (s_luaMethodRegistered)
|
|
{
|
|
UnregisterLuaFunctions();
|
|
}
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
_levelToLoadData = _levelLoaderData.GetData(LevelToLoadName);
|
|
FadeCanvasGroup.Instance.OnLoadingFadeOutEnd.AddListener(LoadLevel);
|
|
_trigger = GetComponent<BoxCollider>();
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
FadeCanvasGroup.Instance.OnLoadingFadeOutEnd.RemoveListener(LoadLevel);
|
|
}
|
|
|
|
public void OnTriggerEnter(Collider other)
|
|
{
|
|
if (!other.CompareTag("Player"))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (_levelLoaderData == null)
|
|
{
|
|
Debug.LogError("_levelLoaderData == null");
|
|
return;
|
|
}
|
|
|
|
if (_levelToLoadData == null)
|
|
{
|
|
Debug.LogError("Probably there is no data for scene : " + LevelToLoadName + " in levelLoaderData");
|
|
return;
|
|
}
|
|
|
|
if (!_levelToLoadData.IsUnlocked)
|
|
{
|
|
return;
|
|
}
|
|
|
|
_trigger.enabled = false;
|
|
FadeCanvasGroup.Instance.BeforeLoadingFade();
|
|
}
|
|
|
|
private void LoadLevel(string name)
|
|
{
|
|
_levelToLoadData = _levelLoaderData.GetData(name);
|
|
FadeCanvasGroup.Instance.BeforeLoadingFade();
|
|
}
|
|
|
|
[Button]
|
|
private void LoadLevel()
|
|
{
|
|
if (string.IsNullOrEmpty(m_spawnPoint))
|
|
{
|
|
//SaveSystem.LoadScene(_levelToLoadData.LevelName);
|
|
ProxySceneLoader.LoadScene(_levelToLoadData.LevelName);
|
|
}
|
|
else
|
|
{
|
|
//SaveSystem.LoadScene(_levelToLoadData.LevelName + "@" + m_spawnPoint);
|
|
ProxySceneLoader.LoadScene(_levelToLoadData.LevelName + "@" + m_spawnPoint);
|
|
}
|
|
}
|
|
}
|
|
} |