class HuntCard {
  final String id;
  final String category;
  final String categoryIcon;
  final int points;
  final String question;
  final String answer;
  final String description;
  final double targetLatitude;
  final double targetLongitude;
  final double hintLatitude;
  final double hintLongitude;
  final String hintDescription;
  final bool isCompleted;
  final bool isActive;

  const HuntCard({
    required this.id,
    required this.category,
    required this.categoryIcon,
    required this.points,
    required this.question,
    required this.answer,
    required this.description,
    required this.targetLatitude,
    required this.targetLongitude,
    required this.hintLatitude,
    required this.hintLongitude,
    required this.hintDescription,
    this.isCompleted = false,
    this.isActive = false,
  });

  HuntCard copyWith({
    String? id,
    String? category,
    String? categoryIcon,
    int? points,
    String? question,
    String? answer,
    String? description,
    double? targetLatitude,
    double? targetLongitude,
    double? hintLatitude,
    double? hintLongitude,
    String? hintDescription,
    bool? isCompleted,
    bool? isActive,
  }) {
    return HuntCard(
      id: id ?? this.id,
      category: category ?? this.category,
      categoryIcon: categoryIcon ?? this.categoryIcon,
      points: points ?? this.points,
      question: question ?? this.question,
      answer: answer ?? this.answer,
      description: description ?? this.description,
      targetLatitude: targetLatitude ?? this.targetLatitude,
      targetLongitude: targetLongitude ?? this.targetLongitude,
      hintLatitude: hintLatitude ?? this.hintLatitude,
      hintLongitude: hintLongitude ?? this.hintLongitude,
      hintDescription: hintDescription ?? this.hintDescription,
      isCompleted: isCompleted ?? this.isCompleted,
      isActive: isActive ?? this.isActive,
    );
  }
}

class LeaderboardEntry {
  final String id;
  final String name;
  final String avatar;
  final int totalPoints;
  final int rank;
  final bool isCurrentUser;

  const LeaderboardEntry({
    required this.id,
    required this.name,
    required this.avatar,
    required this.totalPoints,
    required this.rank,
    this.isCurrentUser = false,
  });

  LeaderboardEntry copyWith({
    String? id,
    String? name,
    String? avatar,
    int? totalPoints,
    int? rank,
    bool? isCurrentUser,
  }) {
    return LeaderboardEntry(
      id: id ?? this.id,
      name: name ?? this.name,
      avatar: avatar ?? this.avatar,
      totalPoints: totalPoints ?? this.totalPoints,
      rank: rank ?? this.rank,
      isCurrentUser: isCurrentUser ?? this.isCurrentUser,
    );
  }
}
