// Path: src/main/java/pl/letscode/tanks/engine/objects/Axis2D.java
// public enum Axis2D {
// 
// 	NORTH(0, -1), SOUTH(0, 1), EAST(1, 0), WEST(-1, 0), NONE(0, 0);
// 
// 	private double x;
// 	private double y;
// 
// 	private Axis2D(double x, double y) {
// 		this.x = x;
// 		this.y = y;
// 	}
// 
// 	public double getX() {
// 		return this.x;
// 	}
// 
// 	public double getY() {
// 		return this.y;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return Objects.toStringHelper(this).addValue(this.x).addValue(this.y)
// 				.toString();
// 	}
// 
// }
// 
// Path: src/main/java/pl/letscode/tanks/engine/objects/BaseGameObject.java
// public abstract class BaseGameObject implements PhysicsObject {
// 
// 	@JsonIgnore
// 	protected Body body;
// 	protected long id;
// 
// 	public BaseGameObject(Body body, long id) {
// 		this.body = body;
// 		this.id = id;
// 	}
// 
// 	public long getId() {
// 		return id;
// 	}
// 
// 	@JsonIgnore
// 	public Body getBody() {
// 		return body;
// 	}
// 
// 	@Override
// 	public void setPosition(final Position position) {
// 		this.body.getTransform().setTranslation(position.getX(),
// 				position.getY());
// 	}
// 
// 	@Override
// 	public Position getPosition() {
// 		Transform transform = this.body.getTransform();
// 		return new Position(transform.getTranslationX(),
// 				transform.getTranslationY());
// 	}
// 
// }
// 
// Path: src/main/java/pl/letscode/tanks/engine/objects/Position.java
// public class Position {
// 
// 	private double x;
// 
// 	private double y;
// 
// 	public Position(double x, double y) {
// 		this.x = x;
// 		this.y = y;
// 	}
// 
// 	public double getX() {
// 		return x;
// 	}
// 
// 	public double getY() {
// 		return y;
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return Objects.hashCode(this.x, this.y);
// 	}
// 
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null || !(obj instanceof Position))
// 			return false;
// 		Position that = (Position) obj;
// 		if (this.x == that.x && this.y == that.y)
// 			return true;
// 		return false;
// 	}
// 
// 	public String toString() {
// 		return Objects.toStringHelper(this).add("x", this.x).add("y", this.y)
// 				.toString();
// 	}
// 
// }
// 
// Path: src/main/java/pl/letscode/tanks/engine/objects/Shootable.java
// public interface Shootable extends PhysicsObject {
// 
// 	boolean isDead();
// 
// 	void shootMe();
// 
// 	int getHP();
// 
// }
// 
// Path: src/main/java/pl/letscode/tanks/player/Player.java
// public class Player {
// 
// 	private String name;
// 	private int score;
// 
// 	/* Constructors */
// 	
// 	public Player(String name, int score) {
// 		this.name = name;
// 		this.score = score;
// 	}
// 
// 	/* Read */
// 	
// 	public String getName() {
// 		return this.name;
// 	}
// 	
// 	public int getScore() {
// 		return this.score;
// 	}
// 	
// 	/* Commands */
// 	
// 	public void addFrag() {
// 		this.score++;
// 	}
// 
// 	/* Utilities */
// 	
// 	@Override
// 	public boolean equals(Object object) {
// 		if (object == null)
// 			return false;
// 		if (this == object)
// 			return true;
// 		if (object instanceof Player) {
// 			Player player = (Player) object;
// 			if (player.getName().equals(this.name))
// 				return true;
// 			else
// 				return false;
// 		} else
// 			return false;
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return Objects.hashCode(this.name);
// 	}
// 
// }


