// Path: src/game/Agent.java
// public static enum TurnState {
// 	Ready,	//ready to move
// 	Moved,	//moved
// 	Done,	//used ability
// }
// 
// Path: src/util/Vec.java
// public class Vec {
// 	public Vec() {
// 		mX = mY = 0;
// 	}
// 	public Vec(int x, int y) {
// 		mX = x;
// 		mY = y;
// 	}
// 	public int getX() {
// 		return mX;
// 	}
// 	public int getY() {
// 		return mY;
// 	}
// 	public Vec add(Vec other) {
// 		return new Vec(mX + other.mX, mY + other.mY);
// 	}
// 	public Vec sub(Vec other) {
// 		return new Vec(mX - other.mX, mY - other.mY);
// 	}
// 	public Vec mul(int other) {
// 		return new Vec(mX*other, mY*other);
// 	}
// 	public Vec div(int other) {
// 		return new Vec(mX/other, mY/other);
// 	}
// 	public Vec neg() {
// 		return new Vec(-mX, -mY);
// 	}
// 	public boolean eq(Vec other) {
// 		return mX == other.mX && mY == other.mY;
// 	}
// 	public boolean eq(int x, int y) {
// 		return mX == x && mY == y;
// 	}
// 	public FVec fvec() {
// 		return new FVec((float)mX, (float)mY);
// 	}
// 	public static Vec[] getDirs() {
// 		return mDirs;
// 	}
// 	public static Vec[] getHorizontalDirs() {
// 		return mHorizontalDirs;
// 	}
// 	public static Vec[] getVerticalDirs() {
// 		return mVerticalDirs;
// 	}
// 	private int mX, mY;
// 	private static final Vec[] mDirs = {new Vec(0, 1), new Vec(0, -1), new Vec(1, 0), new Vec(-1, 0)};
// 	private static final Vec[] mVerticalDirs = {new Vec(0, 1), new Vec(0, -1)};
// 	private static final Vec[] mHorizontalDirs = {new Vec(1, 0), new Vec(-1, 0)};
// 	
// 	public String toString() {
// 		return "Vec(" + mX + ", " + mY + ")";
// 	}
// }


import game.Agent.TurnState;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import util.Vec;
package game;




public class DataBattle {
	/////////////// board utility classes /////////////
	
	//how to draw a tile
	public static enum TileOverlay {
		None,	//no overlay
		Neg,	//red -		(neg)ative stuff
		Pos,	//blue -	(pos)itive stuff
		Mod,	//green - 	(mod)ification to the tile
		Sel,	//white - 	(sel)ection
		Move,	//box -		This is in movement range
		MoveTo,	//arrow -	(move to) here
		MoveToNorth,
		MoveToSouth,
		MoveToEast,
		MoveToWest
	}
	
	//board tile
	public static class Tile {
		boolean Upload = false;
		boolean Select = false;
		boolean Flood = false;
		boolean Data = false;
		int FloodNum = 0;
		boolean Filled = true;
		int Credit = 0;
		Agent Agent = null;
		TileOverlay Overlay = TileOverlay.None;
	}
	
	///////////// signals for view /////////////
	
	//signal agent damaged
	public static interface ListenerAgentDamage {
// Path: src/game/Agent.java
// public static enum TurnState {
// 	Ready,	//ready to move
// 	Moved,	//moved
// 	Done,	//used ability
// }
// 
// Path: src/util/Vec.java
// public class Vec {
// 	public Vec() {
// 		mX = mY = 0;
// 	}
// 	public Vec(int x, int y) {
// 		mX = x;
// 		mY = y;
// 	}
// 	public int getX() {
// 		return mX;
// 	}
// 	public int getY() {
// 		return mY;
// 	}
// 	public Vec add(Vec other) {
// 		return new Vec(mX + other.mX, mY + other.mY);
// 	}
// 	public Vec sub(Vec other) {
// 		return new Vec(mX - other.mX, mY - other.mY);
// 	}
// 	public Vec mul(int other) {
// 		return new Vec(mX*other, mY*other);
// 	}
// 	public Vec div(int other) {
// 		return new Vec(mX/other, mY/other);
// 	}
// 	public Vec neg() {
// 		return new Vec(-mX, -mY);
// 	}
// 	public boolean eq(Vec other) {
// 		return mX == other.mX && mY == other.mY;
// 	}
// 	public boolean eq(int x, int y) {
// 		return mX == x && mY == y;
// 	}
// 	public FVec fvec() {
// 		return new FVec((float)mX, (float)mY);
// 	}
// 	public static Vec[] getDirs() {
// 		return mDirs;
// 	}
// 	public static Vec[] getHorizontalDirs() {
// 		return mHorizontalDirs;
// 	}
// 	public static Vec[] getVerticalDirs() {
// 		return mVerticalDirs;
// 	}
// 	private int mX, mY;
// 	private static final Vec[] mDirs = {new Vec(0, 1), new Vec(0, -1), new Vec(1, 0), new Vec(-1, 0)};
// 	private static final Vec[] mVerticalDirs = {new Vec(0, 1), new Vec(0, -1)};
// 	private static final Vec[] mHorizontalDirs = {new Vec(1, 0), new Vec(-1, 0)};
// 	
// 	public String toString() {
// 		return "Vec(" + mX + ", " + mY + ")";
// 	}
// }


// Path: src/game/DataBattle.java
import game.Agent.TurnState;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import util.Vec;

package game;




public class DataBattle {
	/////////////// board utility classes /////////////
	
	//how to draw a tile
	public static enum TileOverlay {
		None,	//no overlay
		Neg,	//red -		(neg)ative stuff
		Pos,	//blue -	(pos)itive stuff
		Mod,	//green - 	(mod)ification to the tile
		Sel,	//white - 	(sel)ection
		Move,	//box -		This is in movement range
		MoveTo,	//arrow -	(move to) here
		MoveToNorth,
		MoveToSouth,
		MoveToEast,
		MoveToWest
	}
	
	//board tile
	public static class Tile {
		boolean Upload = false;
		boolean Select = false;
		boolean Flood = false;
		boolean Data = false;
		int FloodNum = 0;
		boolean Filled = true;
		int Credit = 0;
		Agent Agent = null;
		TileOverlay Overlay = TileOverlay.None;
	}
	
	///////////// signals for view /////////////
	
	//signal agent damaged
	public static interface ListenerAgentDamage {
		public void onAgentDamage(Vec sq);