runAction method

  1. @override
bool runAction(
  1. double dt,
  2. GameComponent comp,
  3. BonfireGameInterface game
)
override

Implementation

@override
bool runAction(double dt, GameComponent comp, BonfireGameInterface game) {
  return BCanSee(
    target: target,
    radiusVision: radiusVision,
    visionAngle: visionAngle,
    doElseBehavior: BCustom(
      behavior: (dt, comp, game) {
        if (comp is Movement && doElseBehavior == null) {
          comp.stopMove();
        }
        return doElseBehavior?.runAction(dt, comp, game) ?? true;
      },
    ),
    doBehavior: (target) {
      return BCustom(
        behavior: (dt, comp, game) {
          if (comp is Movement) {
            final minD = minDistance ?? (radiusVision * 0.7);
            final inDistance = comp.keepDistance(
              target,
              minD,
            );
            if (inDistance) {
              final playerDirection = comp.getDirectionToTarget(
                target,
              );
              comp.lastDirection = playerDirection;
              if (comp.lastDirection.isHorizontal) {
                comp.lastDirectionHorizontal = comp.lastDirection;
              }

              if (comp.checkInterval(_intervalKey, 500, dt)) {
                comp.stopMove();
              }
              positioned.call(target);
            }
          }
          return true;
        },
      );
    },
  ).runAction(dt, comp, game);
}