|
|
@ -7,6 +7,33 @@ import 'package:pinball_flame/pinball_flame.dart';
|
|
|
|
|
|
|
|
|
|
|
|
export 'cubit/google_letter_cubit.dart';
|
|
|
|
export 'cubit/google_letter_cubit.dart';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final _spritePaths = <Map<GoogleLetterState, String>>[
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
GoogleLetterState.lit: Assets.images.googleWord.letter1.lit.keyName,
|
|
|
|
|
|
|
|
GoogleLetterState.dimmed: Assets.images.googleWord.letter1.dimmed.keyName,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
GoogleLetterState.lit: Assets.images.googleWord.letter2.lit.keyName,
|
|
|
|
|
|
|
|
GoogleLetterState.dimmed: Assets.images.googleWord.letter2.dimmed.keyName,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
GoogleLetterState.lit: Assets.images.googleWord.letter3.lit.keyName,
|
|
|
|
|
|
|
|
GoogleLetterState.dimmed: Assets.images.googleWord.letter3.dimmed.keyName,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
GoogleLetterState.lit: Assets.images.googleWord.letter4.lit.keyName,
|
|
|
|
|
|
|
|
GoogleLetterState.dimmed: Assets.images.googleWord.letter4.dimmed.keyName,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
GoogleLetterState.lit: Assets.images.googleWord.letter5.lit.keyName,
|
|
|
|
|
|
|
|
GoogleLetterState.dimmed: Assets.images.googleWord.letter5.dimmed.keyName,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
GoogleLetterState.lit: Assets.images.googleWord.letter6.lit.keyName,
|
|
|
|
|
|
|
|
GoogleLetterState.dimmed: Assets.images.googleWord.letter6.dimmed.keyName,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
/// {@template google_letter}
|
|
|
|
/// {@template google_letter}
|
|
|
|
/// Circular sensor that represents a letter in "GOOGLE" for a given index.
|
|
|
|
/// Circular sensor that represents a letter in "GOOGLE" for a given index.
|
|
|
|
/// {@endtemplate}
|
|
|
|
/// {@endtemplate}
|
|
|
@ -15,13 +42,27 @@ class GoogleLetter extends BodyComponent with InitialPosition {
|
|
|
|
GoogleLetter(
|
|
|
|
GoogleLetter(
|
|
|
|
int index, {
|
|
|
|
int index, {
|
|
|
|
Iterable<Component>? children,
|
|
|
|
Iterable<Component>? children,
|
|
|
|
}) : bloc = GoogleLetterCubit(),
|
|
|
|
}) : this._(
|
|
|
|
super(
|
|
|
|
index,
|
|
|
|
|
|
|
|
bloc: GoogleLetterCubit(),
|
|
|
|
|
|
|
|
children: children,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GoogleLetter._(
|
|
|
|
|
|
|
|
int index, {
|
|
|
|
|
|
|
|
required this.bloc,
|
|
|
|
|
|
|
|
Iterable<Component>? children,
|
|
|
|
|
|
|
|
}) : super(
|
|
|
|
children: [
|
|
|
|
children: [
|
|
|
|
|
|
|
|
_GoogleLetterSpriteGroupComponent(
|
|
|
|
|
|
|
|
litAssetPath: _spritePaths[index][GoogleLetterState.lit]!,
|
|
|
|
|
|
|
|
dimmedAssetPath: _spritePaths[index][GoogleLetterState.dimmed]!,
|
|
|
|
|
|
|
|
current: bloc.state,
|
|
|
|
|
|
|
|
),
|
|
|
|
GoogleLetterBallContactBehavior(),
|
|
|
|
GoogleLetterBallContactBehavior(),
|
|
|
|
_GoogleLetterSprite(_GoogleLetterSprite.spritePaths[index]),
|
|
|
|
|
|
|
|
...?children,
|
|
|
|
...?children,
|
|
|
|
],
|
|
|
|
],
|
|
|
|
|
|
|
|
renderBody: false,
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
/// Creates a [GoogleLetter] without any children.
|
|
|
|
/// Creates a [GoogleLetter] without any children.
|
|
|
@ -61,33 +102,37 @@ class GoogleLetter extends BodyComponent with InitialPosition {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
class _GoogleLetterSprite extends SpriteComponent
|
|
|
|
class _GoogleLetterSpriteGroupComponent
|
|
|
|
|
|
|
|
extends SpriteGroupComponent<GoogleLetterState>
|
|
|
|
with HasGameRef, ParentIsA<GoogleLetter> {
|
|
|
|
with HasGameRef, ParentIsA<GoogleLetter> {
|
|
|
|
_GoogleLetterSprite(String path)
|
|
|
|
_GoogleLetterSpriteGroupComponent({
|
|
|
|
: _path = path,
|
|
|
|
required String litAssetPath,
|
|
|
|
super(anchor: Anchor.center);
|
|
|
|
required String dimmedAssetPath,
|
|
|
|
|
|
|
|
required GoogleLetterState current,
|
|
|
|
static final spritePaths = [
|
|
|
|
}) : _litAssetPath = litAssetPath,
|
|
|
|
Assets.images.googleWord.letter1.keyName,
|
|
|
|
_dimmedAssetPath = dimmedAssetPath,
|
|
|
|
Assets.images.googleWord.letter2.keyName,
|
|
|
|
super(
|
|
|
|
Assets.images.googleWord.letter3.keyName,
|
|
|
|
anchor: Anchor.center,
|
|
|
|
Assets.images.googleWord.letter4.keyName,
|
|
|
|
current: current,
|
|
|
|
Assets.images.googleWord.letter5.keyName,
|
|
|
|
);
|
|
|
|
Assets.images.googleWord.letter6.keyName,
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final String _path;
|
|
|
|
final String _litAssetPath;
|
|
|
|
|
|
|
|
final String _dimmedAssetPath;
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
@override
|
|
|
|
Future<void> onLoad() async {
|
|
|
|
Future<void> onLoad() async {
|
|
|
|
await super.onLoad();
|
|
|
|
await super.onLoad();
|
|
|
|
// TODO(alisonryan2002): Make SpriteGroupComponent.
|
|
|
|
parent.bloc.stream.listen((state) => current = state);
|
|
|
|
// parent.bloc.stream.listen();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO(alestiago): Used cached assets.
|
|
|
|
final sprites = {
|
|
|
|
final sprite = await gameRef.loadSprite(_path);
|
|
|
|
GoogleLetterState.lit: Sprite(
|
|
|
|
this.sprite = sprite;
|
|
|
|
gameRef.images.fromCache(_litAssetPath),
|
|
|
|
// TODO(alestiago): Size correctly once the assets are provided.
|
|
|
|
),
|
|
|
|
size = sprite.originalSize / 5;
|
|
|
|
GoogleLetterState.dimmed: Sprite(
|
|
|
|
|
|
|
|
gameRef.images.fromCache(_dimmedAssetPath),
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
this.sprites = sprites;
|
|
|
|
|
|
|
|
size = sprites[current]!.originalSize / 10;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|