Files
2026-01-10 12:11:05 +07:00

62 lines
1.5 KiB
C#

using System;
using UnityEngine;
// Filename : CLayerMap.cs
// Creator : ported from C++ (AutoPFImp/AutoMoveImp/LayerMap.*)
// Date : 2026/01/09
namespace AutoMove
{
/// <summary>
/// Layer move map (RMap + DHMap).
/// 分层移动图(RMap + DHMap)。
/// </summary>
public class CLayerMap
{
private CBitImage m_pRMap;
private CBlockImageFix16 m_pDHMap;
public CBitImage GetRMap() => m_pRMap;
public CBlockImageFix16 GetDHMap() => m_pDHMap;
public void Release()
{
m_pRMap = null;
m_pDHMap = null;
}
public bool LoadRMap(byte[] prmapBytes)
{
m_pRMap = new CBitImage();
if (!m_pRMap.Load(prmapBytes))
{
m_pRMap = null;
return false;
}
return true;
}
public bool LoadDHMap(byte[] pdhmapBytes)
{
m_pDHMap = new CBlockImageFix16(0, 4);
if (!m_pDHMap.Load(pdhmapBytes))
{
m_pDHMap = null;
return false;
}
return true;
}
public float GetDH(int x, int y)
{
// NOTE: DHMap stores FIX16 (10.6) as short; float = value / 64.
// 注意:DHMap 以 FIX16(10.6) short 存储;float = value / 64。
if (m_pDHMap == null) return 0.0f;
short fix = m_pDHMap.GetPixel(x, y);
return fix / 64.0f;
}
}
}