using System; using System.Collections; using UnityEngine; using UnityEngine.SceneManagement; public class SceneInfo : MonoBehaviour { BattleMapConfigTableData CurStageData; public void Load_AddScene(BattleMapConfigTableData _stagedata, Action addloadend) { if (CurStageData == null) { // 최초 로드 LoadingUI.Ins.Set(true, () => { CurStageData = _stagedata; StartCoroutine(Co_Control_AddScene(_stagedata, true, addloadend)); }); } else if (CurStageData.s_Scene.Equals(_stagedata.s_Scene)) { // 같은 맵 PCInfo.Ins.Make_Actors(false, ServerInfo.Ins.m_ServerData); } else { // 다른 씬 LoadingUI.Ins.Set(true, () => { StartCoroutine(Co_Control_AddScene(_stagedata, false, addloadend)); CurStageData = _stagedata; StartCoroutine(Co_Control_AddScene(_stagedata, true, addloadend)); }); } } IEnumerator Co_Control_AddScene(BattleMapConfigTableData _stagedata, bool _add, Action addloadend) { ActorInfo.Ins.Destroy_Mobs(); if (_add) { DSUtil.StartStopWatch(); yield return SceneManager.LoadSceneAsync(CurStageData.s_Scene, LoadSceneMode.Additive); var sdata = ServerInfo.Ins.m_ServerData; PCInfo.Ins.Make_Actors(false, sdata); if (CurStageData.s_Scene.Equals("MyFarm")) { // TODO 정인호 : 팜 로드 시 심어져있는 것들 //for (int i = 0; i < MyValue.VegetableField; i++) //{ // if (!sdata.CanSowPlant(eFarmType.Vegetable, i)) // { // 채소가 심어져있다. // MyFarmInfo.Ins.Sow_Plant(i, table_farm.Ins.Get_Data(sdata.Get_PlantID(eFarmType.Vegetable, i))); // } //} //for (int i = 0; i < MyValue.TreeCount; i++) //{ // if (!sdata.CanSowPlant(eFarmType.Tree, i)) // { // 나무가 심어져있다. // MyFarmInfo.Ins.Sow_Plant(i, table_farm.Ins.Get_Data(sdata.Get_PlantID(eFarmType.Tree, i))); // } //} } LoadingUI.Ins.Set(false); SoundInfo.Ins.Play_BGM(DSUtil.StringToEnum(CurStageData.s_BGM)); addloadend?.Invoke(); Debug.Log(DSUtil.StopStopWatch(false)); } else { yield return SceneManager.UnloadSceneAsync(CurStageData.s_Scene); } } }