using Unity.NetCode; namespace ProjectM.Simulation { /// /// Client -> server request to move items from the sender's PERSONAL inventory into the shared base /// stockpile (the global the build/upgrade/automation economy spends from). /// A one-off action, so it is an RPC (not a per-tick predicted input), and the server applies it exactly /// once in the plain SimulationSystemGroup (no rollback double-apply). Payload is plain blittable scalars /// (no entity refs, no enum): the server resolves the sender's player from the RPC's SourceConnection. The /// wire type is UNCONDITIONAL (never #if-gated) so the RpcCollection hash matches across release/dev peers; /// only the send/receive SYSTEMS may be #if-gated. /// public struct InventoryDepositRequest : IRpcCommand { /// Item to deposit, or 0 to deposit EVERYTHING the player is carrying. The server branches on /// 0 BEFORE any per-item withdraw and never writes a 0-id row. public ushort ItemId; /// Quantity to deposit; <= 0 means "all of that item" (ignored when ItemId is 0). public int Count; } }