Unify mixin names (#1114)

This commit is contained in:
Lukas Klingsbo
2021-11-18 08:48:31 +01:00
committed by GitHub
parent 85caf463f4
commit 795264edbf
31 changed files with 55 additions and 54 deletions

View File

@ -179,7 +179,7 @@ children tree and then passed further down until a method returns `false`.
### Tappable components
By adding the `HasTappableComponents` mixin to your game, and using the mixin `Tappable` on your
By adding the `HasTappables` mixin to your game, and using the mixin `Tappable` on your
components, you can override the following methods on your components:
```dart
@ -216,21 +216,21 @@ class TappableComponent extends PositionComponent with Tappable {
}
}
class MyGame extends FlameGame with HasTappableComponents {
class MyGame extends FlameGame with HasTappables {
MyGame() {
add(TappableComponent());
}
}
```
**Note**: `HasTappableComponents` uses an advanced gesture detector under the hood and as explained
**Note**: `HasTappables` uses an advanced gesture detector under the hood and as explained
further up on this page it shouldn't be used alongside basic detectors.
### Draggable components
Just like with `Tappable`, Flame offers a mixin for `Draggable`.
By adding the `HasDraggableComponents` mixin to your game, and by using the mixin `Draggable` on
By adding the `HasDraggables` mixin to your game, and by using the mixin `Draggable` on
your components, they can override the simple methods that enable an easy to use drag api on your
components.
@ -291,14 +291,14 @@ class DraggableComponent extends PositionComponent with Draggable {
}
}
class MyGame extends FlameGame with HasDraggableComponents {
class MyGame extends FlameGame with HasDraggables {
MyGame() {
add(DraggableComponent());
}
}
```
**Note**: `HasDraggableComponents` uses an advanced gesture detector under the hood and as explained
**Note**: `HasDraggables` uses an advanced gesture detector under the hood and as explained
further up on this page, shouldn't be used alongside basic detectors.
### Hoverable components
@ -306,7 +306,7 @@ further up on this page, shouldn't be used alongside basic detectors.
Just like the others, this mixin allows for easy wiring of your component to listen to hover states
and events.
By adding the `HasHoverableComponents` mixin to your base game, and by using the mixin `Hoverable` on
By adding the `HasHoverables` mixin to your base game, and by using the mixin `Hoverable` on
your components, they get an `isHovered` field and a couple of methods (`onHoverStart`, `onHoverEnd`) that
you can override if you want to listen to the events.

View File

@ -16,7 +16,7 @@ add it to your game.
Check this example to get a better understanding:
```dart
class MyGame extends FlameGame with HasDraggableComponents {
class MyGame extends FlameGame with HasDraggables {
MyGame() {
joystick.addObserver(player);

View File

@ -132,7 +132,7 @@ class Rock extends SquareComponent with Collidable, Tappable {
}
class CameraAndViewportGame extends FlameGame
with HasCollidables, HasTappableComponents, HasKeyboardHandlerComponents {
with HasCollidables, HasTappables, HasKeyboardHandlerComponents {
late MovableSquare square;
final Vector2 viewportResolution;

View File

@ -12,7 +12,7 @@ import 'package:flutter/material.dart' hide Image, Draggable;
enum Shapes { circle, rectangle, polygon }
class MultipleShapesExample extends FlameGame
with HasCollidables, HasDraggableComponents, FPSCounter {
with HasCollidables, HasDraggables, FPSCounter {
static const description = '''
An example with many hitboxes that move around on the screen and during
collisions they change color depending on what it is that they have collided

View File

@ -11,7 +11,7 @@ import 'package:flame/palette.dart';
enum Shapes { circle, rectangle, polygon }
class SimpleShapesExample extends FlameGame with HasTappableComponents {
class SimpleShapesExample extends FlameGame with HasTappables {
static const description = '''
An example which adds random shapes on the screen when you tap it, if you
tap on an already existing shape it will remove that shape and replace it

View File

@ -33,9 +33,9 @@ class ParentSquare extends Square with HasGameRef {
}
}
// This class only has `HasDraggableComponents` since the game-in-game example
// This class only has `HasDraggables` since the game-in-game example
// moves a draggable component to this game.
class Composability extends FlameGame with HasDraggableComponents {
class Composability extends FlameGame with HasDraggables {
late ParentSquare parentSquare;
@override

View File

@ -26,7 +26,7 @@ class GameChangeTimer extends TimerComponent with HasGameRef<GameInGame> {
}
}
class GameInGame extends FlameGame with HasDraggableComponents {
class GameInGame extends FlameGame with HasDraggables {
@override
bool debugMode = true;
late final Composability composedGame;

View File

@ -34,7 +34,7 @@ class Square extends PositionComponent with HasGameRef<Priority>, Tappable {
}
}
class Priority extends FlameGame with HasTappableComponents {
class Priority extends FlameGame with HasTappables {
@override
Future<void> onLoad() async {
await super.onLoad();

View File

@ -6,7 +6,7 @@ import 'package:flame/input.dart';
import 'package:flame/src/effects2/remove_effect.dart'; // ignore: implementation_imports
import 'package:flutter/material.dart';
class RemoveEffectExample extends FlameGame with HasTappableComponents {
class RemoveEffectExample extends FlameGame with HasTappables {
static const description = '''
Click on any circle to apply a RemoveEffect, which will make the circle
disappear after a 0.5 second delay.

View File

@ -59,7 +59,7 @@ class DraggableSquare extends PositionComponent with Draggable, HasGameRef {
}
}
class DraggablesGame extends FlameGame with HasDraggableComponents {
class DraggablesGame extends FlameGame with HasDraggables {
final double zoom;
late final DraggableSquare square;

View File

@ -19,8 +19,7 @@ class HoverableSquare extends PositionComponent with Hoverable {
}
}
class HoverablesGame extends FlameGame
with HasHoverableComponents, TapDetector {
class HoverablesGame extends FlameGame with HasHoverables, TapDetector {
@override
Future<void> onLoad() async {
await super.onLoad();

View File

@ -6,7 +6,7 @@ import 'package:flutter/painting.dart';
import 'joystick_player.dart';
class JoystickGame extends FlameGame with HasDraggableComponents {
class JoystickGame extends FlameGame with HasDraggables {
late final JoystickPlayer player;
late final JoystickComponent joystick;

View File

@ -12,8 +12,7 @@ import 'package:flutter/painting.dart';
import 'joystick_player.dart';
class JoystickAdvancedGame extends FlameGame
with HasDraggableComponents, HasTappableComponents {
class JoystickAdvancedGame extends FlameGame with HasDraggables, HasTappables {
late final JoystickPlayer player;
late final JoystickComponent joystick;
late final TextComponent speedText;

View File

@ -35,7 +35,7 @@ class TappableSquare extends PositionComponent with Tappable {
}
}
class OverlappingTappablesGame extends FlameGame with HasTappableComponents {
class OverlappingTappablesGame extends FlameGame with HasTappables {
@override
Future<void> onLoad() async {
await super.onLoad();

View File

@ -40,7 +40,7 @@ class TappableSquare extends PositionComponent with Tappable {
}
}
class TappablesGame extends FlameGame with HasTappableComponents {
class TappablesGame extends FlameGame with HasTappables {
@override
Future<void> onLoad() async {
await super.onLoad();

View File

@ -45,7 +45,7 @@ class ButtonComponent extends SpriteGroupComponent<ButtonState>
}
}
class SpriteGroupExample extends FlameGame with HasTappableComponents {
class SpriteGroupExample extends FlameGame with HasTappables {
@override
Future<void> onLoad() async {
await super.onLoad();

View File

@ -33,6 +33,9 @@
- Removed methods `preRender()` and `postRender()` in `Component`
- Use `FlameTester` everywhere where it makes sense in the tests
- Improved `IsometricTileMap`
- Rename `HasTappableComponents` to `HasTappables`
- Rename `HasDraggableComponents` to `HasDraggables`
- Rename `HasHoverableComponents` to `HasHoverableis`
## [1.0.0-releasecandidate.16]
- `changePriority` no longer breaks game loop iteration

View File

@ -68,15 +68,15 @@ mixin Draggable on Component {
if (isPrepared) {
final parentGame = findParent<FlameGame>();
assert(
parentGame is HasDraggableComponents,
parentGame is HasDraggables,
'Draggable Components can only be added to a FlameGame with '
'HasDraggableComponents',
'HasDraggables',
);
}
}
}
mixin HasDraggableComponents on FlameGame {
mixin HasDraggables on FlameGame {
@mustCallSuper
void onDragStart(int pointerId, DragStartInfo info) {
_onGenericEventReceived((c) => c.handleDragStart(pointerId, info));

View File

@ -39,15 +39,15 @@ mixin Hoverable on Component {
if (isPrepared) {
final parentGame = findParent<FlameGame>();
assert(
parentGame is HasHoverableComponents,
parentGame is HasHoverables,
'Hoverable Components can only be added to a FlameGame with '
'HasHoverableComponents',
'HasHoverables',
);
}
}
}
mixin HasHoverableComponents on FlameGame {
mixin HasHoverables on FlameGame {
@mustCallSuper
void onMouseMove(PointerHoverInfo info) {
bool _mouseMoveHandler(Hoverable c) {

View File

@ -53,15 +53,15 @@ mixin Tappable on Component {
if (isPrepared) {
final parentGame = findParent<FlameGame>();
assert(
parentGame is HasTappableComponents,
parentGame is HasTappables,
'Tappable Components can only be added to a FlameGame with '
'HasTappableComponents',
'HasTappables',
);
}
}
}
mixin HasTappableComponents on FlameGame {
mixin HasTappables on FlameGame {
void _handleTapEvent(bool Function(Tappable child) tapEventHandler) {
for (final c in children.reversed()) {
var shouldContinue = c.propagateToChildren<Tappable>(tapEventHandler);

View File

@ -23,13 +23,13 @@ bool hasBasicGestureDetectors(Game game) =>
bool hasAdvancedGesturesDetectors(Game game) =>
game is MultiTouchTapDetector ||
game is MultiTouchDragDetector ||
game is HasTappableComponents ||
game is HasDraggableComponents;
game is HasTappables ||
game is HasDraggables;
bool hasMouseDetectors(Game game) =>
game is MouseMovementDetector ||
game is ScrollDetector ||
game is HasHoverableComponents;
game is HasHoverables;
Widget applyBasicGesturesDetectors(Game game, Widget child) {
return GestureDetector(
@ -236,7 +236,7 @@ Widget applyAdvancedGesturesDetectors(Game game, Widget child) {
instance.onTapCancel = game.onTapCancel;
instance.onTap = game.onTap;
});
} else if (game is HasTappableComponents) {
} else if (game is HasTappables) {
addAndConfigureRecognizer(
() => MultiTapGestureRecognizer(),
(MultiTapGestureRecognizer instance) {
@ -257,7 +257,7 @@ Widget applyAdvancedGesturesDetectors(Game game, Widget child) {
..onEnd = ((details) => game.onDragEnd(pointerId, details))
..onCancel = (() => game.onDragCancel(pointerId));
});
} else if (game is HasDraggableComponents) {
} else if (game is HasDraggables) {
addDragRecognizer(game, (int pointerId, DragStartInfo position) {
game.onDragStart(pointerId, position);
return _DragEvent(game)
@ -277,7 +277,7 @@ Widget applyAdvancedGesturesDetectors(Game game, Widget child) {
Widget applyMouseDetectors(Game game, Widget child) {
final mouseMoveFn = game is MouseMovementDetector
? game.onMouseMove
: (game is HasHoverableComponents ? game.onMouseMove : null);
: (game is HasHoverables ? game.onMouseMove : null);
return Listener(
child: MouseRegion(
child: child,

View File

@ -6,7 +6,7 @@ import 'package:flame/game.dart';
import 'package:flame_test/flame_test.dart';
import 'package:test/test.dart';
class _HasTappablesGame extends FlameGame with HasTappableComponents {}
class _HasTappablesGame extends FlameGame with HasTappables {}
class _MyTap extends PositionComponent with Tappable {
late Vector2 gameSize;

View File

@ -5,7 +5,7 @@ import 'package:flame_test/flame_test.dart';
import 'package:flutter/gestures.dart';
import 'package:test/test.dart';
class _GameHasDraggables extends FlameGame with HasDraggableComponents {}
class _GameHasDraggables extends FlameGame with HasDraggables {}
class _DraggableComponent extends PositionComponent with Draggable {
bool hasStartedDragging = false;
@ -33,7 +33,7 @@ void main() {
(game) async {
const message =
'Draggable Components can only be added to a FlameGame with '
'HasDraggableComponents';
'HasDraggables';
expect(
() => game.add(_DraggableComponent()),

View File

@ -8,7 +8,7 @@ import 'package:flame_test/flame_test.dart';
import 'package:flutter/gestures.dart' show PointerHoverEvent;
import 'package:test/test.dart';
class _GameWithHoverables extends FlameGame with HasHoverableComponents {}
class _GameWithHoverables extends FlameGame with HasHoverables {}
class _HoverableComponent extends PositionComponent with Hoverable {
int enterCount = 0;
@ -57,7 +57,7 @@ void main() {
(game) async {
const message =
'Hoverable Components can only be added to a FlameGame with '
'HasHoverableComponents';
'HasHoverables';
expect(
() => game.add(_HoverableComponent()),
@ -201,7 +201,7 @@ void main() {
}
// TODO(luan) we can probably provide some helpers to facilitate testing events
void _triggerMouseMove(HasHoverableComponents game, double dx, double dy) {
void _triggerMouseMove(HasHoverables game, double dx, double dy) {
game.onMouseMove(
PointerHoverInfo.fromDetails(
game,

View File

@ -5,7 +5,7 @@ import 'package:flame_test/flame_test.dart';
import 'package:flutter/widgets.dart';
import 'package:test/test.dart';
class _GameHasDraggables extends FlameGame with HasDraggableComponents {}
class _GameHasDraggables extends FlameGame with HasDraggables {}
void main() {
final withDraggables = FlameTester(() => _GameHasDraggables());

View File

@ -3,7 +3,7 @@ import 'package:flame/game.dart';
import 'package:flame_test/flame_test.dart';
import 'package:test/test.dart';
class _GameWithTappables extends FlameGame with HasTappableComponents {}
class _GameWithTappables extends FlameGame with HasTappables {}
class _TappableComponent extends PositionComponent with Tappable {}
@ -23,7 +23,7 @@ void main() {
(game) async {
const message =
'Tappable Components can only be added to a FlameGame with '
'HasTappableComponents';
'HasTappables';
expect(
() => game.add(_TappableComponent()),

View File

@ -10,7 +10,7 @@ import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart' as flutter;
import 'package:flutter_test/flutter_test.dart';
class _GameWithTappables extends FlameGame with HasTappableComponents {}
class _GameWithTappables extends FlameGame with HasTappables {}
class _MyTappableComponent extends _MyComponent with Tappable {
bool tapped = false;

View File

@ -8,7 +8,7 @@ import 'package:forge2d/forge2d.dart';
import 'balls.dart';
import 'boundaries.dart';
class CompositionSample extends Forge2DGame with HasTappableComponents {
class CompositionSample extends Forge2DGame with HasTappables {
static const info = '''
This example shows how to compose a `BodyComponent` together with a normal Flame
component. Click the ball to see the number increment.

View File

@ -9,7 +9,7 @@ import 'package:forge2d/forge2d.dart';
import 'balls.dart';
import 'boundaries.dart';
class DraggableSample extends Forge2DGame with HasDraggableComponents {
class DraggableSample extends Forge2DGame with HasDraggables {
DraggableSample() : super(gravity: Vector2.all(0.0));
@override

View File

@ -7,7 +7,7 @@ import 'package:forge2d/forge2d.dart';
import 'balls.dart';
import 'boundaries.dart';
class TappableSample extends Forge2DGame with HasTappableComponents {
class TappableSample extends Forge2DGame with HasTappables {
TappableSample() : super(zoom: 20, gravity: Vector2(0, -10.0));
@override

View File

@ -29,7 +29,7 @@ class _MyAppState extends State<MyApp> {
}
}
class RiveExampleGame extends FlameGame with HasTappableComponents {
class RiveExampleGame extends FlameGame with HasTappables {
@override
Color backgroundColor() {
return const Color(0xFFFFFFFF);