NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Level/Level.Region.cs

83 lines
2.2 KiB
C#
Raw Normal View History

2023-08-22 19:08:45 +08:00
using Framework;
using Gameplay.Character;
using UnityEngine;
namespace Gameplay.Level
{
public partial class Level
{
2023-11-20 14:10:18 +08:00
public bool IsPreparingRegion(int cellIndex)
2023-08-22 19:08:45 +08:00
{
if (_levelData == null)
{
DebugUtil.LogError("IsPreparingRegion failed, _levelData is null");
return true;
}
if (_map == null)
{
DebugUtil.LogError("IsPreparingRegion failed, _map is null");
return true;
}
var areaId = _levelData.preparingRegionId;
var area = _map.MapData.GetRegion(areaId);
if (area == null)
{
return true;
}
2023-11-20 14:10:18 +08:00
return area.positions.Contains(cellIndex);
2023-08-22 19:08:45 +08:00
}
public void ShowPreparingRegion(bool show)
{
if (_levelData == null)
{
DebugUtil.LogError("ShowPreparingRegion failed, _levelData is null");
return;
}
if (_map == null)
{
DebugUtil.LogError("ShowPreparingRegion failed, _map is null");
return;
}
var areaId = _levelData.preparingRegionId;
_map.SetRegionColor(areaId, show, "FF960072");
}
public MapData.Region GetFallbackRegion(int troopId)
{
var fallbackRegionId = Constants.INVALID_ID;
switch (troopId)
{
case ETroopsId.Self:
fallbackRegionId = _levelData.fallbackRegionId;
break;
case ETroopsId.Enemy1:
case ETroopsId.Enemy2:
fallbackRegionId = _levelData.enemyFallbackRegionId;
break;
default:
fallbackRegionId = _levelData.fallbackRegionId;
break;
}
if (ValueValidator.IsIdValid(fallbackRegionId))
{
return _map.MapData.GetRegion(fallbackRegionId);
}
return null;
}
}
}