onCollisionHappened method

  1. @override
void onCollisionHappened(
  1. GameComponent component,
  2. bool active
)
override

Implementation

@override
void onCollisionHappened(GameComponent component, bool active) {
  if (enablePushable) {
    if (this is Movement) {
      if (!active && component is Movement && onPush(component)) {
        Vector2 displacement = center - component.center;
        if (displacement.x.abs() > displacement.y.abs()) {
          if (displacement.x < 0) {
            (this as Movement).moveLeft((this as Movement).speed);
          } else {
            (this as Movement).moveRight((this as Movement).speed);
          }
        } else {
          if (displacement.y < 0) {
            (this as Movement).moveUp((this as Movement).speed);
          } else {
            (this as Movement).moveDown((this as Movement).speed);
          }
        }
      }
    } else {
      // ignore: avoid_print
      print(
          'The mixin Pushable not working in ($this) because this component don`t have the `Movement` mixin');
    }
  }
  super.onCollisionHappened(component, isVisible);
}