Files
Project-M/Assets/_Project/Scripts/Simulation/Meta/MetaSpendRequest.cs
T
2026-07-02 20:41:43 -07:00

19 lines
863 B
C#

using Unity.NetCode;
namespace ProjectM.Simulation
{
/// <summary>
/// Client → server permanent meta-upgrade purchase: <see cref="UpgradeId"/> keys the baked meta catalog. The
/// TIER is SERVER-COMPUTED (a purchase always buys owned+1) — putting a tier on the wire would invite
/// desync/cheat. Server-validated (<c>RunInfo.Lifecycle==Staging</c> phase gate, class mask, prereq, MaxTier,
/// Aether affordability) with DR-014 in-loop ledger atomicity so two same-tick purchases on barely-enough Aether
/// cannot both pass. UNCONDITIONAL wire type. Declared at Step 3 (wire front-load); consumed by
/// <c>MetaSpendSystem</c> from Step 13.
/// </summary>
public struct MetaSpendRequest : IRpcCommand
{
/// <summary>Meta-catalog upgrade id (append-only key).</summary>
public byte UpgradeId;
}
}