
import java.io.InputStream;
import java.util.Vector;

public class MapInfo {
	Vector brickWall = new Vector();
	Vector metalWall = new Vector();
	Vector grassWall = new Vector();
	Vector waterWall = new Vector();
	Vector enemyPosition = new Vector();
	Vector enemyType = new Vector();
	TankManager tankManager;
	public boolean read = true;
	int mapSize;
	int playerLocationX;
	int playerLocationY;
	int baseLocationX;
	int baseLocationY;
	int brickWallLocationX;
	int brickWallLocationY;
	int brickWallWidth;
	int brickWallHeight;
	int metalWallLocationX;
	int metalWallLocationY;
	int metalWallWidth;
	int metalWallHeight;
	int grassWallLocationX;
	int grassWallLocationY;
	int grassWallWidth;
	int grassWallHeight;
	int waterWallLocationX;
	int waterWallLocationY;
	int waterWallWidth;
	int waterWallHeight;
	int enemyLocation;
	int enemyAllNr;
	int enemyMaxNr;
	int enemyTy;

	private String readMap(String resource) {
		String strReturn = null;
		InputStream in = null;
		byte[] word_utf = new byte[1024];// new byte[1024];
		char[] toChar = new char[512];
		int rectLocationX;
		int rectLocationY;
		int rectWidth;
		int rectHeight;

		try {
			in = getClass().getResourceAsStream(resource);
			in.read(word_utf);
			in.close();
			strReturn = new String(word_utf, "UTF-8");
		} catch (Exception e) {
			this.read = false;
			return null;
		} finally {
		}
		in = null;
		System.out.println(strReturn);
		toChar = strReturn.toCharArray();
		for (int i = 0; i < 512; i++) {
			if (toChar[i] == 'a') {
				mapSize = ((int) toChar[i + 1] - 48) * 10 + (int) toChar[i + 2] - 48;
				System.out.println("mapSize = " + mapSize);
			}
			if (toChar[i] == 'b') {
				brickWallLocationX = (((int) toChar[i + 1] - 48) * 10 + (int) toChar[i + 2] - 48);
				brickWallLocationY = (((int) toChar[i + 3] - 48) * 10 + (int) toChar[i + 4] - 48);
				brickWallWidth = (((int) toChar[i + 5] - 48) * 10 + (int) toChar[i + 6] - 48);
				brickWallHeight = (((int) toChar[i + 7] - 48) * 10 + (int) toChar[i + 8] - 48);
				brickWall.addElement(new Wall(tankManager, brickWallLocationX, brickWallLocationY,
						brickWallWidth, brickWallHeight, 31));
			}
			if (toChar[i] == 'c') {
				metalWallLocationX = (((int) toChar[i + 1] - 48) * 10 + (int) toChar[i + 2] - 48);
				metalWallLocationY = (((int) toChar[i + 3] - 48) * 10 + (int) toChar[i + 4] - 48);
				metalWallWidth = (((int) toChar[i + 5] - 48) * 10 + (int) toChar[i + 6] - 48);
				metalWallHeight = (((int) toChar[i + 7] - 48) * 10 + (int) toChar[i + 8] - 48);
				metalWall.addElement(new Wall(tankManager, metalWallLocationX, metalWallLocationY,
						metalWallWidth, metalWallHeight, 33));
			}
			if (toChar[i] == 'd') {
				grassWallLocationX = (((int) toChar[i + 1] - 48) * 10 + (int) toChar[i + 2] - 48);
				grassWallLocationY = (((int) toChar[i + 3] - 48) * 10 + (int) toChar[i + 4] - 48);
				grassWallWidth = (((int) toChar[i + 5] - 48) * 10 + (int) toChar[i + 6] - 48);
				grassWallHeight = (((int) toChar[i + 7] - 48) * 10 + (int) toChar[i + 8] - 48);
				grassWall.addElement(new Wall(tankManager, grassWallLocationX, grassWallLocationY,
						grassWallWidth, grassWallHeight, 32));
			}
			if (toChar[i] == 'e') {
				waterWallLocationX = (((int) toChar[i + 1] - 48) * 10 + (int) toChar[i + 2] - 48);
				waterWallLocationY = (((int) toChar[i + 3] - 48) * 10 + (int) toChar[i + 4] - 48);
				waterWallWidth = (((int) toChar[i + 5] - 48) * 10 + (int) toChar[i + 6] - 48);
				waterWallHeight = (((int) toChar[i + 7] - 48) * 10 + (int) toChar[i + 8] - 48);
				waterWall.addElement(new Wall(tankManager, waterWallLocationX, waterWallLocationY,
						waterWallWidth, waterWallHeight, 34));
			}
			if (toChar[i] == 'f') {
				enemyLocation = ((int) toChar[i + 1] - 48) * 1000 + ((int) toChar[i + 2] - 48)
						* 100 + ((int) toChar[i + 3] - 48) * 10 + (int) toChar[i + 4] - 48;
				Integer temp = new Integer(enemyLocation);
				enemyPosition.addElement(temp);
			}
			if (toChar[i] == 'g') {
				enemyAllNr = ((int) toChar[i + 1] - 48) * 10 + (int) toChar[i + 2] - 48;
			}
			if (toChar[i] == 'h') {
				enemyMaxNr = ((int) toChar[i + 1] - 48) * 10 + (int) toChar[i + 2] - 48;
			}
			if (toChar[i] == 'i') {
				enemyTy = ((int) toChar[i + 1] - 48) * 10 + (int) toChar[i + 2] - 48;
				Integer temp = new Integer(enemyTy);
				enemyType.addElement(temp);
			}
			if (toChar[i] == 'j') {
				playerLocationX = ((int) toChar[i + 1] - 48) * 10 + (int) toChar[i + 2] - 48;
				playerLocationY = ((int) toChar[i + 3] - 48) * 10 + (int) toChar[i + 4] - 48;
			}
			if (toChar[i] == 'k') {
				baseLocationX = ((int) toChar[i + 1] - 48) * 10 + (int) toChar[i + 2] - 48;
				baseLocationY = ((int) toChar[i + 3] - 48) * 10 + (int) toChar[i + 4] - 48;
			}
		}

		return strReturn;

	}

	public MapInfo(TankManager tankM, int lv) {
		this.tankManager = tankM;
		String x = "/map" + lv + ".txt";
		this.readMap(x);
	}

}
