add color enum

This commit is contained in:
gelbeinhalb
2026-02-01 18:13:03 +01:00
parent ccfea71a35
commit dbef735a82
14 changed files with 45 additions and 34 deletions

View File

@@ -37,6 +37,17 @@ enum ExportResult { success, canceled, unknownException }
/// - [Ruleset.multipleWinners]: Multiple players can be winners.
enum Ruleset { highestScore, lowestScore, singleWinner, singleLoser, multipleWinners }
/// Different colors available for games
/// - [GameColor.red]: Red color
/// - [GameColor.blue]: Blue color
/// - [GameColor.green]: Green color
/// - [GameColor.yellow]: Yellow color
/// - [GameColor.purple]: Purple color
/// - [GameColor.orange]: Orange color
/// - [GameColor.pink]: Pink color
/// - [GameColor.teal]: Teal color
enum GameColor { red, blue, green, yellow, purple, orange, pink, teal }
/// Translates a [Ruleset] enum value to its corresponding localized string.
String translateRulesetToString(Ruleset ruleset, BuildContext context) {
final loc = AppLocalizations.of(context);

View File

@@ -21,7 +21,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
name: row.name,
ruleset: Ruleset.values.firstWhere((e) => e.name == row.ruleset),
description: row.description,
color: row.color,
color: GameColor.values.firstWhere((e) => e.name == row.color),
icon: row.icon,
createdAt: row.createdAt,
),
@@ -38,7 +38,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
name: result.name,
ruleset: Ruleset.values.firstWhere((e) => e.name == result.ruleset),
description: result.description,
color: result.color,
color: GameColor.values.firstWhere((e) => e.name == result.color),
icon: result.icon,
createdAt: result.createdAt,
);
@@ -55,7 +55,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
name: game.name,
ruleset: game.ruleset.name,
description: game.description,
color: game.color,
color: game.color.name,
icon: game.icon,
createdAt: game.createdAt,
),
@@ -81,7 +81,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
name: game.name,
ruleset: game.ruleset.name,
description: game.description,
color: game.color,
color: game.color.name,
icon: game.icon,
createdAt: game.createdAt,
),
@@ -135,10 +135,10 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
}
/// Updates the color of the game with the given [gameId].
Future<void> updateGameColor({required String gameId, required String newColor}) async {
Future<void> updateGameColor({required String gameId, required GameColor newColor}) async {
await (update(
gameTable,
)..where((g) => g.id.equals(gameId))).write(GameTableCompanion(color: Value(newColor)));
)..where((g) => g.id.equals(gameId))).write(GameTableCompanion(color: Value(newColor.name)));
}
/// Updates the icon of the game with the given [gameId].

View File

@@ -126,7 +126,7 @@ class MatchDao extends DatabaseAccessor<AppDatabase> with _$MatchDaoMixin {
name: game.name,
ruleset: game.ruleset.name,
description: game.description,
color: game.color,
color: game.color.name,
icon: game.icon,
createdAt: game.createdAt,
),

View File

@@ -8,7 +8,7 @@ class Game {
final String name;
final Ruleset ruleset;
final String description;
final String color;
final GameColor color;
final String icon;
Game({
@@ -34,7 +34,7 @@ class Game {
name = json['name'],
ruleset = Ruleset.values.firstWhere((e) => e.name == json['ruleset']),
description = json['description'],
color = json['color'],
color = GameColor.values.firstWhere((e) => e.name == json['color']),
icon = json['icon'];
/// Converts the Game instance to a JSON object.
@@ -44,7 +44,7 @@ class Game {
'name': name,
'ruleset': ruleset.name,
'description': description,
'color': color,
'color': color.name,
'icon': icon,
};
}

View File

@@ -41,7 +41,7 @@ class Match {
createdAt = DateTime.parse(json['createdAt']),
endedAt = json['endedAt'] != null ? DateTime.parse(json['endedAt']) : null,
name = json['name'],
game = Game(name: '', ruleset: Ruleset.singleWinner, description: '', color: '', icon: ''), // Populated during import via DataTransferService
game = Game(name: '', ruleset: Ruleset.singleWinner, description: '', color: GameColor.blue, icon: ''), // Populated during import via DataTransferService
group = null, // Populated during import via DataTransferService
players = [], // Populated during import via DataTransferService
notes = json['notes'] ?? '';

View File

@@ -42,7 +42,7 @@ class _HomeViewState extends State<HomeView> {
2,
Match(
name: 'Skeleton Match',
game: Game(name: '', ruleset: Ruleset.singleWinner, description: '', color: '', icon: ''),
game: Game(name: '', ruleset: Ruleset.singleWinner, description: '', color: GameColor.blue, icon: ''),
group: Group(
name: 'Skeleton Group',
description: '',

View File

@@ -202,7 +202,7 @@ class _CreateMatchViewState extends State<CreateMatchView> {
name: selectedGame.$1,
description: selectedGame.$2,
ruleset: selectedGame.$3,
color: '0xFF000000',
color: GameColor.blue,
icon: '',
);
} else {
@@ -212,7 +212,7 @@ class _CreateMatchViewState extends State<CreateMatchView> {
name: selectedGame.$1,
description: selectedGame.$2,
ruleset: selectedGame.$3,
color: '0xFF000000',
color: GameColor.blue,
icon: '',
);
}

View File

@@ -38,7 +38,7 @@ class _MatchViewState extends State<MatchView> {
4,
Match(
name: 'Skeleton match name',
game: Game(name: '', ruleset: Ruleset.singleWinner, description: '', color: '', icon: ''),
game: Game(name: '', ruleset: Ruleset.singleWinner, description: '', color: GameColor.blue, icon: ''),
group: Group(
name: 'Group name',
description: '',

View File

@@ -208,7 +208,7 @@ class DataTransferService {
return Match(
id: map['id'] as String,
name: map['name'] as String,
game: game ?? Game(name: 'Unknown', ruleset: Ruleset.singleWinner, description: '', color: '', icon: ''),
game: game ?? Game(name: 'Unknown', ruleset: Ruleset.singleWinner, description: '', color: GameColor.blue, icon: ''),
group: group,
players: players.isNotEmpty ? players : null,
createdAt: DateTime.parse(map['createdAt'] as String),