diff --git a/lib/character_themes/android_theme.dart b/lib/character_themes/android_theme.dart deleted file mode 100644 index 8c91d9e1..00000000 --- a/lib/character_themes/android_theme.dart +++ /dev/null @@ -1,9 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:pinball/character_themes/character_themes.dart'; - -class AndroidTheme extends CharacterTheme { - const AndroidTheme(); - - @override - Color get ballColor => Colors.green; -} diff --git a/lib/character_themes/character_theme.dart b/lib/character_themes/character_theme.dart deleted file mode 100644 index 459ab69a..00000000 --- a/lib/character_themes/character_theme.dart +++ /dev/null @@ -1,18 +0,0 @@ -import 'package:equatable/equatable.dart'; -import 'package:flame/palette.dart'; - -/// {@template character_theme} -/// Template for creating character themes. -/// -/// Any character specific game pieces should have a getter specified here so -/// their corresponding assets can be retrieved for the game. -/// {@endtemplate} -abstract class CharacterTheme extends Equatable { - /// {@macro character_theme} - const CharacterTheme(); - - Color get ballColor; - - @override - List get props => []; -} diff --git a/lib/character_themes/dash_theme.dart b/lib/character_themes/dash_theme.dart deleted file mode 100644 index caaf2bdf..00000000 --- a/lib/character_themes/dash_theme.dart +++ /dev/null @@ -1,9 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:pinball/character_themes/character_themes.dart'; - -class DashTheme extends CharacterTheme { - const DashTheme(); - - @override - Color get ballColor => Colors.blue; -} diff --git a/lib/character_themes/dino_theme.dart b/lib/character_themes/dino_theme.dart deleted file mode 100644 index 27f76199..00000000 --- a/lib/character_themes/dino_theme.dart +++ /dev/null @@ -1,9 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:pinball/character_themes/character_themes.dart'; - -class DinoTheme extends CharacterTheme { - const DinoTheme(); - - @override - Color get ballColor => Colors.grey; -} diff --git a/lib/character_themes/sparky_theme.dart b/lib/character_themes/sparky_theme.dart deleted file mode 100644 index 63d8d241..00000000 --- a/lib/character_themes/sparky_theme.dart +++ /dev/null @@ -1,9 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:pinball/character_themes/character_themes.dart'; - -class SparkyTheme extends CharacterTheme { - const SparkyTheme(); - - @override - Color get ballColor => Colors.orange; -} diff --git a/lib/character_themes/cubit/theme_cubit.dart b/lib/theme/cubit/theme_cubit.dart similarity index 68% rename from lib/character_themes/cubit/theme_cubit.dart rename to lib/theme/cubit/theme_cubit.dart index ae60877e..080d5f5e 100644 --- a/lib/character_themes/cubit/theme_cubit.dart +++ b/lib/theme/cubit/theme_cubit.dart @@ -1,13 +1,13 @@ import 'package:bloc/bloc.dart'; import 'package:equatable/equatable.dart'; -import 'package:pinball/character_themes/character_themes.dart'; +import 'package:pinball_theme/pinball_theme.dart'; part 'theme_state.dart'; class ThemeCubit extends Cubit { ThemeCubit() : super(const ThemeState(DashTheme())); - void themeSelected(CharacterTheme theme) { + void themeSelected(PinballTheme theme) { emit(ThemeState(theme)); } } diff --git a/lib/character_themes/cubit/theme_state.dart b/lib/theme/cubit/theme_state.dart similarity index 83% rename from lib/character_themes/cubit/theme_state.dart rename to lib/theme/cubit/theme_state.dart index de15b437..71491960 100644 --- a/lib/character_themes/cubit/theme_state.dart +++ b/lib/theme/cubit/theme_state.dart @@ -3,7 +3,7 @@ part of 'theme_cubit.dart'; class ThemeState extends Equatable { const ThemeState(this.theme); - final CharacterTheme theme; + final PinballTheme theme; @override List get props => [theme]; diff --git a/lib/theme/theme.dart b/lib/theme/theme.dart new file mode 100644 index 00000000..fcf5d9ee --- /dev/null +++ b/lib/theme/theme.dart @@ -0,0 +1 @@ +export 'cubit/theme_cubit.dart'; diff --git a/packages/pinball_theme/.gitignore b/packages/pinball_theme/.gitignore new file mode 100644 index 00000000..d6130351 --- /dev/null +++ b/packages/pinball_theme/.gitignore @@ -0,0 +1,39 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# VSCode related +.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Web related +lib/generated_plugin_registrant.dart + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json diff --git a/packages/pinball_theme/README.md b/packages/pinball_theme/README.md new file mode 100644 index 00000000..e9730e1b --- /dev/null +++ b/packages/pinball_theme/README.md @@ -0,0 +1,11 @@ +# pinball_theme + +[![style: very good analysis][very_good_analysis_badge]][very_good_analysis_link] +[![License: MIT][license_badge]][license_link] + +Package containing themes for pinball game. + +[license_badge]: https://img.shields.io/badge/license-MIT-blue.svg +[license_link]: https://opensource.org/licenses/MIT +[very_good_analysis_badge]: https://img.shields.io/badge/style-very_good_analysis-B22C89.svg +[very_good_analysis_link]: https://pub.dev/packages/very_good_analysis \ No newline at end of file diff --git a/packages/pinball_theme/analysis_options.yaml b/packages/pinball_theme/analysis_options.yaml new file mode 100644 index 00000000..3742fc3d --- /dev/null +++ b/packages/pinball_theme/analysis_options.yaml @@ -0,0 +1 @@ +include: package:very_good_analysis/analysis_options.2.4.0.yaml \ No newline at end of file diff --git a/packages/pinball_theme/lib/pinball_theme.dart b/packages/pinball_theme/lib/pinball_theme.dart new file mode 100644 index 00000000..0206fa7b --- /dev/null +++ b/packages/pinball_theme/lib/pinball_theme.dart @@ -0,0 +1,4 @@ +library pinball_theme; + +export 'src/pinball_theme.dart'; +export 'src/themes/themes.dart'; diff --git a/packages/pinball_theme/lib/src/pinball_theme.dart b/packages/pinball_theme/lib/src/pinball_theme.dart new file mode 100644 index 00000000..f8605708 --- /dev/null +++ b/packages/pinball_theme/lib/src/pinball_theme.dart @@ -0,0 +1,19 @@ +import 'package:equatable/equatable.dart'; +import 'package:flutter/material.dart'; + +/// {@template pinball_theme} +/// Base class for creating pinball themes. +/// +/// Character specific game components should have a getter specified here to +/// load their corresponding assets for the game. +/// {@endtemplate} +abstract class PinballTheme extends Equatable { + /// {@macro pinball_theme} + const PinballTheme(); + + /// Ball color for this theme. + Color get ballColor; + + @override + List get props => []; +} diff --git a/packages/pinball_theme/lib/src/themes/android_theme.dart b/packages/pinball_theme/lib/src/themes/android_theme.dart new file mode 100644 index 00000000..bf29da27 --- /dev/null +++ b/packages/pinball_theme/lib/src/themes/android_theme.dart @@ -0,0 +1,13 @@ +import 'package:flutter/material.dart'; +import 'package:pinball_theme/pinball_theme.dart'; + +/// {@template android_theme} +/// Class defining Android theme assets and attributes. +/// {@endtemplate} +class AndroidTheme extends PinballTheme { + /// {@macro android_theme} + const AndroidTheme(); + + @override + Color get ballColor => Colors.green; +} diff --git a/packages/pinball_theme/lib/src/themes/dash_theme.dart b/packages/pinball_theme/lib/src/themes/dash_theme.dart new file mode 100644 index 00000000..34faac9c --- /dev/null +++ b/packages/pinball_theme/lib/src/themes/dash_theme.dart @@ -0,0 +1,13 @@ +import 'package:flutter/material.dart'; +import 'package:pinball_theme/pinball_theme.dart'; + +/// {@template dash_theme} +/// Class defining Dash theme assets and attributes. +/// {@endtemplate} +class DashTheme extends PinballTheme { + /// {@macro dash_theme} + const DashTheme(); + + @override + Color get ballColor => Colors.blue; +} diff --git a/packages/pinball_theme/lib/src/themes/dino_theme.dart b/packages/pinball_theme/lib/src/themes/dino_theme.dart new file mode 100644 index 00000000..1af5b5c8 --- /dev/null +++ b/packages/pinball_theme/lib/src/themes/dino_theme.dart @@ -0,0 +1,13 @@ +import 'package:flutter/material.dart'; +import 'package:pinball_theme/pinball_theme.dart'; + +/// {@template dino_theme} +/// Class defining Dino theme assets and attributes. +/// {@endtemplate} +class DinoTheme extends PinballTheme { + /// {@macro dino_theme} + const DinoTheme(); + + @override + Color get ballColor => Colors.grey; +} diff --git a/packages/pinball_theme/lib/src/themes/sparky_theme.dart b/packages/pinball_theme/lib/src/themes/sparky_theme.dart new file mode 100644 index 00000000..75ddd3b7 --- /dev/null +++ b/packages/pinball_theme/lib/src/themes/sparky_theme.dart @@ -0,0 +1,13 @@ +import 'package:flutter/material.dart'; +import 'package:pinball_theme/pinball_theme.dart'; + +/// {@template sparky_theme} +/// Class defining Sparky theme assets and attributes. +/// {@endtemplate} +class SparkyTheme extends PinballTheme { + /// {@macro sparky_theme} + const SparkyTheme(); + + @override + Color get ballColor => Colors.orange; +} diff --git a/lib/character_themes/character_themes.dart b/packages/pinball_theme/lib/src/themes/themes.dart similarity index 63% rename from lib/character_themes/character_themes.dart rename to packages/pinball_theme/lib/src/themes/themes.dart index 21f1efd5..895e7c8d 100644 --- a/lib/character_themes/character_themes.dart +++ b/packages/pinball_theme/lib/src/themes/themes.dart @@ -1,6 +1,4 @@ export 'android_theme.dart'; -export 'character_theme.dart'; -export 'cubit/theme_cubit.dart'; export 'dash_theme.dart'; export 'dino_theme.dart'; export 'sparky_theme.dart'; diff --git a/packages/pinball_theme/pubspec.yaml b/packages/pinball_theme/pubspec.yaml new file mode 100644 index 00000000..e9b3f215 --- /dev/null +++ b/packages/pinball_theme/pubspec.yaml @@ -0,0 +1,17 @@ +name: pinball_theme +description: Package containing themes for pinball game. +version: 1.0.0+1 +publish_to: none + +environment: + sdk: ">=2.16.0 <3.0.0" + +dependencies: + equatable: ^2.0.3 + flutter: + sdk: flutter + +dev_dependencies: + flutter_test: + sdk: flutter + very_good_analysis: ^2.4.0 \ No newline at end of file diff --git a/test/character_themes/android_theme_test.dart b/packages/pinball_theme/test/src/themes/android_theme_test.dart similarity index 88% rename from test/character_themes/android_theme_test.dart rename to packages/pinball_theme/test/src/themes/android_theme_test.dart index 7a5bf565..a6148042 100644 --- a/test/character_themes/android_theme_test.dart +++ b/packages/pinball_theme/test/src/themes/android_theme_test.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:pinball/character_themes/character_themes.dart'; +import 'package:pinball_theme/pinball_theme.dart'; void main() { group('AndroidTheme', () { diff --git a/test/character_themes/dash_theme_test.dart b/packages/pinball_theme/test/src/themes/dash_theme_test.dart similarity index 87% rename from test/character_themes/dash_theme_test.dart rename to packages/pinball_theme/test/src/themes/dash_theme_test.dart index 6d06a70a..0d5c8293 100644 --- a/test/character_themes/dash_theme_test.dart +++ b/packages/pinball_theme/test/src/themes/dash_theme_test.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:pinball/character_themes/character_themes.dart'; +import 'package:pinball_theme/pinball_theme.dart'; void main() { group('DashTheme', () { diff --git a/test/character_themes/dino_theme_test.dart b/packages/pinball_theme/test/src/themes/dino_theme_test.dart similarity index 87% rename from test/character_themes/dino_theme_test.dart rename to packages/pinball_theme/test/src/themes/dino_theme_test.dart index 0c0f83e8..6efd8cbd 100644 --- a/test/character_themes/dino_theme_test.dart +++ b/packages/pinball_theme/test/src/themes/dino_theme_test.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:pinball/character_themes/character_themes.dart'; +import 'package:pinball_theme/pinball_theme.dart'; void main() { group('DinoTheme', () { diff --git a/test/character_themes/sparky_theme_test.dart b/packages/pinball_theme/test/src/themes/sparky_theme_test.dart similarity index 88% rename from test/character_themes/sparky_theme_test.dart rename to packages/pinball_theme/test/src/themes/sparky_theme_test.dart index a57c8969..513ca219 100644 --- a/test/character_themes/sparky_theme_test.dart +++ b/packages/pinball_theme/test/src/themes/sparky_theme_test.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:pinball/character_themes/character_themes.dart'; +import 'package:pinball_theme/pinball_theme.dart'; void main() { group('SparkyTheme', () { diff --git a/pubspec.lock b/pubspec.lock index e218776d..7bf08da4 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -324,6 +324,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.8.0" + pinball_theme: + dependency: "direct main" + description: + path: "packages/pinball_theme" + relative: true + source: path + version: "1.0.0+1" pool: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 5d708073..6c3bd98e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -18,6 +18,8 @@ dependencies: flutter_localizations: sdk: flutter intl: ^0.17.0 + pinball_theme: + path: packages/pinball_theme dev_dependencies: bloc_test: ^9.0.2 diff --git a/test/character_themes/cubit/theme_cubit_test.dart b/test/theme/cubit/theme_cubit_test.dart similarity index 85% rename from test/character_themes/cubit/theme_cubit_test.dart rename to test/theme/cubit/theme_cubit_test.dart index 5dacba87..59aecd37 100644 --- a/test/character_themes/cubit/theme_cubit_test.dart +++ b/test/theme/cubit/theme_cubit_test.dart @@ -1,6 +1,7 @@ import 'package:bloc_test/bloc_test.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:pinball/character_themes/character_themes.dart'; +import 'package:pinball/theme/theme.dart'; +import 'package:pinball_theme/pinball_theme.dart'; void main() { group('ThemeCubit', () { diff --git a/test/character_themes/cubit/theme_state_test.dart b/test/theme/cubit/theme_state_test.dart similarity index 80% rename from test/character_themes/cubit/theme_state_test.dart rename to test/theme/cubit/theme_state_test.dart index 0161dc10..e89abe01 100644 --- a/test/character_themes/cubit/theme_state_test.dart +++ b/test/theme/cubit/theme_state_test.dart @@ -1,7 +1,8 @@ // ignore_for_file: prefer_const_constructors import 'package:flutter_test/flutter_test.dart'; -import 'package:pinball/character_themes/character_themes.dart'; +import 'package:pinball/theme/theme.dart'; +import 'package:pinball_theme/pinball_theme.dart'; void main() { group('ThemeState', () {