package net.sf.bloodball.fit;

import java.awt.Point;

import fit.Fixture;

import net.sf.bloodball.fit.parser.ParsingUtilities;
import net.sf.bloodball.fit.system.TestSystem;
import net.sf.bloodball.model.player.IPlayer;

public class Preparation extends Fixture {

  public void initModel() {
    TestSystem.prepare();
  }

  public void setPlayer(String teamHashNumberSlashXCommaY) {
    IPlayer player = getPlayer(teamHashNumberSlashXCommaY);
    Point position = getPosition(teamHashNumberSlashXCommaY);
    TestSystem.setPlayer(player, position);
  }

  public void setBallPossessingPlayer(String teamHashNumberSlashXCommaY) {
    IPlayer player = getPlayer(teamHashNumberSlashXCommaY);
    Point position = getPosition(teamHashNumberSlashXCommaY);
    TestSystem.setBallPossingPlayer(player, position);
  }

  public void setBall(String XCommaY) {
    TestSystem.setBall(ParsingUtilities.parsePoint(XCommaY));
  }

  private IPlayer getPlayer(String teamHashNumberSlashXCommaY) {
    int slashIndex = teamHashNumberSlashXCommaY.indexOf('/');
    String playerString = teamHashNumberSlashXCommaY.substring(0, slashIndex).trim();
    return ParsingUtilities.parsePlayer(playerString);
  }

  private Point getPosition(String teamHashNumberSlashXCommaY) {
    int slashIndex = teamHashNumberSlashXCommaY.indexOf('/');
    String positionString = teamHashNumberSlashXCommaY.substring(slashIndex + 1).trim();
    return ParsingUtilities.parsePoint(positionString);
  }

}