MapDisplay.java

package com.vikingz.campustycoon.UI.Systems;

import com.vikingz.campustycoon.Game.Maps.Map;
import com.vikingz.campustycoon.Game.Tiles.Tile;
import com.vikingz.campustycoon.UI.Camera;
import com.vikingz.campustycoon.UI.Components.MapTile;
import com.vikingz.campustycoon.UI.Components.SpriteSheet;
import com.vikingz.campustycoon.UI.Components.Component.Anchor;
import com.vikingz.campustycoon.Util.Drawer;

import java.util.List;

/**
 * This class is used to display the map.
 */
public class MapDisplay {
	public static final int Layer = -2;
	private Map map;
	private SpriteSheet spriteSheet;
	
	/**
	 * Constructor for the MapDisplay class.
	 * @param Map
	 */
	public MapDisplay(Map Map) {
		map = Map;
		initialise();
	}
	
	/**
	 * Draw the map to the screen.
	 */
	public void drawMap() {
		for (int row = 0; row < map.height; row++) {
			List<Tile> mapRow = map.grid.get(row);
			for (int col = 0; col < map.width; col++) {
				Tile tile = mapRow.get(col);
				MapTile drawTile = new MapTile(
					spriteSheet, 
					tile.getTileID(), 
					getX(col), getY(row),
					col, row,
					map.height);
				drawTile.setAnchor(Anchor.BottomLeft);
				Drawer.add(Layer, drawTile);
			}
		}
	}
	
	/**
	 * Get the x position
	 * @param x
	 * @return
	 */
	private int getX(int x) {
		return (int)(spriteSheet.spriteWidth * x * Camera.zoom);
	}
	
	/**
	 * Get the y position
	 * @param y
	 * @return
	 */
	private int getY(int y) {
		return (int)(spriteSheet.spriteHeight * (map.height - 1 - y) * Camera.zoom);
	}
	
	/**
	 * Initialise the map display.
	 */
	private void initialise() {
		spriteSheet = new SpriteSheet(
			"Tiles\\SpriteMap.png", 
			12, 12, 
			Tile.SpriteSize, Tile.SpriteSize);
	}
}