package agents;

import knowledgeAndTechnics.Intelligence;
import knowledgeAndTechnics.NoFreePlayerException;

/*
 * Created on Oct 12, 2004
 *
 */

/**
 * Steht nur dumm rum
 * @author wir
 * 
 */
public class Defense extends Agent {
	public void playerInitialization(){
		
	}
	
	public void handlePlayOn(){
		// Anweisung zur Ballannahme
		if (infoPool.getPassMessage() != null){
			System.out.println(infoPool.getSenseBodyTime()+"handlePassMessage");
			infoPool.handlePassMessage();
			return;
		}		
		//Ball ist in unserem Zuständigkeitsbereich
		if (infoPool.checkBallInActingField()) {
			//Ball ist in unserem Zuständigkeitsbereich
			//Ich habe den Ball
			if (infoPool.checkBallPossession() == Intelligence.BALL_POSSESSION_ME) {
				try{
					baseFunctions.turnAbs(0);
					System.out.println(infoPool.getSenseBodyTime()+"passToFreePlayer");
					infoPool.passToFreePlayer(infoPool.getFreePlayer());
				} catch (NoFreePlayerException e){
					double x = infoPool.getX2PlayerActingField() - 5;
					double y = Math.random()*(infoPool.getY2PlayerActingField() - infoPool.getY1PlayerActingField())+infoPool.getY1PlayerActingField();
					System.out.println(infoPool.getSenseBodyTime()+"dribbleTo");
					infoPool.dribbleTo(x, y);	
				}			
			}
			//Ball ist in unserem Zuständigkeitsbereich
			//Unsere Mannschaft hat den Ball
			else if (infoPool.checkBallPossession() ==  Intelligence.BALL_POSSESSION_WE){
				//doNothing;
				System.out.println(infoPool.getSenseBodyTime()+"nix");
				baseFunctions.waitAfterSending();
				//Thread.yield();
			}
			//Ball ist in unserem Zuständigkeitsbereich
			//Gegnerische Mannschaft hat den Ball
			else if (infoPool.checkBallPossession() ==  Intelligence.BALL_POSSESSION_OPPONENT){
				if (infoPool.getPersonToCover() == -1){
					System.out.println(infoPool.getSenseBodyTime()+"interceptBall");
					infoPool.interceptBall();
				}
					
				else if(infoPool.getBall().getDist() >= 10){
					System.out.println(infoPool.getSenseBodyTime()+"cover");
				    infoPool.cover(infoPool.getPersonToCover());
				}
				else {
					System.out.println(infoPool.getSenseBodyTime()+"interceptBall");
					infoPool.interceptBall();
				}
			}
		} 
        //Ball ist Nicht in unserem Zuständigkeitsbereich
		else{
			//Ball ist Nicht in unserem Zuständigkeitsbereich
			//Unsere Mannschaft hat den Ball
			if (infoPool.checkBallPossession() ==  Intelligence.BALL_POSSESSION_WE){
				System.out.println(infoPool.getSenseBodyTime()+"dashToSeeingBall");
				infoPool.dashToSeeingBall(infoPool.angleToObject(infoPool.getXPlayerHome(), infoPool.getYPlayerHome()), Intelligence.STAMINA_NEUTRAL_SPEED);
			}
			//Ball ist Nicht in unserem Zuständigkeitsbereich
			//Gegnerische Mannschaft hat den Ball
			else if (infoPool.checkBallPossession() ==  Intelligence.BALL_POSSESSION_OPPONENT){
				if (infoPool.getPersonToCover() == -1)	{
					System.out.println(infoPool.getSenseBodyTime()+"dashToSeeingBall");
					infoPool.dashToSeeingBall(infoPool.angleToObject(infoPool.getXPlayerHome(), infoPool.getYPlayerHome()), Intelligence.STAMINA_NEUTRAL_SPEED);
				}
				else {
					System.out.println(infoPool.getSenseBodyTime()+"cover");
					infoPool.cover(infoPool.getPersonToCover());
				}
			}
		}
		
		
		
	}
	
	public Defense(String[] args){
		super(args);
	}
	
	public static void main(String[] args) {
		Defense d = new Defense(args);
		d.start();
	}
}
