public void onScannedRobot(ScannedRobotEvent e) { oldRobotLocation.setLocation(robotLocation); robotLocation.setLocation(getX(), getY()); enemyAbsoluteBearing = getHeadingRadians() + e.getBearingRadians(); enemyDistance = e.getDistance(); oldEnemyLocation.setLocation(enemyLocation); toLocation(enemyAbsoluteBearing, enemyDistance, robotLocation, enemyLocation); deltaBearing = Utils.normalRelativeAngle( absoluteBearing(oldRobotLocation, enemyLocation) - absoluteBearing(oldRobotLocation, oldEnemyLocation)); currentAimFactors = aimFactors[aimDirectionSegment()][ Math.min( (int) (enemyDistance / (getBattleFieldWidth() / DISTANCE_SEGMENTS)), DISTANCE_SEGMENTS - 1)][ Math.min( (int) (enemyLocation.getY() / (getBattleFieldHeight() / VERTICAL_SEGMENTS)), VERTICAL_SEGMENTS - 1)]; setTurnGunRightRadians( Utils.normalRelativeAngle( enemyAbsoluteBearing + maxEnemyBearing * sign(deltaBearing) * mostVisitedFactor() - getGunHeadingRadians())); if (getEnergy() > 3.1) { Bullet bullet = setFireBullet(3); if (bullet != null) { Wave wave = new Wave(); wave.wTime = getTime(); wave.bearingDelta = deltaBearing; wave.oldRLocation.setLocation(robotLocation); wave.oldELocation.setLocation(enemyLocation); wave.wAimFactors = currentAimFactors; addCustomEvent(wave); } } setAhead(getY() > enemyLocation.getY() ? -50 : 50); setTurnRadarRightRadians( Utils.normalRelativeAngle(enemyAbsoluteBearing - getRadarHeadingRadians()) * 2); }