Scriptum/Assets/Scripts/REFACTORING/Application/Shared/Manager/Panel/SceneBaseDataLoader.cs

79 lines
2.0 KiB
C#
Raw Normal View History

2022-10-22 18:04:21 +02:00
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public abstract class SceneBaseDataLoader<T> : SceneDataLoaderInterface<T>
{
protected SaveModelSystem<T> SaveModelSystem;
protected PathBuilder PathBuilder;
protected string CurrentMap;
protected SceneBaseDataLoader()
{
PathBuilder = new PathBuilder();
CurrentMap = SceneManager.GetActiveScene().name;
}
public List<T> LoadData(SceneElementTypeEnum type)
{
switch (type)
{
case SceneElementTypeEnum.None:
{
return LoadGenericData();
}
case SceneElementTypeEnum.Static:
{
return LoadStaticData();
}
case SceneElementTypeEnum.Dynamic:
{
return LoadDynamicData();
}
default: // for SceneElementTypeEnum.All
{
Debug.Log("Handle All case...");
return new List<T>();
}
}
}
public bool SaveData(List<T> _elements, SceneElementTypeEnum type)
{
switch (type)
{
case SceneElementTypeEnum.None:
{
return SaveGenericData(_elements);
}
case SceneElementTypeEnum.Static:
{
return SaveStaticData(_elements);
}
case SceneElementTypeEnum.Dynamic:
{
return SaveDynamicData(_elements);
}
default: // for SceneElementTypeEnum.All
{
Debug.Log("Handle All case...");
return true;
}
}
}
protected abstract List<T> LoadStaticData();
protected abstract List<T> LoadDynamicData();
protected abstract List<T> LoadGenericData();
protected abstract bool SaveStaticData(List<T> _elements);
protected abstract bool SaveDynamicData(List<T> _elements);
protected abstract bool SaveGenericData(List<T> _elements);
}