From 29d3243120f89c0467982d43c13dcc9dc2a89cd6 Mon Sep 17 00:00:00 2001 From: RuiAlonso Date: Thu, 7 Apr 2022 11:34:00 +0200 Subject: [PATCH] refactor: moved sparky bumpers logic to SparkyBumperController --- lib/game/components/components.dart | 1 + lib/game/components/sparky_fire_zone.dart | 35 +++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 lib/game/components/sparky_fire_zone.dart diff --git a/lib/game/components/components.dart b/lib/game/components/components.dart index 61d0f3ca..9dd7eed4 100644 --- a/lib/game/components/components.dart +++ b/lib/game/components/components.dart @@ -5,4 +5,5 @@ export 'controlled_flipper.dart'; export 'flutter_forest.dart'; export 'plunger.dart'; export 'score_points.dart'; +export 'sparky_fire_zone.dart'; export 'wall.dart'; diff --git a/lib/game/components/sparky_fire_zone.dart b/lib/game/components/sparky_fire_zone.dart new file mode 100644 index 00000000..d49b08b1 --- /dev/null +++ b/lib/game/components/sparky_fire_zone.dart @@ -0,0 +1,35 @@ +// ignore_for_file: avoid_renaming_method_parameters + +import 'package:flame/components.dart'; +import 'package:flame_forge2d/flame_forge2d.dart'; +import 'package:flutter/material.dart'; +import 'package:pinball/flame/flame.dart'; +import 'package:pinball/game/game.dart'; +import 'package:pinball_components/pinball_components.dart'; + +// TODO(ruimiguel): create and add SparkyFireZone component here in other PR. + +/// {@template sparky_bumper_controller} +/// Controls a [SparkyBumper]. +/// {@endtemplate} +@visibleForTesting +class SparkyBumperController extends ComponentController + with HasGameRef { + /// {@macro sparky_bumper_controller} + SparkyBumperController(SparkyBumper sparkyBumper) : super(sparkyBumper); + + /// Flag for activated state of the [SparkyBumper]. + /// + /// Used to toggle [SparkyBumper]s' state between activated and deactivated. + bool _isActivated = false; + + /// Registers when a [SparkyBumper] is hit by a [Ball]. + void hit() { + if (_isActivated) { + component.deactivate(); + } else { + component.activate(); + } + _isActivated = !_isActivated; + } +}