// 몬스터 크기 시스템
// 몬스터 레벨에 따라 ASCII 아트 크기 결정

/// 몬스터 크기 enum
/// 실제 프레임 줄 수와 일치하도록 설정
enum MonsterSize {
  /// 2줄 (레벨 1-5)
  tiny(2),

  /// 4줄 (레벨 6-10)
  small(4),

  /// 6줄 (레벨 11-15)
  medium(6),

  /// 8줄 (레벨 16-25)
  large(8),

  /// 8줄 (레벨 26-35)
  huge(8),

  /// 8줄 (레벨 36-50)
  giant(8),

  /// 8줄 (레벨 51+, 보스급)
  titanic(8);

  const MonsterSize(this.lines);

  /// 해당 크기의 줄 수
  final int lines;
}

/// 몬스터 레벨에서 크기 결정
MonsterSize getMonsterSize(int? level) {
  if (level == null || level <= 0) return MonsterSize.tiny;

  if (level <= 5) return MonsterSize.tiny;
  if (level <= 10) return MonsterSize.small;
  if (level <= 15) return MonsterSize.medium;
  if (level <= 25) return MonsterSize.large;
  if (level <= 35) return MonsterSize.huge;
  if (level <= 50) return MonsterSize.giant;
  return MonsterSize.titanic;
}

/// 몬스터 크기에 따른 세로 패딩 계산 (7줄 프레임에서 중앙 정렬)
int getMonsterVerticalPadding(MonsterSize size) {
  return (7 - size.lines) ~/ 2;
}
