/// A polyomino with fixed orientation (no rotation at play time, genre
/// convention). Offsets are normalized cell positions relative to the
/// top-left anchor.
class Piece {
  const Piece({
    required this.id,
    required this.offsets,
    required this.colorId,
    this.weight = 1.0,
    this.tier = 1,
  });

  final String id;
  final List<(int, int)> offsets;
  final int colorId;

  /// Base draw weight; stage generator profiles scale this.
  final double weight;

  /// Difficulty tier 1 (easy to fit) .. 3 (demanding).
  final int tier;

  int get size => offsets.length;

  @override
  String toString() => 'Piece($id)';
}
