feat(runtime): seal dormant SetPosition evaluations
This commit is contained in:
parent
22651c823d
commit
99f867f053
16 changed files with 2298 additions and 62 deletions
|
|
@ -179,6 +179,17 @@ public sealed class PropertyBundle
|
|||
/// </summary>
|
||||
public sealed class ClientObject
|
||||
{
|
||||
private uint? _houseOwnerId;
|
||||
private uint? _monarchId;
|
||||
private HouseRestrictionRecord? _restrictions;
|
||||
|
||||
/// <summary>
|
||||
/// Synchronous table-internal notification for the qualities consulted by
|
||||
/// retail's house-entry restriction gate. Multiple tables may retain the
|
||||
/// same object during isolated evaluation fixtures; each receives the edge.
|
||||
/// </summary>
|
||||
internal event Action<ClientObject>? RestrictionAuthorityChanged;
|
||||
|
||||
public uint ObjectId { get; init; }
|
||||
public uint WeenieClassId { get; set; } // "blueprint"
|
||||
public string Name { get; set; } = "";
|
||||
|
|
@ -273,7 +284,16 @@ public sealed class ClientObject
|
|||
/// object (wire <c>WeenieHeaderFlag.Owner</c>, 0x02000000). Zero or a
|
||||
/// match against the mover's own id admits regardless of the guest list.
|
||||
/// </summary>
|
||||
public uint? HouseOwnerId { get; set; }
|
||||
public uint? HouseOwnerId
|
||||
{
|
||||
get => _houseOwnerId;
|
||||
set
|
||||
{
|
||||
if (_houseOwnerId == value) return;
|
||||
_houseOwnerId = value;
|
||||
RestrictionAuthorityChanged?.Invoke(this);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// AP-129 (Campaign P Slice P4 review fix): retail <c>PublicWeenieDesc
|
||||
/// ._monarch_iid</c> (wire <c>WeenieHeaderFlag.Monarch</c>, 0x40) — this
|
||||
|
|
@ -281,7 +301,16 @@ public sealed class ClientObject
|
|||
/// objects; a player's own value is what <c>RestrictionDB::IsAllowedIn</c>
|
||||
/// compares against a house's <see cref="HouseRestrictionRecord.AllegianceMonarchId"/>.
|
||||
/// </summary>
|
||||
public uint? MonarchId { get; set; }
|
||||
public uint? MonarchId
|
||||
{
|
||||
get => _monarchId;
|
||||
set
|
||||
{
|
||||
if (_monarchId == value) return;
|
||||
_monarchId = value;
|
||||
RestrictionAuthorityChanged?.Invoke(this);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// AP-129 (Campaign P Slice P4 review fix): retail <c>PublicWeenieDesc
|
||||
/// ._db</c> (<c>RestrictionDB*</c>) — the house's own guest/ban list.
|
||||
|
|
@ -291,7 +320,16 @@ public sealed class ClientObject
|
|||
/// object — acdream cannot distinguish the two, and both resolve to
|
||||
/// the same retail-faithful "allow" default.
|
||||
/// </summary>
|
||||
public HouseRestrictionRecord? Restrictions { get; set; }
|
||||
public HouseRestrictionRecord? Restrictions
|
||||
{
|
||||
get => _restrictions;
|
||||
set
|
||||
{
|
||||
if (ReferenceEquals(_restrictions, value)) return;
|
||||
_restrictions = value;
|
||||
RestrictionAuthorityChanged?.Invoke(this);
|
||||
}
|
||||
}
|
||||
public PropertyBundle Properties { get; } = new();
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue