package com.tiedup.remake.v2.furniture;

import com.tiedup.remake.v2.BodyRegionV2;
import java.util.Set;

/**
 * Immutable definition for a single seat on a furniture piece or monster.
 *
 * <p>Loaded from JSON (furniture) or defined programmatically (monsters).
 * Each seat describes the physical constraints imposed on a seated player,
 * including which body regions are blocked and escape difficulty.</p>
 */
public record SeatDefinition(
    /** Unique seat identifier within this furniture (e.g., "main", "left"). */
    String id,

    /** GLB armature name (e.g., "Player_main"). */
    String armatureName,

    /** Body regions physically controlled by this seat. */
    Set<BodyRegionV2> blockedRegions,

    /** Whether this seat can be locked with a key. */
    boolean lockable,

    /** Struggle difficulty when locked (raw resistance, range 1-10000). */
    int lockedDifficulty,

    /** Whether items on non-blocked regions add to escape difficulty. */
    boolean itemDifficultyBonus
) {}
