62 lines
1.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
|
|
|