refactor: changed assets and refactored multiball

pull/235/head
RuiAlonso 3 years ago
parent a4ef0ee184
commit 3d5ff5e0e2

@ -101,14 +101,14 @@ extension PinballGameAssetsX on PinballGame {
images.load(components.Assets.images.googleWord.letter5.keyName),
images.load(components.Assets.images.googleWord.letter6.keyName),
images.load(components.Assets.images.backboard.display.keyName),
images.load(components.Assets.images.multiball.a.active.keyName),
images.load(components.Assets.images.multiball.a.inactive.keyName),
images.load(components.Assets.images.multiball.b.active.keyName),
images.load(components.Assets.images.multiball.b.inactive.keyName),
images.load(components.Assets.images.multiball.c.active.keyName),
images.load(components.Assets.images.multiball.c.inactive.keyName),
images.load(components.Assets.images.multiball.d.active.keyName),
images.load(components.Assets.images.multiball.d.inactive.keyName),
images.load(components.Assets.images.multiball.a.lit.keyName),
images.load(components.Assets.images.multiball.a.dimmed.keyName),
images.load(components.Assets.images.multiball.b.lit.keyName),
images.load(components.Assets.images.multiball.b.dimmed.keyName),
images.load(components.Assets.images.multiball.c.lit.keyName),
images.load(components.Assets.images.multiball.c.dimmed.keyName),
images.load(components.Assets.images.multiball.d.lit.keyName),
images.load(components.Assets.images.multiball.d.dimmed.keyName),
images.load(dashTheme.leaderboardIcon.keyName),
images.load(sparkyTheme.leaderboardIcon.keyName),
images.load(androidTheme.leaderboardIcon.keyName),

@ -317,49 +317,49 @@ class $AssetsImagesDashBumperGen {
class $AssetsImagesMultiballAGen {
const $AssetsImagesMultiballAGen();
/// File path: assets/images/multiball/a/active.png
AssetGenImage get active =>
const AssetGenImage('assets/images/multiball/a/active.png');
/// File path: assets/images/multiball/a/dimmed.png
AssetGenImage get dimmed =>
const AssetGenImage('assets/images/multiball/a/dimmed.png');
/// File path: assets/images/multiball/a/inactive.png
AssetGenImage get inactive =>
const AssetGenImage('assets/images/multiball/a/inactive.png');
/// File path: assets/images/multiball/a/lit.png
AssetGenImage get lit =>
const AssetGenImage('assets/images/multiball/a/lit.png');
}
class $AssetsImagesMultiballBGen {
const $AssetsImagesMultiballBGen();
/// File path: assets/images/multiball/b/active.png
AssetGenImage get active =>
const AssetGenImage('assets/images/multiball/b/active.png');
/// File path: assets/images/multiball/b/dimmed.png
AssetGenImage get dimmed =>
const AssetGenImage('assets/images/multiball/b/dimmed.png');
/// File path: assets/images/multiball/b/inactive.png
AssetGenImage get inactive =>
const AssetGenImage('assets/images/multiball/b/inactive.png');
/// File path: assets/images/multiball/b/lit.png
AssetGenImage get lit =>
const AssetGenImage('assets/images/multiball/b/lit.png');
}
class $AssetsImagesMultiballCGen {
const $AssetsImagesMultiballCGen();
/// File path: assets/images/multiball/c/active.png
AssetGenImage get active =>
const AssetGenImage('assets/images/multiball/c/active.png');
/// File path: assets/images/multiball/c/dimmed.png
AssetGenImage get dimmed =>
const AssetGenImage('assets/images/multiball/c/dimmed.png');
/// File path: assets/images/multiball/c/inactive.png
AssetGenImage get inactive =>
const AssetGenImage('assets/images/multiball/c/inactive.png');
/// File path: assets/images/multiball/c/lit.png
AssetGenImage get lit =>
const AssetGenImage('assets/images/multiball/c/lit.png');
}
class $AssetsImagesMultiballDGen {
const $AssetsImagesMultiballDGen();
/// File path: assets/images/multiball/d/active.png
AssetGenImage get active =>
const AssetGenImage('assets/images/multiball/d/active.png');
/// File path: assets/images/multiball/d/dimmed.png
AssetGenImage get dimmed =>
const AssetGenImage('assets/images/multiball/d/dimmed.png');
/// File path: assets/images/multiball/d/inactive.png
AssetGenImage get inactive =>
const AssetGenImage('assets/images/multiball/d/inactive.png');
/// File path: assets/images/multiball/d/lit.png
AssetGenImage get lit =>
const AssetGenImage('assets/images/multiball/d/lit.png');
}
class $AssetsImagesSpaceshipRailGen {

@ -1,123 +0,0 @@
import 'dart:math' as math;
import 'package:flame/components.dart';
import 'package:flutter/material.dart';
import 'package:pinball_components/gen/assets.gen.dart';
/// {@template multiball}
/// A [Component] for the multiball over the board.
/// {@endtemplate}
class Multiball extends Component {
/// {@macro multiball}
Multiball._({
required Vector2 position,
required String onAssetPath,
required String offAssetPath,
double rotation = 0,
}) : super(
children: [
MultiballSpriteGroupComponent(
position: position,
onAssetPath: onAssetPath,
offAssetPath: offAssetPath,
rotation: rotation,
),
],
);
/// {@macro multiball}
Multiball.a()
: this._(
position: Vector2(-23, 7.5),
onAssetPath: Assets.images.multiball.a.active.keyName,
offAssetPath: Assets.images.multiball.a.inactive.keyName,
rotation: -24 * math.pi / 180,
);
/// {@macro multiball}
Multiball.b()
: this._(
position: Vector2(-7, -6.5),
onAssetPath: Assets.images.multiball.b.active.keyName,
offAssetPath: Assets.images.multiball.b.inactive.keyName,
rotation: -5 * math.pi / 180,
);
/// {@macro multiball}
Multiball.c()
: this._(
position: Vector2(-0.5, -9.5),
onAssetPath: Assets.images.multiball.c.active.keyName,
offAssetPath: Assets.images.multiball.c.inactive.keyName,
rotation: 3 * math.pi / 180,
);
/// {@macro multiball}
Multiball.d()
: this._(
position: Vector2(15, 7),
onAssetPath: Assets.images.multiball.d.active.keyName,
offAssetPath: Assets.images.multiball.d.inactive.keyName,
rotation: 24 * math.pi / 180,
);
/// Animates the [Multiball].
Future<void> animate() async {
final spriteGroupComponent = firstChild<MultiballSpriteGroupComponent>();
for (var i = 0; i < 5; i++) {
spriteGroupComponent?.current = MultiballSpriteState.active;
await Future<void>.delayed(const Duration(milliseconds: 100));
spriteGroupComponent?.current = MultiballSpriteState.inactive;
await Future<void>.delayed(const Duration(milliseconds: 100));
}
}
}
/// Indicates the current sprite state of the multiball.
enum MultiballSpriteState {
/// A lit up multiball.
active,
/// A dimmed multiball.
inactive,
}
/// {@template multiball_sprite_group_component}
/// A [SpriteGroupComponent] for the multiball over the board.
/// {@endtemplate}
@visibleForTesting
class MultiballSpriteGroupComponent
extends SpriteGroupComponent<MultiballSpriteState> with HasGameRef {
/// {@macro multiball_sprite_group_component}
MultiballSpriteGroupComponent({
required Vector2 position,
required String onAssetPath,
required String offAssetPath,
required double rotation,
}) : _onAssetPath = onAssetPath,
_offAssetPath = offAssetPath,
super(
anchor: Anchor.center,
position: position,
angle: rotation,
);
final String _onAssetPath;
final String _offAssetPath;
@override
Future<void> onLoad() async {
await super.onLoad();
final sprites = {
MultiballSpriteState.active:
Sprite(gameRef.images.fromCache(_onAssetPath)),
MultiballSpriteState.inactive:
Sprite(gameRef.images.fromCache(_offAssetPath)),
};
this.sprites = sprites;
current = MultiballSpriteState.inactive;
size = sprites[current]!.originalSize / 10;
}
}
Loading…
Cancel
Save