refactor: modified ContactCallbacksGroup

pull/234/head
alestiago 3 years ago
parent 469c00c866
commit 31a92c0a38

@ -10,8 +10,13 @@ class AlienBumperContactBehavior extends Component
await super.onLoad();
final userData = parent.body.userData;
if (userData is ContactCallbacksNotifer) {
userData.addCallback(this);
if (userData is ContactCallbacksGroup) {
userData.addContactCallbacks(this);
} else if (userData is ContactCallbacks) {
final notifier = ContactCallbacksGroup()
..addContactCallbacks(userData)
..addContactCallbacks(this);
parent.body.userData = notifier;
} else {
parent.body.userData = this;
}

@ -10,10 +10,7 @@ import 'package:pinball_flame/pinball_flame.dart';
///
/// {@endtemplate}
class ScoringBehaviour extends Component
with
ContactCallbacksNotifer,
HasGameRef<PinballGame>,
ParentIsA<BodyComponent> {
with ContactCallbacks, HasGameRef<PinballGame>, ParentIsA<BodyComponent> {
/// {@macro scoring_behaviour}
ScoringBehaviour({
required int points,
@ -26,8 +23,13 @@ class ScoringBehaviour extends Component
await super.onLoad();
final userData = parent.body.userData;
if (userData is ContactCallbacksNotifer) {
userData.addCallback(this);
if (userData is ContactCallbacksGroup) {
userData.addContactCallbacks(this);
} else if (userData is ContactCallbacks) {
final notifier = ContactCallbacksGroup()
..addContactCallbacks(userData)
..addContactCallbacks(this);
parent.body.userData = notifier;
} else {
parent.body.userData = this;
}

@ -1,14 +1,14 @@
import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:flutter/material.dart';
class ContactCallbacksNotifer implements ContactCallbacks {
final List<ContactCallbacks> _callbacks = [];
class ContactCallbacksGroup implements ContactCallbacks {
final List<ContactCallbacks> _contactCallbacks = [];
@override
@mustCallSuper
void beginContact(Object other, Contact contact) {
onBeginContact?.call(other, contact);
for (final callback in _callbacks) {
for (final callback in _contactCallbacks) {
callback.beginContact(other, contact);
}
}
@ -17,7 +17,7 @@ class ContactCallbacksNotifer implements ContactCallbacks {
@mustCallSuper
void endContact(Object other, Contact contact) {
onEndContact?.call(other, contact);
for (final callback in _callbacks) {
for (final callback in _contactCallbacks) {
callback.endContact(other, contact);
}
}
@ -26,7 +26,7 @@ class ContactCallbacksNotifer implements ContactCallbacks {
@mustCallSuper
void preSolve(Object other, Contact contact, Manifold oldManifold) {
onPreSolve?.call(other, contact, oldManifold);
for (final callback in _callbacks) {
for (final callback in _contactCallbacks) {
callback.preSolve(other, contact, oldManifold);
}
}
@ -35,13 +35,13 @@ class ContactCallbacksNotifer implements ContactCallbacks {
@mustCallSuper
void postSolve(Object other, Contact contact, ContactImpulse impulse) {
onPostSolve?.call(other, contact, impulse);
for (final callback in _callbacks) {
for (final callback in _contactCallbacks) {
callback.postSolve(other, contact, impulse);
}
}
void addCallback(ContactCallbacks callback) {
_callbacks.add(callback);
void addContactCallbacks(ContactCallbacks callback) {
_contactCallbacks.add(callback);
}
@override

Loading…
Cancel
Save