diff --git a/examples/lib/stories/camera_and_viewport/follow_object.dart b/examples/lib/stories/camera_and_viewport/follow_object.dart index cb648bcb7..7db35260a 100644 --- a/examples/lib/stories/camera_and_viewport/follow_object.dart +++ b/examples/lib/stories/camera_and_viewport/follow_object.dart @@ -13,7 +13,7 @@ final R = Random(); class MovableSquare extends SquareComponent with - Hitbox, + HasHitboxes, Collidable, HasGameRef, KeyboardHandler { @@ -106,7 +106,7 @@ class Map extends Component { } } -class Rock extends SquareComponent with Hitbox, Collidable, Tappable { +class Rock extends SquareComponent with HasHitboxes, Collidable, Tappable { static final unpressedPaint = Paint()..color = const Color(0xFF2222FF); static final pressedPaint = Paint()..color = const Color(0xFF414175); diff --git a/examples/lib/stories/collision_detection/circles.dart b/examples/lib/stories/collision_detection/circles.dart index b2592dd32..d78b3bc6f 100644 --- a/examples/lib/stories/collision_detection/circles.dart +++ b/examples/lib/stories/collision_detection/circles.dart @@ -14,7 +14,7 @@ circle both of them will change color. '''; class MyCollidable extends PositionComponent - with HasGameRef, Hitbox, Collidable { + with HasGameRef, HasHitboxes, Collidable { late Vector2 velocity; final _collisionColor = Colors.amber; final _defaultColor = Colors.cyan; diff --git a/examples/lib/stories/collision_detection/multiple_shapes.dart b/examples/lib/stories/collision_detection/multiple_shapes.dart index 9b11b22a7..55cf31e0d 100644 --- a/examples/lib/stories/collision_detection/multiple_shapes.dart +++ b/examples/lib/stories/collision_detection/multiple_shapes.dart @@ -25,7 +25,7 @@ direction. enum Shapes { circle, rectangle, polygon } abstract class MyCollidable extends PositionComponent - with Draggable, Hitbox, Collidable { + with Draggable, HasHitboxes, Collidable { double rotationSpeed = 0.0; final Vector2 velocity; final delta = Vector2.zero(); diff --git a/packages/flame/CHANGELOG.md b/packages/flame/CHANGELOG.md index 388d5e153..751f15d28 100644 --- a/packages/flame/CHANGELOG.md +++ b/packages/flame/CHANGELOG.md @@ -4,6 +4,7 @@ - Added `StandardEffectController` class - Refactored `Effect` class to use `EffectController`, added `Transform2DEffect` class - Clarified `TimerComponent` example + - Rename `Hitbox` mixin to `HasHitboxes` - Added `RemoveEffect` and `SimpleEffectController` ## [1.0.0-releasecandidate.16] diff --git a/packages/flame/lib/src/components/mixins/collidable.dart b/packages/flame/lib/src/components/mixins/collidable.dart index fea79d324..0c1e6012c 100644 --- a/packages/flame/lib/src/components/mixins/collidable.dart +++ b/packages/flame/lib/src/components/mixins/collidable.dart @@ -16,7 +16,7 @@ enum CollidableType { inactive, } -mixin Collidable on Hitbox { +mixin Collidable on HasHitboxes { CollidableType collidableType = CollidableType.active; void onCollision(Set intersectionPoints, Collidable other) {} @@ -48,7 +48,7 @@ mixin Collidable on Hitbox { } class ScreenCollidable extends PositionComponent - with Hitbox, Collidable, HasGameRef { + with HasHitboxes, Collidable, HasGameRef { @override CollidableType collidableType = CollidableType.passive; diff --git a/packages/flame/lib/src/components/mixins/hitbox.dart b/packages/flame/lib/src/components/mixins/hitbox.dart index a8287135b..cb20490dd 100644 --- a/packages/flame/lib/src/components/mixins/hitbox.dart +++ b/packages/flame/lib/src/components/mixins/hitbox.dart @@ -5,7 +5,7 @@ import '../../../extensions.dart'; import '../../geometry/shape.dart'; import '../position_component.dart'; -mixin Hitbox on PositionComponent { +mixin HasHitboxes on PositionComponent { final List _hitboxes = []; UnmodifiableListView get hitboxes { @@ -42,7 +42,7 @@ mixin Hitbox on PositionComponent { /// Since this is a cheaper calculation than checking towards all shapes, this /// check can be done first to see if it even is possible that the shapes can /// overlap, since the shapes have to be within the size of the component. - bool possiblyOverlapping(Hitbox other) { + bool possiblyOverlapping(HasHitboxes other) { final maxDistance = other.scaledSize.length + scaledSize.length; return other.absoluteCenter.distanceToSquared(absoluteCenter) <= maxDistance * maxDistance; diff --git a/packages/flame/test/components/collidable_type_test.dart b/packages/flame/test/components/collidable_type_test.dart index 7c0e03990..37b463449 100644 --- a/packages/flame/test/components/collidable_type_test.dart +++ b/packages/flame/test/components/collidable_type_test.dart @@ -11,7 +11,7 @@ class TestGame extends FlameGame with HasCollidables { } } -class TestBlock extends PositionComponent with Hitbox, Collidable { +class TestBlock extends PositionComponent with HasHitboxes, Collidable { final List collisions = List.empty(growable: true); TestBlock(Vector2 position, Vector2 size, CollidableType type) diff --git a/packages/flame/test/components/collision_callback_test.dart b/packages/flame/test/components/collision_callback_test.dart index 8a3f222d0..0f5df3196 100644 --- a/packages/flame/test/components/collision_callback_test.dart +++ b/packages/flame/test/components/collision_callback_test.dart @@ -28,7 +28,7 @@ class TestHitbox extends HitboxRectangle { } } -class TestBlock extends PositionComponent with Hitbox, Collidable { +class TestBlock extends PositionComponent with HasHitboxes, Collidable { final Set collisions = {}; final hitbox = TestHitbox(); int endCounter = 0; diff --git a/packages/flame/test/components/mixins/has_collidable_test.dart b/packages/flame/test/components/mixins/has_collidable_test.dart index cb0d83920..7f9ac46d4 100644 --- a/packages/flame/test/components/mixins/has_collidable_test.dart +++ b/packages/flame/test/components/mixins/has_collidable_test.dart @@ -3,7 +3,7 @@ import 'package:flame/game.dart'; import 'package:flame_test/flame_test.dart'; import 'package:flutter_test/flutter_test.dart'; -class MyCollidable extends PositionComponent with Hitbox, Collidable {} +class MyCollidable extends PositionComponent with HasHitboxes, Collidable {} void main() { group('HasCollidables', () { diff --git a/packages/flame/test/components/position_component_test.dart b/packages/flame/test/components/position_component_test.dart index b32e57125..1a835a56c 100644 --- a/packages/flame/test/components/position_component_test.dart +++ b/packages/flame/test/components/position_component_test.dart @@ -9,7 +9,7 @@ import 'package:flame/geometry.dart'; import 'package:flame_test/flame_test.dart'; import 'package:test/test.dart'; -class MyHitboxComponent extends PositionComponent with Hitbox {} +class MyHitboxComponent extends PositionComponent with HasHitboxes {} class MyDebugComponent extends PositionComponent { int? precision = 0; @@ -101,7 +101,7 @@ void main() { }); test('component with hitbox contains point', () { - final Hitbox component = MyHitboxComponent(); + final HasHitboxes component = MyHitboxComponent(); component.position.setValues(1.0, 1.0); component.anchor = Anchor.topLeft; component.size.setValues(2.0, 2.0); @@ -118,7 +118,7 @@ void main() { }); test('component with anchor topLeft contains point on edge', () { - final Hitbox component = MyHitboxComponent(); + final HasHitboxes component = MyHitboxComponent(); component.position.setValues(-1, -1); component.anchor = Anchor.topLeft; component.size.setValues(2.0, 2.0); @@ -132,7 +132,7 @@ void main() { }); test('component with anchor bottomRight contains point on edge', () { - final Hitbox component = MyHitboxComponent(); + final HasHitboxes component = MyHitboxComponent(); component.position.setValues(1, 1); component.anchor = Anchor.bottomRight; component.size.setValues(2.0, 2.0); @@ -146,7 +146,7 @@ void main() { }); test('component with anchor topRight does not contain close points', () { - final Hitbox component = MyHitboxComponent(); + final HasHitboxes component = MyHitboxComponent(); component.position.setValues(1, 1); component.anchor = Anchor.topLeft; component.size.setValues(2.0, 2.0); @@ -160,7 +160,7 @@ void main() { }); test('component with hitbox does not contains point', () { - final Hitbox component = MyHitboxComponent(); + final HasHitboxes component = MyHitboxComponent(); component.position.setValues(1.0, 1.0); component.anchor = Anchor.topLeft; component.size.setValues(2.0, 2.0); diff --git a/packages/flame_bloc/example/lib/src/game/components/bullet.dart b/packages/flame_bloc/example/lib/src/game/components/bullet.dart index c09f2018e..04c38eda8 100644 --- a/packages/flame_bloc/example/lib/src/game/components/bullet.dart +++ b/packages/flame_bloc/example/lib/src/game/components/bullet.dart @@ -6,7 +6,7 @@ import '../game.dart'; import 'enemy.dart'; class BulletComponent extends SpriteAnimationComponent - with HasGameRef, Hitbox, Collidable { + with HasGameRef, HasHitboxes, Collidable { static const bulletSpeed = -500; bool destroyed = false; diff --git a/packages/flame_bloc/example/lib/src/game/components/enemy.dart b/packages/flame_bloc/example/lib/src/game/components/enemy.dart index 876616c91..6f0351beb 100644 --- a/packages/flame_bloc/example/lib/src/game/components/enemy.dart +++ b/packages/flame_bloc/example/lib/src/game/components/enemy.dart @@ -5,7 +5,7 @@ import './explosion.dart'; import '../game.dart'; class EnemyComponent extends SpriteAnimationComponent - with HasGameRef, Hitbox, Collidable { + with HasGameRef, HasHitboxes, Collidable { static const enemySpeed = 50; bool destroyed = false; diff --git a/packages/flame_bloc/example/lib/src/game/components/player.dart b/packages/flame_bloc/example/lib/src/game/components/player.dart index 13ceecae6..8b8c16378 100644 --- a/packages/flame_bloc/example/lib/src/game/components/player.dart +++ b/packages/flame_bloc/example/lib/src/game/components/player.dart @@ -36,7 +36,7 @@ class PlayerController extends Component class PlayerComponent extends SpriteAnimationComponent with HasGameRef, - Hitbox, + HasHitboxes, Collidable, KeyboardHandler, BlocComponent {