package de.otto.roborace.model; /** * Created by luca on 06.03.15. */ public class DataModel { private static final int STEERING_MAX = 40; private final int SLOW_TIME_MILLIS = 2000; private int targetSpeed; private Steering desiredSteeringDirection = Steering.NONE; public RacingState getRacingState() { return racingState; } public void setRacingState(RacingState racingState) { this.racingState = racingState; } private RacingState racingState = RacingState.NONE; private long boundaryReachedTime = 0; public Steering getDesiredSteeringDirection() { return desiredSteeringDirection; } public void setDesiredSteeringDirection(Steering desiredSteeringDirection) { this.desiredSteeringDirection = desiredSteeringDirection; } public int getTargetSpeed() { if(wasBoundaryReachedRecently()) { return (int)Math.ceil(targetSpeed * 0.2); } else { return targetSpeed; } } public void resetSteering() { desiredSteeringDirection = null; } public void setTargetSpeed(int targetSpeed) { this.targetSpeed = targetSpeed * 8; //800 ist das maximum zu sein. } public boolean wasBoundaryReachedRecently() { return System.currentTimeMillis() - boundaryReachedTime < SLOW_TIME_MILLIS; } public void courseBoundaryReached() { System.out.println("Boundary reached"); boundaryReachedTime = System.currentTimeMillis(); } }