package agents;

import knowledgeAndTechnics.Intelligence;

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

/**
 * Steht nur dumm rum
 * @author wir
 * 
 */
public class Midfield extends Agent {
	public void playerInitialization(){
		baseFunctions.init(infoPool.getTeamName());
		
		//Die Startposition
		infoPool.setXPlayerStart(-30);
		infoPool.setYPlayerStart(10);
		
		// Die Ruheposition
		infoPool.setXPlayerHome(-25);
		infoPool.setYPlayerHome(10);
		// Der Handlungsbereich
		infoPool.setX1PlayerActingField(-52.5);
		infoPool.setY1PlayerActingField(-34);
		infoPool.setX2PlayerActingField(52.5);
		infoPool.setY2PlayerActingField(34);
		// weitere Variablen
		infoPool.setX1PlayerFreeKickField(-60); //außerhalb, damit er nix tut
		infoPool.setY1PlayerFreeKickField(-60);
		infoPool.setX2PlayerFreeKickField(-60);
		infoPool.setY2PlayerFreeKickField(-60);
	}
	
	public void handlePlayOn(){
		// Anweisung zur Ballannahme
		if (infoPool.getPassMessage() != null){
			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) {
				double x = infoPool.getX2PlayerActingField() - 5;
				double y = Math.random()*(infoPool.getY2PlayerActingField() - infoPool.getY1PlayerActingField())+infoPool.getY1PlayerActingField();
				infoPool.dribbleTo(x, y);
			}
			
			//Ball ist in unserem Zuständigkeitsbereich
			//Unsere Mannschaft hat den Ball
			else if (infoPool.checkBallPossession() ==  Intelligence.BALL_POSSESSION_WE){
				if (infoPool.distTo(infoPool.getXPlayerHome(), infoPool.getYPlayerHome()) > 1){
					double dir = infoPool.angleToObject(infoPool.getXPlayerHome(), infoPool.getYPlayerHome());
					infoPool.dashToSeeingBall(dir,Intelligence.STAMINA_NEUTRAL_SPEED);
				}
			}
			//Ball ist in unserem Zuständigkeitsbereich
			//Gegnerische Mannschaft hat den Ball
			else if (infoPool.checkBallPossession() ==  Intelligence.BALL_POSSESSION_OPPONENT){
				infoPool.interceptBall();
			}
		} 
        //Ball ist Nicht in unserem Zuständigkeitsbereich
		else{
			//Ball ist Nicht in unserem Zuständigkeitsbereich
			//Wir befinden uns in unserem ActingField
			if  (infoPool.checkPlayerInActingField(6)) {
				if (infoPool.getBall().getDist() > 4){
					double dir = infoPool.angleToObject(infoPool.getBall().getAbsX(), infoPool.getBall().getAbsY());
					infoPool.dashToSeeingBall(dir, Intelligence.STAMINA_NEUTRAL_SPEED);
				}
			}
			//Ball ist Nicht in unserem Zuständigkeitsbereich
			//Wir befinden uns nicht in unserem ActingField
			else {
				if (infoPool.distTo(infoPool.getXPlayerHome(), infoPool.getYPlayerHome()) > 4){
					double dir = infoPool.angleToObject(infoPool.getXPlayerHome(), infoPool.getYPlayerHome());
					infoPool.dashTo(dir,Intelligence.STAMINA_NEUTRAL_SPEED);
				}
			}
		}
		
		
		
	}
	
	public Midfield(String[] args){
		super(args);
	}
	
	public static void main(String[] args) {
		Midfield d = new Midfield(args);
		d.start();
	}
}
