add color enum
This commit is contained in:
@@ -37,6 +37,17 @@ enum ExportResult { success, canceled, unknownException }
|
|||||||
/// - [Ruleset.multipleWinners]: Multiple players can be winners.
|
/// - [Ruleset.multipleWinners]: Multiple players can be winners.
|
||||||
enum Ruleset { highestScore, lowestScore, singleWinner, singleLoser, multipleWinners }
|
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.
|
/// Translates a [Ruleset] enum value to its corresponding localized string.
|
||||||
String translateRulesetToString(Ruleset ruleset, BuildContext context) {
|
String translateRulesetToString(Ruleset ruleset, BuildContext context) {
|
||||||
final loc = AppLocalizations.of(context);
|
final loc = AppLocalizations.of(context);
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
|||||||
name: row.name,
|
name: row.name,
|
||||||
ruleset: Ruleset.values.firstWhere((e) => e.name == row.ruleset),
|
ruleset: Ruleset.values.firstWhere((e) => e.name == row.ruleset),
|
||||||
description: row.description,
|
description: row.description,
|
||||||
color: row.color,
|
color: GameColor.values.firstWhere((e) => e.name == row.color),
|
||||||
icon: row.icon,
|
icon: row.icon,
|
||||||
createdAt: row.createdAt,
|
createdAt: row.createdAt,
|
||||||
),
|
),
|
||||||
@@ -38,7 +38,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
|||||||
name: result.name,
|
name: result.name,
|
||||||
ruleset: Ruleset.values.firstWhere((e) => e.name == result.ruleset),
|
ruleset: Ruleset.values.firstWhere((e) => e.name == result.ruleset),
|
||||||
description: result.description,
|
description: result.description,
|
||||||
color: result.color,
|
color: GameColor.values.firstWhere((e) => e.name == result.color),
|
||||||
icon: result.icon,
|
icon: result.icon,
|
||||||
createdAt: result.createdAt,
|
createdAt: result.createdAt,
|
||||||
);
|
);
|
||||||
@@ -55,7 +55,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
|||||||
name: game.name,
|
name: game.name,
|
||||||
ruleset: game.ruleset.name,
|
ruleset: game.ruleset.name,
|
||||||
description: game.description,
|
description: game.description,
|
||||||
color: game.color,
|
color: game.color.name,
|
||||||
icon: game.icon,
|
icon: game.icon,
|
||||||
createdAt: game.createdAt,
|
createdAt: game.createdAt,
|
||||||
),
|
),
|
||||||
@@ -81,7 +81,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
|||||||
name: game.name,
|
name: game.name,
|
||||||
ruleset: game.ruleset.name,
|
ruleset: game.ruleset.name,
|
||||||
description: game.description,
|
description: game.description,
|
||||||
color: game.color,
|
color: game.color.name,
|
||||||
icon: game.icon,
|
icon: game.icon,
|
||||||
createdAt: game.createdAt,
|
createdAt: game.createdAt,
|
||||||
),
|
),
|
||||||
@@ -135,10 +135,10 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Updates the color of the game with the given [gameId].
|
/// 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(
|
await (update(
|
||||||
gameTable,
|
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].
|
/// Updates the icon of the game with the given [gameId].
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ class MatchDao extends DatabaseAccessor<AppDatabase> with _$MatchDaoMixin {
|
|||||||
name: game.name,
|
name: game.name,
|
||||||
ruleset: game.ruleset.name,
|
ruleset: game.ruleset.name,
|
||||||
description: game.description,
|
description: game.description,
|
||||||
color: game.color,
|
color: game.color.name,
|
||||||
icon: game.icon,
|
icon: game.icon,
|
||||||
createdAt: game.createdAt,
|
createdAt: game.createdAt,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ class Game {
|
|||||||
final String name;
|
final String name;
|
||||||
final Ruleset ruleset;
|
final Ruleset ruleset;
|
||||||
final String description;
|
final String description;
|
||||||
final String color;
|
final GameColor color;
|
||||||
final String icon;
|
final String icon;
|
||||||
|
|
||||||
Game({
|
Game({
|
||||||
@@ -34,7 +34,7 @@ class Game {
|
|||||||
name = json['name'],
|
name = json['name'],
|
||||||
ruleset = Ruleset.values.firstWhere((e) => e.name == json['ruleset']),
|
ruleset = Ruleset.values.firstWhere((e) => e.name == json['ruleset']),
|
||||||
description = json['description'],
|
description = json['description'],
|
||||||
color = json['color'],
|
color = GameColor.values.firstWhere((e) => e.name == json['color']),
|
||||||
icon = json['icon'];
|
icon = json['icon'];
|
||||||
|
|
||||||
/// Converts the Game instance to a JSON object.
|
/// Converts the Game instance to a JSON object.
|
||||||
@@ -44,7 +44,7 @@ class Game {
|
|||||||
'name': name,
|
'name': name,
|
||||||
'ruleset': ruleset.name,
|
'ruleset': ruleset.name,
|
||||||
'description': description,
|
'description': description,
|
||||||
'color': color,
|
'color': color.name,
|
||||||
'icon': icon,
|
'icon': icon,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ class Match {
|
|||||||
createdAt = DateTime.parse(json['createdAt']),
|
createdAt = DateTime.parse(json['createdAt']),
|
||||||
endedAt = json['endedAt'] != null ? DateTime.parse(json['endedAt']) : null,
|
endedAt = json['endedAt'] != null ? DateTime.parse(json['endedAt']) : null,
|
||||||
name = json['name'],
|
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
|
group = null, // Populated during import via DataTransferService
|
||||||
players = [], // Populated during import via DataTransferService
|
players = [], // Populated during import via DataTransferService
|
||||||
notes = json['notes'] ?? '';
|
notes = json['notes'] ?? '';
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ class _HomeViewState extends State<HomeView> {
|
|||||||
2,
|
2,
|
||||||
Match(
|
Match(
|
||||||
name: 'Skeleton 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(
|
group: Group(
|
||||||
name: 'Skeleton Group',
|
name: 'Skeleton Group',
|
||||||
description: '',
|
description: '',
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ class _CreateMatchViewState extends State<CreateMatchView> {
|
|||||||
name: selectedGame.$1,
|
name: selectedGame.$1,
|
||||||
description: selectedGame.$2,
|
description: selectedGame.$2,
|
||||||
ruleset: selectedGame.$3,
|
ruleset: selectedGame.$3,
|
||||||
color: '0xFF000000',
|
color: GameColor.blue,
|
||||||
icon: '',
|
icon: '',
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
@@ -212,7 +212,7 @@ class _CreateMatchViewState extends State<CreateMatchView> {
|
|||||||
name: selectedGame.$1,
|
name: selectedGame.$1,
|
||||||
description: selectedGame.$2,
|
description: selectedGame.$2,
|
||||||
ruleset: selectedGame.$3,
|
ruleset: selectedGame.$3,
|
||||||
color: '0xFF000000',
|
color: GameColor.blue,
|
||||||
icon: '',
|
icon: '',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ class _MatchViewState extends State<MatchView> {
|
|||||||
4,
|
4,
|
||||||
Match(
|
Match(
|
||||||
name: 'Skeleton match name',
|
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(
|
group: Group(
|
||||||
name: 'Group name',
|
name: 'Group name',
|
||||||
description: '',
|
description: '',
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ class DataTransferService {
|
|||||||
return Match(
|
return Match(
|
||||||
id: map['id'] as String,
|
id: map['id'] as String,
|
||||||
name: map['name'] 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,
|
group: group,
|
||||||
players: players.isNotEmpty ? players : null,
|
players: players.isNotEmpty ? players : null,
|
||||||
createdAt: DateTime.parse(map['createdAt'] as String),
|
createdAt: DateTime.parse(map['createdAt'] as String),
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ void main() {
|
|||||||
name: 'Chess',
|
name: 'Chess',
|
||||||
ruleset: Ruleset.singleWinner,
|
ruleset: Ruleset.singleWinner,
|
||||||
description: 'A classic strategy game',
|
description: 'A classic strategy game',
|
||||||
color: '0xFF0000FF',
|
color: GameColor.blue,
|
||||||
icon: 'chess_icon',
|
icon: 'chess_icon',
|
||||||
);
|
);
|
||||||
testGame2 = Game(
|
testGame2 = Game(
|
||||||
@@ -35,7 +35,7 @@ void main() {
|
|||||||
name: 'Poker',
|
name: 'Poker',
|
||||||
ruleset: Ruleset.multipleWinners,
|
ruleset: Ruleset.multipleWinners,
|
||||||
description: 'Card game with multiple winners',
|
description: 'Card game with multiple winners',
|
||||||
color: '0xFFFF0000',
|
color: GameColor.red,
|
||||||
icon: 'poker_icon',
|
icon: 'poker_icon',
|
||||||
);
|
);
|
||||||
testGame3 = Game(
|
testGame3 = Game(
|
||||||
@@ -43,7 +43,7 @@ void main() {
|
|||||||
name: 'Monopoly',
|
name: 'Monopoly',
|
||||||
ruleset: Ruleset.highestScore,
|
ruleset: Ruleset.highestScore,
|
||||||
description: 'A board game about real estate',
|
description: 'A board game about real estate',
|
||||||
color: '0xFF000000',
|
color: GameColor.orange,
|
||||||
icon: '',
|
icon: '',
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@@ -134,7 +134,7 @@ void main() {
|
|||||||
|
|
||||||
// Verifies that a game with null optional fields can be added and retrieved.
|
// Verifies that a game with null optional fields can be added and retrieved.
|
||||||
test('addGame handles game with null optional fields', () async {
|
test('addGame handles game with null optional fields', () async {
|
||||||
final gameWithNulls = Game(name: 'Simple Game', ruleset: Ruleset.lowestScore, description: 'A simple game', color: '0xFF000000', icon: '');
|
final gameWithNulls = Game(name: 'Simple Game', ruleset: Ruleset.lowestScore, description: 'A simple game', color: GameColor.green, icon: '');
|
||||||
final result = await database.gameDao.addGame(game: gameWithNulls);
|
final result = await database.gameDao.addGame(game: gameWithNulls);
|
||||||
expect(result, true);
|
expect(result, true);
|
||||||
|
|
||||||
@@ -143,7 +143,7 @@ void main() {
|
|||||||
);
|
);
|
||||||
expect(fetchedGame.name, 'Simple Game');
|
expect(fetchedGame.name, 'Simple Game');
|
||||||
expect(fetchedGame.description, 'A simple game');
|
expect(fetchedGame.description, 'A simple game');
|
||||||
expect(fetchedGame.color, '0xFF000000');
|
expect(fetchedGame.color, GameColor.green);
|
||||||
expect(fetchedGame.icon, isNull);
|
expect(fetchedGame.icon, isNull);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -340,20 +340,20 @@ void main() {
|
|||||||
|
|
||||||
await database.gameDao.updateGameColor(
|
await database.gameDao.updateGameColor(
|
||||||
gameId: testGame1.id,
|
gameId: testGame1.id,
|
||||||
newColor: '0xFF00FF00',
|
newColor: GameColor.green,
|
||||||
);
|
);
|
||||||
|
|
||||||
final updatedGame = await database.gameDao.getGameById(
|
final updatedGame = await database.gameDao.getGameById(
|
||||||
gameId: testGame1.id,
|
gameId: testGame1.id,
|
||||||
);
|
);
|
||||||
expect(updatedGame.color, '0xFF00FF00');
|
expect(updatedGame.color, GameColor.green);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Verifies that updateGameColor does nothing when game doesn't exist.
|
// Verifies that updateGameColor does nothing when game doesn't exist.
|
||||||
test('updateGameColor does nothing for non-existent game', () async {
|
test('updateGameColor does nothing for non-existent game', () async {
|
||||||
await database.gameDao.updateGameColor(
|
await database.gameDao.updateGameColor(
|
||||||
gameId: 'non-existent-id',
|
gameId: 'non-existent-id',
|
||||||
newColor: '0xFF00FF00',
|
newColor: GameColor.green,
|
||||||
);
|
);
|
||||||
|
|
||||||
final allGames = await database.gameDao.getAllGames();
|
final allGames = await database.gameDao.getAllGames();
|
||||||
@@ -460,7 +460,7 @@ void main() {
|
|||||||
name: 'Game\'s & "Special" <Name>',
|
name: 'Game\'s & "Special" <Name>',
|
||||||
ruleset: Ruleset.multipleWinners,
|
ruleset: Ruleset.multipleWinners,
|
||||||
description: 'Description with émojis 🎮🎲',
|
description: 'Description with émojis 🎮🎲',
|
||||||
color: '0xFF000000',
|
color: GameColor.purple,
|
||||||
icon: '',
|
icon: '',
|
||||||
);
|
);
|
||||||
await database.gameDao.addGame(game: specialGame);
|
await database.gameDao.addGame(game: specialGame);
|
||||||
@@ -479,7 +479,7 @@ void main() {
|
|||||||
ruleset: Ruleset.singleWinner,
|
ruleset: Ruleset.singleWinner,
|
||||||
description: '',
|
description: '',
|
||||||
icon: '',
|
icon: '',
|
||||||
color: '0xFF000000',
|
color: GameColor.red,
|
||||||
);
|
);
|
||||||
await database.gameDao.addGame(game: emptyGame);
|
await database.gameDao.addGame(game: emptyGame);
|
||||||
|
|
||||||
@@ -499,7 +499,7 @@ void main() {
|
|||||||
name: longString,
|
name: longString,
|
||||||
description: longString,
|
description: longString,
|
||||||
ruleset: Ruleset.multipleWinners,
|
ruleset: Ruleset.multipleWinners,
|
||||||
color: '0xFF000000',
|
color: GameColor.yellow,
|
||||||
icon: '',
|
icon: '',
|
||||||
);
|
);
|
||||||
await database.gameDao.addGame(game: longGame);
|
await database.gameDao.addGame(game: longGame);
|
||||||
@@ -522,7 +522,7 @@ void main() {
|
|||||||
);
|
);
|
||||||
await database.gameDao.updateGameColor(
|
await database.gameDao.updateGameColor(
|
||||||
gameId: testGame1.id,
|
gameId: testGame1.id,
|
||||||
newColor: '0xFF123456',
|
newColor: GameColor.teal,
|
||||||
);
|
);
|
||||||
await database.gameDao.updateGameDescription(
|
await database.gameDao.updateGameDescription(
|
||||||
gameId: testGame1.id,
|
gameId: testGame1.id,
|
||||||
@@ -533,7 +533,7 @@ void main() {
|
|||||||
gameId: testGame1.id,
|
gameId: testGame1.id,
|
||||||
);
|
);
|
||||||
expect(updatedGame.name, 'Updated Name');
|
expect(updatedGame.name, 'Updated Name');
|
||||||
expect(updatedGame.color, '0xFF123456');
|
expect(updatedGame.color, GameColor.teal);
|
||||||
expect(updatedGame.description, 'Updated Description');
|
expect(updatedGame.description, 'Updated Description');
|
||||||
expect(updatedGame.ruleset, testGame1.ruleset);
|
expect(updatedGame.ruleset, testGame1.ruleset);
|
||||||
expect(updatedGame.icon, testGame1.icon);
|
expect(updatedGame.icon, testGame1.icon);
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ void main() {
|
|||||||
description: '',
|
description: '',
|
||||||
members: [testPlayer4, testPlayer5],
|
members: [testPlayer4, testPlayer5],
|
||||||
);
|
);
|
||||||
testGame = Game(name: 'Test Game', ruleset: Ruleset.singleWinner, description: 'A test game', color: '0xFF000000', icon: '');
|
testGame = Game(name: 'Test Game', ruleset: Ruleset.singleWinner, description: 'A test game', color: GameColor.blue, icon: '');
|
||||||
testMatch1 = Match(
|
testMatch1 = Match(
|
||||||
name: 'First Test Match',
|
name: 'First Test Match',
|
||||||
game: testGame,
|
game: testGame,
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ void main() {
|
|||||||
description: '',
|
description: '',
|
||||||
members: [testPlayer1, testPlayer2, testPlayer3],
|
members: [testPlayer1, testPlayer2, testPlayer3],
|
||||||
);
|
);
|
||||||
testGame = Game(name: 'Test Game', ruleset: Ruleset.singleWinner, description: 'A test game', color: '0xFF000000', icon: '');
|
testGame = Game(name: 'Test Game', ruleset: Ruleset.singleWinner, description: 'A test game', color: GameColor.blue, icon: '');
|
||||||
testMatchOnlyGroup = Match(
|
testMatchOnlyGroup = Match(
|
||||||
name: 'Test Match with Group',
|
name: 'Test Match with Group',
|
||||||
game: testGame,
|
game: testGame,
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ void main() {
|
|||||||
testPlayer1 = Player(name: 'Alice', description: '');
|
testPlayer1 = Player(name: 'Alice', description: '');
|
||||||
testPlayer2 = Player(name: 'Bob', description: '');
|
testPlayer2 = Player(name: 'Bob', description: '');
|
||||||
testPlayer3 = Player(name: 'Charlie', description: '');
|
testPlayer3 = Player(name: 'Charlie', description: '');
|
||||||
testGame = Game(name: 'Test Game', ruleset: Ruleset.singleWinner, description: 'A test game', color: '0xFF000000', icon: '');
|
testGame = Game(name: 'Test Game', ruleset: Ruleset.singleWinner, description: 'A test game', color: GameColor.blue, icon: '');
|
||||||
testMatch1 = Match(
|
testMatch1 = Match(
|
||||||
name: 'Test Match 1',
|
name: 'Test Match 1',
|
||||||
game: testGame,
|
game: testGame,
|
||||||
|
|||||||
@@ -49,8 +49,8 @@ void main() {
|
|||||||
name: 'Team Gamma',
|
name: 'Team Gamma',
|
||||||
members: [testPlayer1, testPlayer3],
|
members: [testPlayer1, testPlayer3],
|
||||||
);
|
);
|
||||||
testGame1 = Game(name: 'Game 1', ruleset: Ruleset.singleWinner, description: 'Test game 1', color: '0xFF000000', icon: '');
|
testGame1 = Game(name: 'Game 1', ruleset: Ruleset.singleWinner, description: 'Test game 1', color: GameColor.blue, icon: '');
|
||||||
testGame2 = Game(name: 'Game 2', ruleset: Ruleset.highestScore, description: 'Test game 2', color: '0xFF000000', icon: '');
|
testGame2 = Game(name: 'Game 2', ruleset: Ruleset.highestScore, description: 'Test game 2', color: GameColor.red, icon: '');
|
||||||
});
|
});
|
||||||
|
|
||||||
await database.playerDao.addPlayersAsList(
|
await database.playerDao.addPlayersAsList(
|
||||||
|
|||||||
Reference in New Issue
Block a user