seeComponentType<T extends GameComponent> method
void
seeComponentType<T extends GameComponent>({
- required dynamic observed(
- List<
T>
- List<
- VoidCallback? notObserved,
- double radiusVision = 32,
This method we notify when detect components by type when enter in radiusVision
configuration
Method that bo used in update method.
Implementation
void seeComponentType<T extends GameComponent>({
required Function(List<T>) observed,
VoidCallback? notObserved,
double radiusVision = 32,
}) {
var compVisible = this.gameRef.visibleComponents().where((element) {
return element is T && element != this;
}).cast<T>();
if (compVisible.isEmpty) {
if (notObserved != null) notObserved();
return;
}
double visionWidth = radiusVision * 2;
double visionHeight = radiusVision * 2;
Rect fieldOfVision = Rect.fromLTWH(
this.position.center.dx - radiusVision,
this.position.center.dy - radiusVision,
visionWidth,
visionHeight,
);
List<T> compObserved = compVisible
.where((comp) => fieldOfVision.overlaps(comp.position.rect))
.toList();
if (compObserved.isNotEmpty) {
observed(compObserved);
} else {
notObserved?.call();
}
}