public AtlasMap(String ref, ResourceManager rm) throws SlickException {
		super(ref);
		this.rm = rm;
		log = rm.getLog();
		items = new ArrayList<Item>();
		healers = new ArrayList<Healer>();

		//Building the collision array (column-major)
		collisionID = this.getTileSet(0).firstGID;
		red = new int[getWidth()][getHeight()];
		lights = new LightNode[getWidth()][getHeight()];
		for (int i = 0; i < getHeight(); i++){
			for (int j = 0; j < getWidth(); j++){
				int tileID = getTileId(j,i,0);
				if (tileID == collisionID){
					red[j][i] = 1;
				}
				if (tileID == collisionID + 4){
					LightNode light = new LightNode(j,i);
					lights[j][i] = light;
					numLights += 1;
				}
			}
		}
		
		//Building map objects
		spawns = new ArrayList<Spawn>();
		markers = new ArrayList<AreaMarker>();
		int groupCount = getObjectGroupCount();
		for (int i = 0; i < groupCount; i++){
			int objCount = getObjectCount(i);
			for (int j = 0; j < objCount; j++){
				String s = getObjectType(i, j);
				int objX = getObjectX(i,j);
				int objY = getObjectY(i,j);
				if (s.equals("Spawn")){
					s = getObjectProperty(i,j,"name", "");
					MobStat ms = rm.getMobStat(s);
					s = ms.getImageName();
					Spawn spawn = new Spawn(objX, objY, rm.getSprite(s), ms, this);
					spawns.add(spawn);
					totalSpawns += 1;
				}
				else if (s.equals("Start")){
					int x = objX/16;
					int y = objY/16;
					startX = x;
					startY = y;
				}
				else if (s.equals("Healer")){
					int width = getObjectWidth(i, j);
					int height = getObjectHeight(i,j);
					int tx = objX / 16;
					int ty = objY  /16;
					objX += Settings.CAM_X;
					objY += Settings.CAM_Y;
					Healer heal = new Healer(objX,objY,tx,ty,width,height);
					healers.add(heal);
				}
				else if (s.equals("Area")){
					int tx = objX / 16;
					int ty = objY / 16;
					int w = getObjectWidth(i, j);
					int h = getObjectHeight(i,j);
					String temp = getObjectProperty(i, j, "name", "N/A");
					objX += Settings.CAM_X;
					objY += Settings.CAM_Y;
					AreaMarker marker = new AreaMarker(objX, objY, tx, ty, w, h, temp);
					markers.add(marker);
				}
				
			}
		}
		
	}