Renamed GameColor to AppColor

This commit is contained in:
2026-05-21 18:31:15 +02:00
parent 021a546479
commit df8e060707
19 changed files with 80 additions and 78 deletions

View File

@@ -24,62 +24,62 @@ String translateRulesetToString(Ruleset ruleset, BuildContext context) {
}
}
// Returns a [GameColor] enum value based on the provided team [index].
GameColor getTeamColor(int index) {
// Returns a AppColor enum value based on the provided team [index].
AppColor getTeamColor(int index) {
final colors = [
GameColor.red,
GameColor.blue,
GameColor.green,
GameColor.yellow,
GameColor.purple,
GameColor.orange,
GameColor.pink,
GameColor.teal,
AppColor.red,
AppColor.blue,
AppColor.green,
AppColor.yellow,
AppColor.purple,
AppColor.orange,
AppColor.pink,
AppColor.teal,
];
return colors[index % colors.length];
}
/// Translates a [GameColor] enum value to its corresponding localized string.
String translateGameColorToString(GameColor color, BuildContext context) {
/// Translates a [AppColor] enum value to its corresponding localized string.
String translateGameColorToString(AppColor color, BuildContext context) {
final loc = AppLocalizations.of(context);
switch (color) {
case GameColor.red:
case AppColor.red:
return loc.color_red;
case GameColor.blue:
case AppColor.blue:
return loc.color_blue;
case GameColor.green:
case AppColor.green:
return loc.color_green;
case GameColor.yellow:
case AppColor.yellow:
return loc.color_yellow;
case GameColor.purple:
case AppColor.purple:
return loc.color_purple;
case GameColor.orange:
case AppColor.orange:
return loc.color_orange;
case GameColor.pink:
case AppColor.pink:
return loc.color_pink;
case GameColor.teal:
case AppColor.teal:
return loc.color_teal;
}
}
/// Returns the [Color] object corresponding to a [GameColor] enum value.
Color getColorFromGameColor(GameColor color) {
/// Returns the [Color] object corresponding to a [AppColor] enum value.
Color getColorFromGameColor(AppColor color) {
switch (color) {
case GameColor.red:
case AppColor.red:
return Colors.red;
case GameColor.blue:
case AppColor.blue:
return Colors.blue;
case GameColor.green:
case AppColor.green:
return Colors.green;
case GameColor.yellow:
case AppColor.yellow:
return const Color(0xFFF7CA28);
case GameColor.purple:
case AppColor.purple:
return Colors.purple;
case GameColor.orange:
case AppColor.orange:
return const Color(0xFFef681f);
case GameColor.pink:
case AppColor.pink:
return Colors.pink;
case GameColor.teal:
case AppColor.teal:
return Colors.teal;
}
}
@@ -127,6 +127,7 @@ String getExtraPlayerCount(Match match) {
return ' + ${count.toString()}';
}
/// Returns the player name count if greater 0 in the format " #2", otherwise an empty string
String getNameCountText(Player player) {
if (player.nameCount >= 1) {
return ' #${player.nameCount}';
@@ -134,6 +135,7 @@ String getNameCountText(Player player) {
return '';
}
/// Returns the correct singular or plural form of "point(s)" based on the [points] value.
String getPointLabel(AppLocalizations loc, int points) {
if (points == 1) {
return '$points ${loc.point}';

View File

@@ -42,5 +42,5 @@ enum Ruleset {
singleLoser,
}
/// Different colors for highlighting games
enum GameColor { red, orange, yellow, green, teal, blue, purple, pink }
/// Different colors for highlighting content
enum AppColor { red, orange, yellow, green, teal, blue, purple, pink }

View File

@@ -92,7 +92,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
name: row.name,
ruleset: Ruleset.values.firstWhere((e) => e.name == row.ruleset),
description: row.description,
color: GameColor.values.firstWhere((e) => e.name == row.color),
color: AppColor.values.firstWhere((e) => e.name == row.color),
icon: row.icon,
createdAt: row.createdAt,
),
@@ -109,7 +109,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
name: result.name,
ruleset: Ruleset.values.firstWhere((e) => e.name == result.ruleset),
description: result.description,
color: GameColor.values.firstWhere((e) => e.name == result.color),
color: AppColor.values.firstWhere((e) => e.name == result.color),
icon: result.icon,
createdAt: result.createdAt,
);
@@ -156,7 +156,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
/// Updates the color of the game with the given [gameId].
Future<bool> updateGameColor({
required String gameId,
required GameColor color,
required AppColor color,
}) async {
final rowsAffected =
await (update(gameTable)..where((g) => g.id.equals(gameId))).write(

View File

@@ -116,7 +116,7 @@ class TeamDao extends DatabaseAccessor<AppDatabase> with _$TeamDaoMixin {
id: row.id,
name: row.name,
createdAt: row.createdAt,
color: GameColor.values.byName(row.color),
color: AppColor.values.byName(row.color),
score: row.score,
members: members,
);
@@ -151,7 +151,7 @@ class TeamDao extends DatabaseAccessor<AppDatabase> with _$TeamDaoMixin {
id: result.id,
name: result.name,
createdAt: result.createdAt,
color: GameColor.values.byName(result.color),
color: AppColor.values.byName(result.color),
score: result.score,
members: members,
);
@@ -193,7 +193,7 @@ class TeamDao extends DatabaseAccessor<AppDatabase> with _$TeamDaoMixin {
/// Updates the color of the team with the given [teamId].
Future<bool> updateTeamColor({
required String teamId,
required GameColor color,
required AppColor color,
}) async {
final rowsAffected =
await (update(teamTable)..where((t) => t.id.equals(teamId))).write(

View File

@@ -8,13 +8,13 @@ class Game {
final String name;
final Ruleset ruleset;
final String description;
final GameColor color;
final AppColor color;
final String icon;
Game({
required this.name,
required this.ruleset,
this.color = GameColor.orange,
this.color = AppColor.orange,
this.description = '',
this.icon = '',
String? id,
@@ -33,7 +33,7 @@ class Game {
String? name,
Ruleset? ruleset,
String? description,
GameColor? color,
AppColor? color,
String? icon,
}) {
return Game(
@@ -73,7 +73,7 @@ class Game {
orElse: () => Ruleset.singleWinner,
),
description = json['description'],
color = GameColor.values.firstWhere((e) => e.name == json['color']),
color = AppColor.values.firstWhere((e) => e.name == json['color']),
icon = json['icon'];
Map<String, dynamic> toJson() => {

View File

@@ -113,7 +113,7 @@ class Match {
name: '',
ruleset: Ruleset.singleWinner,
description: '',
color: GameColor.blue,
color: AppColor.blue,
icon: '',
),
group = null,

View File

@@ -8,7 +8,7 @@ class Team {
final String id;
final String name;
final DateTime createdAt;
final GameColor color;
final AppColor color;
final int? score;
final List<Player> members;
@@ -16,7 +16,7 @@ class Team {
String? id,
required this.name,
DateTime? createdAt,
this.color = GameColor.blue,
this.color = AppColor.blue,
this.score,
required this.members,
}) : id = id ?? const Uuid().v4(),
@@ -31,7 +31,7 @@ class Team {
String? id,
String? name,
DateTime? createdAt,
GameColor? color,
AppColor? color,
int? score,
List<Player>? members,
}) {
@@ -71,7 +71,7 @@ class Team {
: id = json['id'],
name = json['name'],
createdAt = DateTime.parse(json['createdAt']),
color = GameColor.values.byName(json['color'] ?? GameColor.blue.name),
color = AppColor.values.byName(json['color'] ?? AppColor.blue.name),
score = json['score'] ?? 0,
members = []; // Populated during import via DataTransferService

View File

@@ -49,10 +49,10 @@ class _CreateGameViewState extends State<CreateGameView> {
late final AppDatabase db;
late List<(Ruleset, String)> _rulesets;
late List<(GameColor, String)> _colors;
late List<(AppColor, String)> _colors;
Ruleset? selectedRuleset = Ruleset.singleWinner;
GameColor? selectedColor = GameColor.orange;
AppColor? selectedColor = AppColor.orange;
/// Controller for the game name input field.
final _gameNameController = TextEditingController();
@@ -87,10 +87,10 @@ class _CreateGameViewState extends State<CreateGameView> {
),
);
_colors = List.generate(
GameColor.values.length,
AppColor.values.length,
(index) => (
GameColor.values[index],
translateGameColorToString(GameColor.values[index], context),
AppColor.values[index],
translateGameColorToString(AppColor.values[index], context),
),
);

View File

@@ -39,7 +39,7 @@ class _MatchViewState extends State<MatchView> {
game: Game(
name: 'Game name',
ruleset: Ruleset.singleWinner,
color: GameColor.blue,
color: AppColor.blue,
icon: '',
),
group: Group(

View File

@@ -12,7 +12,7 @@ class GameLabel extends StatelessWidget {
final String title;
final String description;
final GameColor color;
final AppColor color;
@override
Widget build(BuildContext context) {

View File

@@ -51,7 +51,7 @@ class GameTile extends StatelessWidget {
? (badgeColor!.computeLuminance() > 0.5 ? Colors.black : Colors.white)
: Colors.white;
final gameColor = badgeColor ?? getColorFromGameColor(GameColor.orange);
final gameColor = badgeColor ?? getColorFromGameColor(AppColor.orange);
return GestureDetector(
onTap: () async {

View File

@@ -18,7 +18,7 @@ class TeamCreationTile extends StatefulWidget {
this.onColorSelection,
});
final GameColor color;
final AppColor color;
final TextEditingController controller;
@@ -26,7 +26,7 @@ class TeamCreationTile extends StatefulWidget {
final VoidCallback? onDelete;
final ValueChanged<GameColor>? onColorSelection;
final ValueChanged<AppColor>? onColorSelection;
@override
State<TeamCreationTile> createState() => _TeamCreationTileState();
@@ -34,7 +34,7 @@ class TeamCreationTile extends StatefulWidget {
class _TeamCreationTileState extends State<TeamCreationTile> {
final teamColors = List.generate(
GameColor.values.length,
AppColor.values.length,
(index) => getTeamColor(index),
);

View File

@@ -278,7 +278,7 @@ class DataTransferService {
name: 'Unknown',
ruleset: Ruleset.singleWinner,
description: '',
color: GameColor.blue,
color: AppColor.blue,
icon: '',
);
}

View File

@@ -56,7 +56,7 @@ void main() {
name: 'Test Game',
ruleset: Ruleset.singleWinner,
description: 'A test game',
color: GameColor.blue,
color: AppColor.blue,
icon: '',
);
testMatch1 = Match(

View File

@@ -49,7 +49,7 @@ void main() {
testGame = Game(
name: 'Test Game',
ruleset: Ruleset.highestScore,
color: GameColor.blue,
color: AppColor.blue,
icon: '',
);
testMatch1 = Match(

View File

@@ -28,7 +28,7 @@ void main() {
name: 'Chess',
ruleset: Ruleset.singleWinner,
description: 'A classic strategy game',
color: GameColor.blue,
color: AppColor.blue,
icon: 'chess_icon',
);
testGame2 = Game(
@@ -36,7 +36,7 @@ void main() {
name: 'Poker',
ruleset: Ruleset.multipleWinners,
description: 'Card game with multiple winners',
color: GameColor.red,
color: AppColor.red,
icon: 'poker_icon',
);
testGame3 = Game(
@@ -44,7 +44,7 @@ void main() {
name: 'Monopoly',
ruleset: Ruleset.highestScore,
description: 'A board game about real estate',
color: GameColor.orange,
color: AppColor.orange,
icon: '',
);
});
@@ -124,7 +124,7 @@ void main() {
name: 'Game\'s & "Special" <Name>',
ruleset: Ruleset.multipleWinners,
description: 'Description with émojis 🎮🎲',
color: GameColor.purple,
color: AppColor.purple,
icon: '',
);
await database.gameDao.addGame(game: specialGame);
@@ -280,19 +280,19 @@ void main() {
await database.gameDao.updateGameColor(
gameId: testGame1.id,
color: GameColor.green,
color: AppColor.green,
);
final updatedGame = await database.gameDao.getGameById(
gameId: testGame1.id,
);
expect(updatedGame.color, GameColor.green);
expect(updatedGame.color, AppColor.green);
});
test('updateGameColor() does nothing for non-existent game', () async {
final updated = await database.gameDao.updateGameColor(
gameId: 'non-existent-id',
color: GameColor.green,
color: AppColor.green,
);
expect(updated, isFalse);
@@ -336,7 +336,7 @@ void main() {
name: newName,
);
const newGameColor = GameColor.teal;
const newGameColor = AppColor.teal;
await database.gameDao.updateGameColor(
gameId: testGame1.id,
color: newGameColor,

View File

@@ -42,7 +42,7 @@ void main() {
name: 'Test Game',
ruleset: Ruleset.singleWinner,
description: 'A test game',
color: GameColor.blue,
color: AppColor.blue,
icon: '',
);
testMatch1 = Match(

View File

@@ -40,7 +40,7 @@ void main() {
name: 'Test Game',
ruleset: Ruleset.singleWinner,
description: 'A test game',
color: GameColor.blue,
color: AppColor.blue,
icon: '',
);
testMatch1 = Match(

View File

@@ -45,7 +45,7 @@ void main() {
name: 'Chess',
ruleset: Ruleset.singleWinner,
description: 'Strategic board game',
color: GameColor.blue,
color: AppColor.blue,
icon: 'chess_icon',
);
@@ -445,19 +445,19 @@ void main() {
Game(
name: 'Red Game',
ruleset: Ruleset.singleWinner,
color: GameColor.red,
color: AppColor.red,
icon: 'icon',
),
Game(
name: 'Blue Game',
ruleset: Ruleset.singleWinner,
color: GameColor.blue,
color: AppColor.blue,
icon: 'icon',
),
Game(
name: 'Green Game',
ruleset: Ruleset.singleWinner,
color: GameColor.green,
color: AppColor.green,
icon: 'icon',
),
];
@@ -481,19 +481,19 @@ void main() {
Game(
name: 'Highest Score Game',
ruleset: Ruleset.highestScore,
color: GameColor.blue,
color: AppColor.blue,
icon: 'icon',
),
Game(
name: 'Lowest Score Game',
ruleset: Ruleset.lowestScore,
color: GameColor.blue,
color: AppColor.blue,
icon: 'icon',
),
Game(
name: 'Single Winner',
ruleset: Ruleset.singleWinner,
color: GameColor.blue,
color: AppColor.blue,
icon: 'icon',
),
];