diff options
-rw-r--r-- | src/Camera.java | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/Camera.java b/src/Camera.java index e52b4e5..a3e3a43 100644 --- a/src/Camera.java +++ b/src/Camera.java @@ -48,7 +48,7 @@ class Camera { } else if (3 == mode) { // First person mode setFirstPersonMode(); } else if (4 == mode) { // Auto mode - // code goes here... + setAutoMode(); } else { // Default mode setDefaultMode(); } @@ -176,6 +176,26 @@ class Camera { } /** + * Alternates between the available camera modes. + */ + private void setAutoMode() { + double slowest_pos = robots[0].getTimePos(); + double fastest_pos = robots[0].getTimePos(); + for (Robot robot : robots) { + slowest_pos = Math.min(slowest_pos, robot.getTimePos()); + fastest_pos = Math.max(fastest_pos, robot.getTimePos()); + } + double distance = Robot.racepost2meter(fastest_pos - slowest_pos); + System.err.println("dist+" + distance); + // the helicopter view is more suitable if robots are more distant + if (distance > 5) { + setHelicopterMode(); + } else { + setMotorCycleMode(); + } + } + + /** * Returns the robot on which the camera is focused. */ private Robot getFocusedRobot() { |