import org.dyn4j.dynamics.Body;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import pl.letscode.tanks.engine.objects.Axis2D;
import pl.letscode.tanks.engine.objects.BaseGameObject;
import pl.letscode.tanks.engine.objects.Position;
import pl.letscode.tanks.engine.objects.Shootable;
import pl.letscode.tanks.player.Player;
import com.google.common.base.Objects;
	public boolean isDead() {
		return this.hp < 1;
	}

	@Override
	public void shootMe() {
		this.hp--;
	}

	@Override
	public int getHP() {
		return this.hp;
	}

	public Axis2D getMovementDirection() {
		return this.movementDirection;
	}

	public Position getVelocity() {
		return new Position(this.getBody().getLinearVelocity().x, this
				.getBody().getLinearVelocity().y);
	}
	
	public Player getPlayer() {
		return this.player;
	}

	public boolean changeTankDirection(Axis2D newDirection) {
		if (this.movementDirection.equals(newDirection)) {
			return false;
// Path: src/main/java/pl/letscode/tanks/engine/objects/Axis2D.java
// public enum Axis2D {
// 
// 	NORTH(0, -1), SOUTH(0, 1), EAST(1, 0), WEST(-1, 0), NONE(0, 0);
// 
// 	private double x;
// 	private double y;
// 
// 	private Axis2D(double x, double y) {
// 		this.x = x;
// 		this.y = y;
// 	}
// 
// 	public double getX() {
// 		return this.x;
// 	}
// 
// 	public double getY() {
// 		return this.y;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return Objects.toStringHelper(this).addValue(this.x).addValue(this.y)
// 				.toString();
// 	}
// 
// }
// 
// Path: src/main/java/pl/letscode/tanks/engine/objects/BaseGameObject.java
// public abstract class BaseGameObject implements PhysicsObject {
// 
// 	@JsonIgnore
// 	protected Body body;
// 	protected long id;
// 
// 	public BaseGameObject(Body body, long id) {
// 		this.body = body;
// 		this.id = id;
// 	}
// 
// 	public long getId() {
// 		return id;
// 	}
// 
// 	@JsonIgnore
// 	public Body getBody() {
// 		return body;
// 	}
// 
// 	@Override
// 	public void setPosition(final Position position) {
// 		this.body.getTransform().setTranslation(position.getX(),
// 				position.getY());
// 	}
// 
// 	@Override
// 	public Position getPosition() {
// 		Transform transform = this.body.getTransform();
// 		return new Position(transform.getTranslationX(),
// 				transform.getTranslationY());
// 	}
// 
// }
// 
// Path: src/main/java/pl/letscode/tanks/engine/objects/Position.java
// public class Position {
// 
// 	private double x;
// 
// 	private double y;
// 
// 	public Position(double x, double y) {
// 		this.x = x;
// 		this.y = y;
// 	}
// 
// 	public double getX() {
// 		return x;
// 	}
// 
// 	public double getY() {
// 		return y;
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return Objects.hashCode(this.x, this.y);
// 	}
// 
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null || !(obj instanceof Position))
// 			return false;
// 		Position that = (Position) obj;
// 		if (this.x == that.x && this.y == that.y)
// 			return true;
// 		return false;
// 	}
// 
// 	public String toString() {
// 		return Objects.toStringHelper(this).add("x", this.x).add("y", this.y)
// 				.toString();
// 	}
// 
// }
// 
// Path: src/main/java/pl/letscode/tanks/engine/objects/Shootable.java
// public interface Shootable extends PhysicsObject {
// 
// 	boolean isDead();
// 
// 	void shootMe();
// 
// 	int getHP();
// 
// }
// 
// Path: src/main/java/pl/letscode/tanks/player/Player.java
// public class Player {
// 
// 	private String name;
// 	private int score;
// 
// 	/* Constructors */
// 	
// 	public Player(String name, int score) {
// 		this.name = name;
// 		this.score = score;
// 	}
// 
// 	/* Read */
// 	
// 	public String getName() {
// 		return this.name;
// 	}
// 	
// 	public int getScore() {
// 		return this.score;
// 	}
// 	
// 	/* Commands */
// 	
// 	public void addFrag() {
// 		this.score++;
// 	}
// 
// 	/* Utilities */
// 	
// 	@Override
// 	public boolean equals(Object object) {
// 		if (object == null)
// 			return false;
// 		if (this == object)
// 			return true;
// 		if (object instanceof Player) {
// 			Player player = (Player) object;
// 			if (player.getName().equals(this.name))
// 				return true;
// 			else
// 				return false;
// 		} else
// 			return false;
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return Objects.hashCode(this.name);
// 	}
// 
// }


// Path: src/main/java/pl/letscode/tanks/engine/objects/tank/TankObject.java
import org.dyn4j.dynamics.Body;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import pl.letscode.tanks.engine.objects.Axis2D;
import pl.letscode.tanks.engine.objects.BaseGameObject;
import pl.letscode.tanks.engine.objects.Position;
import pl.letscode.tanks.engine.objects.Shootable;
import pl.letscode.tanks.player.Player;
import com.google.common.base.Objects;

	public boolean isDead() {
		return this.hp < 1;
	}

	@Override
	public void shootMe() {
		this.hp--;
	}

	@Override
	public int getHP() {
		return this.hp;
	}

	public Axis2D getMovementDirection() {
		return this.movementDirection;
	}

	public Position getVelocity() {
		return new Position(this.getBody().getLinearVelocity().x, this
				.getBody().getLinearVelocity().y);
	}
	
	public Player getPlayer() {
		return this.player;
	}

	public boolean changeTankDirection(Axis2D newDirection) {
		if (this.movementDirection.equals(newDirection)) {
			return false;
		} else {