diff --git a/lib/leaderboard/models/leader_board_entry.dart b/lib/leaderboard/models/leader_board_entry.dart index 194f7cb6..cfd5ffd4 100644 --- a/lib/leaderboard/models/leader_board_entry.dart +++ b/lib/leaderboard/models/leader_board_entry.dart @@ -36,7 +36,7 @@ extension LeaderboardEntryDataX on LeaderboardEntryData { rank: position.toString(), playerInitials: playerInitials, score: score, - character: character.toTheme.characterAsset, + character: character.toTheme.character, ); } } diff --git a/lib/theme/view/character_selection_page.dart b/lib/theme/view/character_selection_page.dart index 9569760a..119a897e 100644 --- a/lib/theme/view/character_selection_page.dart +++ b/lib/theme/view/character_selection_page.dart @@ -122,7 +122,7 @@ class CharacterImageButton extends StatelessWidget { ), child: Padding( padding: const EdgeInsets.all(8), - child: characterTheme.characterAsset.image(), + child: characterTheme.character.image(), ), ), ); diff --git a/packages/pinball_theme/lib/src/themes/android_theme.dart b/packages/pinball_theme/lib/src/themes/android_theme.dart index 5213df9b..2a59cb61 100644 --- a/packages/pinball_theme/lib/src/themes/android_theme.dart +++ b/packages/pinball_theme/lib/src/themes/android_theme.dart @@ -8,9 +8,18 @@ class AndroidTheme extends CharacterTheme { /// {@macro android_theme} const AndroidTheme(); + @override + String get name => 'Android'; + @override Color get ballColor => Colors.green; @override - AssetGenImage get characterAsset => Assets.images.android.character; + AssetGenImage get character => Assets.images.android.character; + + @override + AssetGenImage get background => Assets.images.android.background; + + @override + AssetGenImage get icon => Assets.images.android.icon; } diff --git a/packages/pinball_theme/lib/src/themes/character_theme.dart b/packages/pinball_theme/lib/src/themes/character_theme.dart index 9478f954..0a81fae8 100644 --- a/packages/pinball_theme/lib/src/themes/character_theme.dart +++ b/packages/pinball_theme/lib/src/themes/character_theme.dart @@ -12,12 +12,27 @@ abstract class CharacterTheme extends Equatable { /// {@macro character_theme} const CharacterTheme(); + /// Name of character. + String get name; + /// Ball color for this theme. Color get ballColor; /// Asset for the theme character. - AssetGenImage get characterAsset; + AssetGenImage get character; + + /// Asset for the background. + AssetGenImage get background; + + /// Icon asset. + AssetGenImage get icon; @override - List get props => [ballColor]; + List get props => [ + name, + ballColor, + character, + background, + icon, + ]; } diff --git a/packages/pinball_theme/lib/src/themes/dash_theme.dart b/packages/pinball_theme/lib/src/themes/dash_theme.dart index 543894d8..df6cf363 100644 --- a/packages/pinball_theme/lib/src/themes/dash_theme.dart +++ b/packages/pinball_theme/lib/src/themes/dash_theme.dart @@ -8,9 +8,18 @@ class DashTheme extends CharacterTheme { /// {@macro dash_theme} const DashTheme(); + @override + String get name => 'Dash'; + @override Color get ballColor => Colors.blue; @override - AssetGenImage get characterAsset => Assets.images.dash.character; + AssetGenImage get character => Assets.images.dash.character; + + @override + AssetGenImage get background => Assets.images.dash.background; + + @override + AssetGenImage get icon => Assets.images.dash.icon; } diff --git a/packages/pinball_theme/lib/src/themes/dino_theme.dart b/packages/pinball_theme/lib/src/themes/dino_theme.dart index d80af459..b1a5a32f 100644 --- a/packages/pinball_theme/lib/src/themes/dino_theme.dart +++ b/packages/pinball_theme/lib/src/themes/dino_theme.dart @@ -8,9 +8,18 @@ class DinoTheme extends CharacterTheme { /// {@macro dino_theme} const DinoTheme(); + @override + String get name => 'Dino'; + @override Color get ballColor => Colors.grey; @override - AssetGenImage get characterAsset => Assets.images.dino.character; + AssetGenImage get character => Assets.images.dino.character; + + @override + AssetGenImage get background => Assets.images.dino.background; + + @override + AssetGenImage get icon => Assets.images.dino.icon; } diff --git a/packages/pinball_theme/lib/src/themes/sparky_theme.dart b/packages/pinball_theme/lib/src/themes/sparky_theme.dart index e9f33cbd..7990e2c3 100644 --- a/packages/pinball_theme/lib/src/themes/sparky_theme.dart +++ b/packages/pinball_theme/lib/src/themes/sparky_theme.dart @@ -12,5 +12,14 @@ class SparkyTheme extends CharacterTheme { Color get ballColor => Colors.orange; @override - AssetGenImage get characterAsset => Assets.images.sparky.character; + String get name => 'Sparky'; + + @override + AssetGenImage get character => Assets.images.sparky.character; + + @override + AssetGenImage get background => Assets.images.sparky.background; + + @override + AssetGenImage get icon => Assets.images.sparky.icon; } diff --git a/packages/pinball_theme/test/src/themes/android_theme_test.dart b/packages/pinball_theme/test/src/themes/android_theme_test.dart index ba66b6f4..5dd10283 100644 --- a/packages/pinball_theme/test/src/themes/android_theme_test.dart +++ b/packages/pinball_theme/test/src/themes/android_theme_test.dart @@ -18,11 +18,22 @@ void main() { expect(AndroidTheme().ballColor, equals(Colors.green)); }); - test('characterAsset is correct', () { + test('character asset is correct', () { expect( - AndroidTheme().characterAsset, + AndroidTheme().character, equals(Assets.images.android.character), ); }); + + test('background asset is correct', () { + expect( + AndroidTheme().background, + equals(Assets.images.android.background), + ); + }); + + test('icon asset is correct', () { + expect(AndroidTheme().icon, equals(Assets.images.android.icon)); + }); }); } diff --git a/packages/pinball_theme/test/src/themes/dash_theme_test.dart b/packages/pinball_theme/test/src/themes/dash_theme_test.dart index 2a12ba09..1180eeb5 100644 --- a/packages/pinball_theme/test/src/themes/dash_theme_test.dart +++ b/packages/pinball_theme/test/src/themes/dash_theme_test.dart @@ -18,11 +18,22 @@ void main() { expect(DashTheme().ballColor, equals(Colors.blue)); }); - test('characterAsset is correct', () { + test('character asset is correct', () { expect( - DashTheme().characterAsset, + DashTheme().character, equals(Assets.images.dash.character), ); }); + + test('background asset is correct', () { + expect( + DashTheme().background, + equals(Assets.images.dash.background), + ); + }); + + test('icon asset is correct', () { + expect(DashTheme().icon, equals(Assets.images.dash.icon)); + }); }); } diff --git a/packages/pinball_theme/test/src/themes/dino_theme_test.dart b/packages/pinball_theme/test/src/themes/dino_theme_test.dart index 18cafbbe..061ebf8d 100644 --- a/packages/pinball_theme/test/src/themes/dino_theme_test.dart +++ b/packages/pinball_theme/test/src/themes/dino_theme_test.dart @@ -18,11 +18,22 @@ void main() { expect(DinoTheme().ballColor, equals(Colors.grey)); }); - test('characterAsset is correct', () { + test('character asset is correct', () { expect( - DinoTheme().characterAsset, + DinoTheme().character, equals(Assets.images.dino.character), ); }); + + test('background asset is correct', () { + expect( + DinoTheme().background, + equals(Assets.images.dino.background), + ); + }); + + test('icon asset is correct', () { + expect(DinoTheme().icon, equals(Assets.images.dino.icon)); + }); }); } diff --git a/packages/pinball_theme/test/src/themes/sparky_theme_test.dart b/packages/pinball_theme/test/src/themes/sparky_theme_test.dart index 145ad4e0..bf18211d 100644 --- a/packages/pinball_theme/test/src/themes/sparky_theme_test.dart +++ b/packages/pinball_theme/test/src/themes/sparky_theme_test.dart @@ -18,11 +18,22 @@ void main() { expect(SparkyTheme().ballColor, equals(Colors.orange)); }); - test('characterAsset is correct', () { + test('character asset is correct', () { expect( - SparkyTheme().characterAsset, + SparkyTheme().character, equals(Assets.images.sparky.character), ); }); + + test('background asset is correct', () { + expect( + SparkyTheme().background, + equals(Assets.images.sparky.background), + ); + }); + + test('icon asset is correct', () { + expect(SparkyTheme().icon, equals(Assets.images.sparky.icon)); + }); }); } diff --git a/test/leaderboard/bloc/leaderboard_state_test.dart b/test/leaderboard/bloc/leaderboard_state_test.dart index a40a1cdb..ec455f1f 100644 --- a/test/leaderboard/bloc/leaderboard_state_test.dart +++ b/test/leaderboard/bloc/leaderboard_state_test.dart @@ -30,7 +30,7 @@ void main() { rank: '1', playerInitials: 'ABC', score: 1500, - character: DashTheme().characterAsset, + character: DashTheme().character, ); test( diff --git a/test/leaderboard/view/leaderboard_page_test.dart b/test/leaderboard/view/leaderboard_page_test.dart index 4221d727..b17c27b8 100644 --- a/test/leaderboard/view/leaderboard_page_test.dart +++ b/test/leaderboard/view/leaderboard_page_test.dart @@ -121,7 +121,7 @@ void main() { rank: '1', playerInitials: 'ABC', score: 10000, - character: DashTheme().characterAsset, + character: DashTheme().character, ), ], ),