Project_WL/Assets/Script/Ingame/LoadMapMgr.cs

72 lines
2.5 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class LoadMapMgr : MonoBehaviourSingletonTemplate<LoadMapMgr>
{
public string LoadSceneName, LoadMapPrefab;
GameObject go_map;
Camera[] arr_viewCam;
MapData m_MapData;
protected override void Awake()
{
base.Awake();
AddrResourceMgr.Ins.LoadObject<GameObject>(LoadMapPrefab, handle =>
{
go_map = DSUtil.Get_Clone(handle.Result);
AddrResourceMgr.Ins.Set_AddressableReleaseSelf(go_map);
SceneManager.MoveGameObjectToScene(go_map, SceneManager.GetSceneByName(LoadSceneName));
m_MapData = go_map.GetComponent<MapData>();
});
}
public void Get_PortalPos(ChoiceMapData data, Action<Vector3> action)
{
StartCoroutine(Co_Get_PortalPos(data, action));
}
IEnumerator Co_Get_PortalPos(ChoiceMapData data, Action<Vector3> action)
{
while (DSUtil.CheckNull(m_MapData)) yield return null;
action(m_MapData.Get_MapZoneData(data.n_PortalIndex).go_portal.transform.position + Vector3.forward);
}
public Vector3 Get_ReincanationPos(ChoiceMapData data)
{ return m_MapData.Get_MapZoneData(data.n_PortalIndex).go_reincarnation.transform.position + Vector3.forward; }
public void Get_tfFarmer(ChoiceMapData data, Action<Transform> action)
{
StartCoroutine(Co_Get_tfFarmer(data, action));
}
IEnumerator Co_Get_tfFarmer(ChoiceMapData data, Action<Transform> action)
{
while (DSUtil.CheckNull(m_MapData)) yield return null;
action(m_MapData.Get_MapZoneData(data.n_PortalIndex).tf_Farmer);
}
public void Get_tfObj(ChoiceMapData data, int index, Action<Transform> action)
{
StartCoroutine(Co_Get_tfObj(data, index, action));
}
IEnumerator Co_Get_tfObj(ChoiceMapData data, int index, Action<Transform> action)
{
while (DSUtil.CheckNull(m_MapData)) yield return null;
action(m_MapData.Get_MapZoneData(data.n_PortalIndex).tf_Obj[index]);
}
public void SetActive_Map(bool _active)
{
go_map.SetActive(_active);
}
public Camera Get_ViewCamera(string _name)
{
if (arr_viewCam == null) arr_viewCam = go_map.GetComponentsInChildren<Camera>();
for (int i = 0; i < arr_viewCam.Length; i++)
{
if (arr_viewCam[i].name.Equals(_name))
return arr_viewCam[i];
}
return null;
}
}