using Unity.Entities;
using Unity.NetCode;
namespace ProjectM.Simulation
{
///
/// A player's private choice-of-3 boon offer for the just-cleared room. OWNER-ONLY replication
/// (): the offer is an observe-only HUD read of the LOCAL player — no
/// prediction, no teammate read — so the traffic-minimal owner-only path is correct (Play-validated at Step 9;
/// the proven fallback is , which for HUD purposes still only surfaces each
/// player's component on the client that owns that ghost). Written by BoonOfferSystem on the RoomReward
/// entry edge (options drawn deterministically from Hash(RunSeed, room, NetworkId)); is
/// cleared by BoonApplySystem on a valid pick and zeroed by the Returning-edge strip. INERT until Step 9 —
/// baked at Step 3 so the player ghost re-bakes exactly ONCE for the whole redesign.
///
[GhostComponent(OwnerSendType = SendToOwnerType.SendToOwner)]
public struct BoonOffer : IComponentData
{
/// 1 = awaiting this player's pick.
[GhostField] public byte Pending;
/// Boon catalog id of option 0.
[GhostField] public byte Option0;
/// Boon catalog id of option 1.
[GhostField] public byte Option1;
/// Boon catalog id of option 2.
[GhostField] public byte Option2;
}
}