NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/LegionBattle/LegionBattle.Map.cs

59 lines
2.0 KiB
C#

using Cysharp.Threading.Tasks;
using Gameplay.SubSystems;
using PhxhSDK;
using PhxhSDK.Res;
using System.Collections.Generic;
using UnityEngine;
namespace Gameplay.LegionBattle
{
public sealed partial class LegionBattle : IUpdatable, ILoadable
{
/// <summary>
/// 军团战地图
/// </summary>
public Map Map { get; private set; }
/// <summary>
/// 格子数据
/// </summary>
private Dictionary<Vector2Int, LegionBattleHexesData> dicHexesData;
/// <summary>
/// 两格之间的距离
/// </summary>
public float Distance { get; private set; }
public async UniTask LoadMap()
{
SceneHandle sceneHandle = await GameSceneManager.Instance.LoadSceneAsync(MapCfg.Path);
MapData mapData = await MapUtils.LoadMapData(MapCfg.MapData); // 加载地图数据
Map = await MapUtils.LoadMap(mapData); // 加载地图
Camera camera = sceneHandle.Camera;
CameraManager.Instance.SwitchMainCamera(camera);
MapUtils.BindCameraController(camera, Map);
Map.TerrainGridSystem.showCells = true;
Vector3 start = Map.TGSCellIndex2WorldPosition(0);
Vector3 end = Map.TGSCellIndex2WorldPosition(1);
Distance = (end - start).magnitude;
if (null == dicHexesData)
dicHexesData = new Dictionary<Vector2Int, LegionBattleHexesData>();
foreach (TGS.Cell cell in Map.TerrainGridSystem.cells)
{
dicHexesData.Add(Map.TGSCellIndex2BlockPosition(cell.index), new LegionBattleHexesData());
}
}
/// <summary>
/// 更新建筑地板
/// </summary>
/// <param name="cellIndex"></param>
private void UpdateBuildingCell(int cellIndex)
{
if (!TryGetBuildingDataByIndex(cellIndex, out LegionBuildingData buildingData))
return;
}
}
}