59 lines
2.0 KiB
C#
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;
|
|
}
|
|
}
|
|
} |