104 lines
2.6 KiB
Dart
104 lines
2.6 KiB
Dart
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,
|
|
);
|
|
}
|
|
}
|