mirror of
https://github.com/ACEmulator/ACE
synced 2026-08-17 12:26:06 -04:00
38 lines
1.3 KiB
C#
38 lines
1.3 KiB
C#
using System.Collections.Generic;
|
|
using System.IO;
|
|
using ACE.Entity.Enum;
|
|
|
|
namespace ACE.DatLoader.Entity
|
|
{
|
|
public class CBldPortal : IUnpackable
|
|
{
|
|
public PortalFlags Flags { get; private set; }
|
|
|
|
// Not sure what these do. They are both calculated from the flags.
|
|
public bool ExactMatch => Flags.HasFlag(PortalFlags.ExactMatch);
|
|
public bool PortalSide => !Flags.HasFlag(PortalFlags.PortalSide); // this->portal_side = ((unsigned __int8)~(_BYTE)v5 >> 1) & 1;
|
|
|
|
// Basically the cells that connect both sides of the portal
|
|
public ushort OtherCellId { get; private set; }
|
|
public ushort OtherPortalId { get; private set; }
|
|
|
|
/// <summary>
|
|
/// List of cells used in this structure. (Or possibly just those visible through it.)
|
|
/// </summary>
|
|
public List<ushort> StabList { get; } = new List<ushort>();
|
|
|
|
public void Unpack(BinaryReader reader)
|
|
{
|
|
Flags = (PortalFlags)reader.ReadUInt16();
|
|
|
|
OtherCellId = reader.ReadUInt16();
|
|
OtherPortalId = reader.ReadUInt16();
|
|
|
|
ushort num_stabs = reader.ReadUInt16();
|
|
for (var i = 0; i < num_stabs; i++)
|
|
StabList.Add(reader.ReadUInt16());
|
|
|
|
reader.AlignBoundary();
|
|
}
|
|
}
|
|
}
|