mirror of https://github.com/flutter/pinball.git
parent
cf8727e8d8
commit
99689ea4da
@ -1 +1 @@
|
|||||||
export 'bonus_behaviour.dart';
|
export 'google_word_bonus_behaviour.dart';
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
import 'package:flame/components.dart';
|
||||||
|
import 'package:flame_forge2d/flame_forge2d.dart';
|
||||||
|
import 'package:pinball_components/pinball_components.dart';
|
||||||
|
import 'package:pinball_flame/pinball_flame.dart';
|
||||||
|
|
||||||
|
class AlienBumperBallContactBehavior extends ContactBehavior<AlienBumper> {
|
||||||
|
@override
|
||||||
|
void beginContact(Object other, Contact contact) {
|
||||||
|
super.beginContact(other, contact);
|
||||||
|
if (other is! Ball) return;
|
||||||
|
parent.bloc.onBallContacted();
|
||||||
|
}
|
||||||
|
}
|
@ -1,2 +1,2 @@
|
|||||||
export 'contact_behavior.dart';
|
export 'alien_bumper_ball_contact_behaviour.dart';
|
||||||
export 'sprite_behavior.dart';
|
export 'sprite_behavior.dart';
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
import 'package:flame/components.dart';
|
|
||||||
import 'package:flame_forge2d/flame_forge2d.dart';
|
|
||||||
import 'package:pinball_components/pinball_components.dart';
|
|
||||||
import 'package:pinball_flame/pinball_flame.dart';
|
|
||||||
|
|
||||||
class ContactBehavior extends Component
|
|
||||||
with ContactCallbacks, ParentIsA<AlienBumper> {
|
|
||||||
@override
|
|
||||||
Future<void> onLoad() async {
|
|
||||||
await super.onLoad();
|
|
||||||
|
|
||||||
// TODO(alestiago): Consider defining a generic ContactBehaviour to get
|
|
||||||
// rid of this repeated logic.
|
|
||||||
final userData = parent.body.userData;
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void beginContact(Object other, Contact contact) {
|
|
||||||
super.beginContact(other, contact);
|
|
||||||
if (other is! Ball) return;
|
|
||||||
parent.bloc.onBallContacted();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1 +1 @@
|
|||||||
export 'contact_behavior.dart';
|
export 'google_letter_ball_contact_behavior.dart';
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
import 'package:flame/components.dart';
|
|
||||||
import 'package:flame_forge2d/flame_forge2d.dart';
|
|
||||||
import 'package:pinball_components/pinball_components.dart';
|
|
||||||
import 'package:pinball_flame/pinball_flame.dart';
|
|
||||||
|
|
||||||
class ContactBehavior extends Component
|
|
||||||
with ContactCallbacks, ParentIsA<GoogleLetter> {
|
|
||||||
@override
|
|
||||||
Future<void> onLoad() async {
|
|
||||||
await super.onLoad();
|
|
||||||
|
|
||||||
// TODO(alestiago): Consider defining a generic ContactBehaviour to get
|
|
||||||
// rid of this repeated logic.
|
|
||||||
final userData = parent.body.userData;
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void beginContact(Object other, Contact contact) {
|
|
||||||
super.beginContact(other, contact);
|
|
||||||
if (other is! Ball) return;
|
|
||||||
parent.bloc.onBallContacted();
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,12 @@
|
|||||||
|
import 'package:flame_forge2d/flame_forge2d.dart';
|
||||||
|
import 'package:pinball_components/pinball_components.dart';
|
||||||
|
import 'package:pinball_flame/pinball_flame.dart';
|
||||||
|
|
||||||
|
class GoogleLetterBallContactBehavior extends ContactBehavior<GoogleLetter> {
|
||||||
|
@override
|
||||||
|
void beginContact(Object other, Contact contact) {
|
||||||
|
super.beginContact(other, contact);
|
||||||
|
if (other is! Ball) return;
|
||||||
|
parent.bloc.onBallContacted();
|
||||||
|
}
|
||||||
|
}
|
@ -1,2 +1,2 @@
|
|||||||
export 'contact_behavior.dart';
|
export 'sparky_bumper_ball_contact_behaviour.dart';
|
||||||
export 'sprite_behavior.dart';
|
export 'sprite_behavior.dart';
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
import 'package:flame/components.dart';
|
|
||||||
import 'package:flame_forge2d/flame_forge2d.dart';
|
|
||||||
import 'package:pinball_components/pinball_components.dart';
|
|
||||||
import 'package:pinball_flame/pinball_flame.dart';
|
|
||||||
|
|
||||||
class ContactBehavior extends Component
|
|
||||||
with ContactCallbacks, ParentIsA<SparkyBumper> {
|
|
||||||
@override
|
|
||||||
Future<void> onLoad() async {
|
|
||||||
await super.onLoad();
|
|
||||||
|
|
||||||
final userData = parent.body.userData;
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void beginContact(Object other, Contact contact) {
|
|
||||||
super.beginContact(other, contact);
|
|
||||||
if (other is! Ball) return;
|
|
||||||
parent.bloc.onBallContacted();
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,12 @@
|
|||||||
|
import 'package:flame_forge2d/flame_forge2d.dart';
|
||||||
|
import 'package:pinball_components/pinball_components.dart';
|
||||||
|
import 'package:pinball_flame/pinball_flame.dart';
|
||||||
|
|
||||||
|
class SparkyBumperBallContactBehavior extends ContactBehavior<SparkyBumper> {
|
||||||
|
@override
|
||||||
|
void beginContact(Object other, Contact contact) {
|
||||||
|
super.beginContact(other, contact);
|
||||||
|
if (other is! Ball) return;
|
||||||
|
parent.bloc.onBallContacted();
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,26 @@
|
|||||||
|
import 'package:flame/components.dart';
|
||||||
import 'package:flame_forge2d/flame_forge2d.dart';
|
import 'package:flame_forge2d/flame_forge2d.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:pinball_flame/pinball_flame.dart';
|
||||||
|
|
||||||
|
class ContactBehavior<T extends BodyComponent> extends Component
|
||||||
|
with ContactCallbacks, ParentIsA<T> {
|
||||||
|
@override
|
||||||
|
@mustCallSuper
|
||||||
|
Future<void> onLoad() async {
|
||||||
|
final userData = parent.body.userData;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class ContactCallbacksGroup implements ContactCallbacks {
|
class ContactCallbacksGroup implements ContactCallbacks {
|
||||||
final List<ContactCallbacks> _contactCallbacks = [];
|
final List<ContactCallbacks> _contactCallbacks = [];
|
Loading…
Reference in new issue