using cfg.CampCfg;
using Cysharp.Threading.Tasks;
using Framework;
using Gameplay.Common;
using PhxhSDK;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Gameplay.Camp
{
public sealed partial class Camp
{
///
/// 记录加载的数据
///
private HashSet setLoad;
private void InitLoad()
{
setLoad = new();
}
private void ExitLoad()
{
foreach (string path in setLoad)
{
AssetManager.Instance.Unload(path);
}
setLoad.Clear();
}
///
/// 加载所有营地单位
///
public async UniTask SetInfoByLoad()
{
// TODO从服务器取得数据
int[] listCellIndex = new int[] { 60, 277 }; // 测试数据
int[] listCampItemId = new int[] { 100005, 100004 };
for (int i = 0; i < listCellIndex.Length; ++i)
{
await LoadBuilding(listCampItemId[i], listCellIndex[i]);
}
}
///
/// 加载建筑
///
///
public async UniTask LoadBuilding(int id, int cellIndex)
{
DataCampObject dataCampObject = TableManager.Instance.Tables.CampObjectConfig.Get(id);
if (null == dataCampObject)
return;
if (!CheckPlace(cellIndex, dataCampObject.ListPosOffset)) // 检查能否放置
return;
GameObject goCampObject = await LoadCampObject(dataCampObject.Path);
BuildingCampUnit buildingCampUnit = new(goCampObject, dataCampObject)
{
CellIndex = cellIndex
};
PlaceCampItem(buildingCampUnit);
}
///
/// 加载物件
///
public async UniTask LoadCampObject(string path)
{
GameObject goCampObject = await AssetManager.Instance.LoadAssetAsync(path);
if (null == goCampObject)
return null;
setLoad.Add(path);
GameObject go = Object.Instantiate(goCampObject, tsCampObjectRoot);
go.SetLayerEx(LayerDefine.UIView);
return go;
}
}
}