Project_WL/Assets/Script/Info/SceneInfo.cs

75 lines
2.7 KiB
C#
Raw Normal View History

2024-12-15 01:39:39 +00:00
using System;
using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;
public class SceneInfo : MonoBehaviour
{
BattleMapConfigTableData CurStageData;
public void Load_AddScene(BattleMapConfigTableData _stagedata, Action addloadend)
2024-12-15 01:39:39 +00:00
{
if (CurStageData == null)
{ // 최초 로드
CurStageData = _stagedata;
StartCoroutine(Co_Control_AddScene(_stagedata, true, addloadend));
2024-12-15 01:39:39 +00:00
}
else if (CurStageData.s_Scene.Equals(_stagedata.s_Scene))
{ // 같은 맵
PCInfo.Ins.Make_Actors(false, ServerInfo.Ins.m_ServerData);
}
else
{ // 다른 씬
StartCoroutine(Co_Control_AddScene(_stagedata, false, addloadend));
CurStageData = _stagedata;
StartCoroutine(Co_Control_AddScene(_stagedata, true, addloadend));
2024-12-15 01:39:39 +00:00
}
}
IEnumerator Co_Control_AddScene(BattleMapConfigTableData _stagedata, bool _add, Action addloadend)
{
2025-04-03 23:12:48 +00:00
ActorInfo.Ins.Destroy_All();
2024-12-15 01:39:39 +00:00
if (_add)
{
DSUtil.StartStopWatch();
var asyncLoad = SceneManager.LoadSceneAsync(CurStageData.s_Scene, LoadSceneMode.Additive);
while (!asyncLoad.isDone)
{
LoadingUI.Ins.Set_LoadingSlider(asyncLoad.progress);
yield return null;
}
2024-12-15 01:39:39 +00:00
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)));
// }
//}
}
yield return new WaitForSeconds(1f);
//LoadingUI.Ins.End_Loading();
2024-12-15 01:39:39 +00:00
SoundInfo.Ins.Play_BGM(DSUtil.StringToEnum<eBGM>(CurStageData.s_BGM));
addloadend?.Invoke();
Debug.Log(DSUtil.StopStopWatch(false));
}
else
{
yield return SceneManager.UnloadSceneAsync(CurStageData.s_Scene);
}
}
}