refactor: rename SignPost to Signpost

pull/205/head
alestiago 3 years ago
parent 6e5d1f1d1b
commit 5d411fab41

@ -25,7 +25,7 @@ class FlutterForest extends Component
await super.onLoad(); await super.onLoad();
gameRef.addContactCallback(_DashNestBumperBallContactCallback()); gameRef.addContactCallback(_DashNestBumperBallContactCallback());
final signPost = SignPost()..initialPosition = Vector2(8.35, -58.3); final signpost = Signpost()..initialPosition = Vector2(8.35, -58.3);
final bigNest = _BigDashNestBumper() final bigNest = _BigDashNestBumper()
..initialPosition = Vector2(18.55, -59.35); ..initialPosition = Vector2(18.55, -59.35);
@ -36,7 +36,7 @@ class FlutterForest extends Component
final dashAnimatronic = DashAnimatronic()..position = Vector2(20, -66); final dashAnimatronic = DashAnimatronic()..position = Vector2(20, -66);
await addAll([ await addAll([
signPost, signpost,
smallLeftNest, smallLeftNest,
smallRightNest, smallRightNest,
bigNest, bigNest,

@ -9,10 +9,10 @@ extension PinballGameAssetsX on PinballGame {
return [ return [
images.load(components.Assets.images.ball.ball.keyName), images.load(components.Assets.images.ball.ball.keyName),
images.load(components.Assets.images.ball.flameEffect.keyName), images.load(components.Assets.images.ball.flameEffect.keyName),
images.load(components.Assets.images.signPost.inactive.keyName), images.load(components.Assets.images.signpost.inactive.keyName),
images.load(components.Assets.images.signPost.active1.keyName), images.load(components.Assets.images.signpost.active1.keyName),
images.load(components.Assets.images.signPost.active2.keyName), images.load(components.Assets.images.signpost.active2.keyName),
images.load(components.Assets.images.signPost.active3.keyName), images.load(components.Assets.images.signpost.active3.keyName),
images.load(components.Assets.images.flipper.left.keyName), images.load(components.Assets.images.flipper.left.keyName),
images.load(components.Assets.images.flipper.right.keyName), images.load(components.Assets.images.flipper.right.keyName),
images.load(components.Assets.images.baseboard.left.keyName), images.load(components.Assets.images.baseboard.left.keyName),

@ -27,7 +27,7 @@ class $AssetsImagesGen {
$AssetsImagesLaunchRampGen get launchRamp => $AssetsImagesLaunchRampGen get launchRamp =>
const $AssetsImagesLaunchRampGen(); const $AssetsImagesLaunchRampGen();
$AssetsImagesPlungerGen get plunger => const $AssetsImagesPlungerGen(); $AssetsImagesPlungerGen get plunger => const $AssetsImagesPlungerGen();
$AssetsImagesSignPostGen get signPost => const $AssetsImagesSignPostGen(); $AssetsImagesSignpostGen get signpost => const $AssetsImagesSignpostGen();
$AssetsImagesSlingshotGen get slingshot => const $AssetsImagesSlingshotGen(); $AssetsImagesSlingshotGen get slingshot => const $AssetsImagesSlingshotGen();
$AssetsImagesSpaceshipGen get spaceship => const $AssetsImagesSpaceshipGen(); $AssetsImagesSpaceshipGen get spaceship => const $AssetsImagesSpaceshipGen();
$AssetsImagesSparkyGen get sparky => const $AssetsImagesSparkyGen(); $AssetsImagesSparkyGen get sparky => const $AssetsImagesSparkyGen();
@ -205,24 +205,24 @@ class $AssetsImagesPlungerGen {
const AssetGenImage('assets/images/plunger/rocket.png'); const AssetGenImage('assets/images/plunger/rocket.png');
} }
class $AssetsImagesSignPostGen { class $AssetsImagesSignpostGen {
const $AssetsImagesSignPostGen(); const $AssetsImagesSignpostGen();
/// File path: assets/images/sign_post/active1.png /// File path: assets/images/signpost/active1.png
AssetGenImage get active1 => AssetGenImage get active1 =>
const AssetGenImage('assets/images/sign_post/active1.png'); const AssetGenImage('assets/images/signpost/active1.png');
/// File path: assets/images/sign_post/active2.png /// File path: assets/images/signpost/active2.png
AssetGenImage get active2 => AssetGenImage get active2 =>
const AssetGenImage('assets/images/sign_post/active2.png'); const AssetGenImage('assets/images/signpost/active2.png');
/// File path: assets/images/sign_post/active3.png /// File path: assets/images/signpost/active3.png
AssetGenImage get active3 => AssetGenImage get active3 =>
const AssetGenImage('assets/images/sign_post/active3.png'); const AssetGenImage('assets/images/signpost/active3.png');
/// File path: assets/images/sign_post/inactive.png /// File path: assets/images/signpost/inactive.png
AssetGenImage get inactive => AssetGenImage get inactive =>
const AssetGenImage('assets/images/sign_post/inactive.png'); const AssetGenImage('assets/images/signpost/inactive.png');
} }
class $AssetsImagesSlingshotGen { class $AssetsImagesSlingshotGen {

@ -24,7 +24,7 @@ export 'render_priority.dart';
export 'rocket.dart'; export 'rocket.dart';
export 'score_text.dart'; export 'score_text.dart';
export 'shapes/shapes.dart'; export 'shapes/shapes.dart';
export 'sign_post.dart'; export 'signpost.dart';
export 'slingshot.dart'; export 'slingshot.dart';
export 'spaceship.dart'; export 'spaceship.dart';
export 'spaceship_rail.dart'; export 'spaceship_rail.dart';

@ -67,7 +67,7 @@ abstract class RenderPriority {
// Flutter Forest // Flutter Forest
static const int signPost = _above + launchRampForegroundRailing; static const int signpost = _above + launchRampForegroundRailing;
static const int dashBumper = _above + ballOnBoard; static const int dashBumper = _above + ballOnBoard;

@ -3,9 +3,9 @@ import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:pinball_components/pinball_components.dart'; import 'package:pinball_components/pinball_components.dart';
/// Represents the [SignPost]'s current [Sprite] state. /// Represents the [Signpost]'s current [Sprite] state.
@visibleForTesting @visibleForTesting
enum SignPostSpriteState { enum SignpostSpriteState {
/// Signpost with no active dashes. /// Signpost with no active dashes.
inactive, inactive,
@ -19,43 +19,43 @@ enum SignPostSpriteState {
active3, active3,
} }
extension on SignPostSpriteState { extension on SignpostSpriteState {
String get path { String get path {
switch (this) { switch (this) {
case SignPostSpriteState.inactive: case SignpostSpriteState.inactive:
return Assets.images.signPost.inactive.keyName; return Assets.images.signpost.inactive.keyName;
case SignPostSpriteState.active1: case SignpostSpriteState.active1:
return Assets.images.signPost.active1.keyName; return Assets.images.signpost.active1.keyName;
case SignPostSpriteState.active2: case SignpostSpriteState.active2:
return Assets.images.signPost.active2.keyName; return Assets.images.signpost.active2.keyName;
case SignPostSpriteState.active3: case SignpostSpriteState.active3:
return Assets.images.signPost.active3.keyName; return Assets.images.signpost.active3.keyName;
} }
} }
SignPostSpriteState get next { SignpostSpriteState get next {
return SignPostSpriteState return SignpostSpriteState
.values[(index + 1) % SignPostSpriteState.values.length]; .values[(index + 1) % SignpostSpriteState.values.length];
} }
} }
/// {@template sign_post} /// {@template signpost}
/// A sign, found in the Flutter Forest. /// A sign, found in the Flutter Forest.
/// {@endtemplate} /// {@endtemplate}
class SignPost extends BodyComponent with InitialPosition { class Signpost extends BodyComponent with InitialPosition {
/// {@macro sign_post} /// {@macro signpost}
SignPost() Signpost()
: super( : super(
priority: RenderPriority.signPost, priority: RenderPriority.signpost,
children: [_SignPostSpriteComponent()], children: [_SignpostSpriteComponent()],
) { ) {
renderBody = false; renderBody = false;
} }
/// Forwards the sprite to the next [SignPostSpriteState]. /// Forwards the sprite to the next [SignpostSpriteState].
/// ///
/// If the current state is the last one it goes back to the initial state. /// If the current state is the last one it goes back to the initial state.
void progress() => firstChild<_SignPostSpriteComponent>()!.progress(); void progress() => firstChild<_SignpostSpriteComponent>()!.progress();
@override @override
Body createBody() { Body createBody() {
@ -69,9 +69,9 @@ class SignPost extends BodyComponent with InitialPosition {
} }
} }
class _SignPostSpriteComponent extends SpriteGroupComponent<SignPostSpriteState> class _SignpostSpriteComponent extends SpriteGroupComponent<SignpostSpriteState>
with HasGameRef { with HasGameRef {
_SignPostSpriteComponent() _SignpostSpriteComponent()
: super( : super(
anchor: Anchor.bottomCenter, anchor: Anchor.bottomCenter,
position: Vector2(0.65, 0.45), position: Vector2(0.65, 0.45),
@ -83,9 +83,9 @@ class _SignPostSpriteComponent extends SpriteGroupComponent<SignPostSpriteState>
Future<void> onLoad() async { Future<void> onLoad() async {
await super.onLoad(); await super.onLoad();
final sprites = <SignPostSpriteState, Sprite>{}; final sprites = <SignpostSpriteState, Sprite>{};
this.sprites = sprites; this.sprites = sprites;
for (final spriteState in SignPostSpriteState.values) { for (final spriteState in SignpostSpriteState.values) {
// TODO(allisonryan0002): Support caching // TODO(allisonryan0002): Support caching
// https://github.com/VGVentures/pinball/pull/204 // https://github.com/VGVentures/pinball/pull/204
// sprites[spriteState] = Sprite( // sprites[spriteState] = Sprite(
@ -94,7 +94,7 @@ class _SignPostSpriteComponent extends SpriteGroupComponent<SignPostSpriteState>
sprites[spriteState] = await gameRef.loadSprite(spriteState.path); sprites[spriteState] = await gameRef.loadSprite(spriteState.path);
} }
current = SignPostSpriteState.inactive; current = SignpostSpriteState.inactive;
size = sprites[current]!.originalSize / 10; size = sprites[current]!.originalSize / 10;
} }
} }

@ -64,7 +64,7 @@ flutter:
- assets/images/sparky/bumper/c/ - assets/images/sparky/bumper/c/
- assets/images/backboard/ - assets/images/backboard/
- assets/images/google_word/ - assets/images/google_word/
- assets/images/sign_post/ - assets/images/signpost/
flutter_gen: flutter_gen:
line_length: 80 line_length: 80

@ -5,9 +5,9 @@ import 'package:pinball_components/pinball_components.dart';
import 'package:sandbox/common/common.dart'; import 'package:sandbox/common/common.dart';
import 'package:sandbox/stories/ball/basic_ball_game.dart'; import 'package:sandbox/stories/ball/basic_ball_game.dart';
class SignPostGame extends BasicBallGame with Traceable, TapDetector { class SignpostGame extends BasicBallGame with Traceable, TapDetector {
static const info = ''' static const info = '''
Shows how a SignPost is rendered. Shows how a Signpost is rendered.
- Activate the "trace" parameter to overlay the body. - Activate the "trace" parameter to overlay the body.
- Tap to progress the sprite. - Tap to progress the sprite.
@ -18,13 +18,13 @@ class SignPostGame extends BasicBallGame with Traceable, TapDetector {
await super.onLoad(); await super.onLoad();
camera.followVector2(Vector2.zero()); camera.followVector2(Vector2.zero());
await add(SignPost()..priority = 1); await add(Signpost()..priority = 1);
await traceAllBodies(); await traceAllBodies();
} }
@override @override
void onTap() { void onTap() {
super.onTap(); super.onTap();
firstChild<SignPost>()!.progress(); firstChild<Signpost>()!.progress();
} }
} }

@ -2,19 +2,19 @@ import 'package:dashbook/dashbook.dart';
import 'package:flame/game.dart'; import 'package:flame/game.dart';
import 'package:sandbox/common/common.dart'; import 'package:sandbox/common/common.dart';
import 'package:sandbox/stories/flutter_forest/big_dash_nest_bumper_game.dart'; import 'package:sandbox/stories/flutter_forest/big_dash_nest_bumper_game.dart';
import 'package:sandbox/stories/flutter_forest/sign_post_game.dart'; import 'package:sandbox/stories/flutter_forest/signpost_game.dart';
import 'package:sandbox/stories/flutter_forest/small_dash_nest_bumper_a_game.dart'; import 'package:sandbox/stories/flutter_forest/small_dash_nest_bumper_a_game.dart';
import 'package:sandbox/stories/flutter_forest/small_dash_nest_bumper_b_game.dart'; import 'package:sandbox/stories/flutter_forest/small_dash_nest_bumper_b_game.dart';
void addDashNestBumperStories(Dashbook dashbook) { void addDashNestBumperStories(Dashbook dashbook) {
dashbook.storiesOf('Flutter Forest') dashbook.storiesOf('Flutter Forest')
..add( ..add(
'Sign Post', 'Signpost',
(context) => GameWidget( (context) => GameWidget(
game: SignPostGame()..trace = context.boolProperty('Trace', true), game: SignpostGame()..trace = context.boolProperty('Trace', true),
), ),
codeLink: buildSourceLink('flutter_forest/sign_post.dart'), codeLink: buildSourceLink('flutter_forest/signpost.dart'),
info: SignPostGame.info, info: SignpostGame.info,
) )
..add( ..add(
'Big Dash Nest Bumper', 'Big Dash Nest Bumper',

@ -14,7 +14,7 @@ class BasicCameraZoomGame extends BasicGame with TapDetector {
@override @override
Future<void> onLoad() async { Future<void> onLoad() async {
final sprite = await loadSprite(Assets.images.signPost.inactive.keyName); final sprite = await loadSprite(Assets.images.signpost.inactive.keyName);
await add( await add(
SpriteComponent( SpriteComponent(

@ -17,7 +17,7 @@ void main() {
game.camera.followVector2(Vector2.zero()); game.camera.followVector2(Vector2.zero());
game.camera.zoom = 10; game.camera.zoom = 10;
final sprite = await game.loadSprite( final sprite = await game.loadSprite(
Assets.images.signPost.inactive.keyName, Assets.images.signpost.inactive.keyName,
); );
await game.add( await game.add(

@ -11,15 +11,15 @@ void main() {
TestWidgetsFlutterBinding.ensureInitialized(); TestWidgetsFlutterBinding.ensureInitialized();
final flameTester = FlameTester(TestGame.new); final flameTester = FlameTester(TestGame.new);
group('SignPost', () { group('Signpost', () {
flameTester.test( flameTester.test(
'loads correctly', 'loads correctly',
(game) async { (game) async {
final signPost = SignPost(); final signpost = Signpost();
await game.ready(); await game.ready();
await game.ensureAdd(signPost); await game.ensureAdd(signpost);
expect(game.contains(signPost), isTrue); expect(game.contains(signpost), isTrue);
}, },
); );
@ -27,12 +27,12 @@ void main() {
flameTester.testGameWidget( flameTester.testGameWidget(
'inactive sprite', 'inactive sprite',
setUp: (game, tester) async { setUp: (game, tester) async {
final signPost = SignPost(); final signpost = Signpost();
await game.ensureAdd(signPost); await game.ensureAdd(signpost);
expect( expect(
signPost.firstChild<SpriteGroupComponent>()!.current, signpost.firstChild<SpriteGroupComponent>()!.current,
SignPostSpriteState.inactive, SignpostSpriteState.inactive,
); );
game.camera.followVector2(Vector2.zero()); game.camera.followVector2(Vector2.zero());
@ -40,7 +40,7 @@ void main() {
verify: (game, tester) async { verify: (game, tester) async {
await expectLater( await expectLater(
find.byGame<TestGame>(), find.byGame<TestGame>(),
matchesGoldenFile('golden/sign_post/inactive.png'), matchesGoldenFile('golden/signpost/inactive.png'),
); );
}, },
); );
@ -48,13 +48,13 @@ void main() {
flameTester.testGameWidget( flameTester.testGameWidget(
'active1 sprite', 'active1 sprite',
setUp: (game, tester) async { setUp: (game, tester) async {
final signPost = SignPost(); final signpost = Signpost();
await game.ensureAdd(signPost); await game.ensureAdd(signpost);
signPost.progress(); signpost.progress();
expect( expect(
signPost.firstChild<SpriteGroupComponent>()!.current, signpost.firstChild<SpriteGroupComponent>()!.current,
SignPostSpriteState.active1, SignpostSpriteState.active1,
); );
game.camera.followVector2(Vector2.zero()); game.camera.followVector2(Vector2.zero());
@ -62,7 +62,7 @@ void main() {
verify: (game, tester) async { verify: (game, tester) async {
await expectLater( await expectLater(
find.byGame<TestGame>(), find.byGame<TestGame>(),
matchesGoldenFile('golden/sign_post/active1.png'), matchesGoldenFile('golden/signpost/active1.png'),
); );
}, },
); );
@ -70,15 +70,15 @@ void main() {
flameTester.testGameWidget( flameTester.testGameWidget(
'active2 sprite', 'active2 sprite',
setUp: (game, tester) async { setUp: (game, tester) async {
final signPost = SignPost(); final signpost = Signpost();
await game.ensureAdd(signPost); await game.ensureAdd(signpost);
signPost signpost
..progress() ..progress()
..progress(); ..progress();
expect( expect(
signPost.firstChild<SpriteGroupComponent>()!.current, signpost.firstChild<SpriteGroupComponent>()!.current,
SignPostSpriteState.active2, SignpostSpriteState.active2,
); );
game.camera.followVector2(Vector2.zero()); game.camera.followVector2(Vector2.zero());
@ -86,7 +86,7 @@ void main() {
verify: (game, tester) async { verify: (game, tester) async {
await expectLater( await expectLater(
find.byGame<TestGame>(), find.byGame<TestGame>(),
matchesGoldenFile('golden/sign_post/active2.png'), matchesGoldenFile('golden/signpost/active2.png'),
); );
}, },
); );
@ -94,16 +94,16 @@ void main() {
flameTester.testGameWidget( flameTester.testGameWidget(
'active3 sprite', 'active3 sprite',
setUp: (game, tester) async { setUp: (game, tester) async {
final signPost = SignPost(); final signpost = Signpost();
await game.ensureAdd(signPost); await game.ensureAdd(signpost);
signPost signpost
..progress() ..progress()
..progress() ..progress()
..progress(); ..progress();
expect( expect(
signPost.firstChild<SpriteGroupComponent>()!.current, signpost.firstChild<SpriteGroupComponent>()!.current,
SignPostSpriteState.active3, SignpostSpriteState.active3,
); );
game.camera.followVector2(Vector2.zero()); game.camera.followVector2(Vector2.zero());
@ -111,7 +111,7 @@ void main() {
verify: (game, tester) async { verify: (game, tester) async {
await expectLater( await expectLater(
find.byGame<TestGame>(), find.byGame<TestGame>(),
matchesGoldenFile('golden/sign_post/active3.png'), matchesGoldenFile('golden/signpost/active3.png'),
); );
}, },
); );
@ -120,21 +120,21 @@ void main() {
flameTester.test( flameTester.test(
'progress changes correctly between four sprites', 'progress changes correctly between four sprites',
(game) async { (game) async {
final signPost = SignPost(); final signpost = Signpost();
await game.ready(); await game.ready();
await game.ensureAdd(signPost); await game.ensureAdd(signpost);
final spriteComponent = signPost.firstChild<SpriteGroupComponent>()!; final spriteComponent = signpost.firstChild<SpriteGroupComponent>()!;
for (var i = 0; i < 4; i++) { for (var i = 0; i < 4; i++) {
expect(spriteComponent.current, SignPostSpriteState.inactive); expect(spriteComponent.current, SignpostSpriteState.inactive);
signPost.progress(); signpost.progress();
expect(spriteComponent.current, SignPostSpriteState.active1); expect(spriteComponent.current, SignpostSpriteState.active1);
signPost.progress(); signpost.progress();
expect(spriteComponent.current, SignPostSpriteState.active2); expect(spriteComponent.current, SignpostSpriteState.active2);
signPost.progress(); signpost.progress();
expect(spriteComponent.current, SignPostSpriteState.active3); expect(spriteComponent.current, SignpostSpriteState.active3);
signPost.progress(); signpost.progress();
} }
}, },
); );

@ -27,13 +27,13 @@ void main() {
group('loads', () { group('loads', () {
flameTester.test( flameTester.test(
'a SignPost', 'a Signpost',
(game) async { (game) async {
final flutterForest = FlutterForest(); final flutterForest = FlutterForest();
await game.ensureAdd(flutterForest); await game.ensureAdd(flutterForest);
expect( expect(
flutterForest.descendants().whereType<SignPost>().length, flutterForest.descendants().whereType<Signpost>().length,
equals(1), equals(1),
); );
}, },

Loading…
Cancel
Save