// Path: src/main/java/utilties/entities/Empty.java
// public class Empty extends Entity {
// 
// 
//     /**
//      * Empty Entity.  Placed in a tile without any Objects
//      */
//     public Empty(Point location) {
//         this.location = location;
//         this.entityType = EntityType.EMPTY;
//     }
// 
// }
// 
// Path: src/main/java/utilties/entities/Entity.java
// public abstract class Entity {
// 
//     protected EntityType entityType = null;
// 
//     protected Point location;
// 
//     /*
//     Entity Type enum
//      */
//     public enum EntityType {
//         EMPTY, PLAYER
//     }
// 
// 
//     public void setLocation(Point location) {
//         this.location = location;
//     }
// 
//     public Point getLocation() {
//         return this.location;
//     }
// 
//     public EntityType getEntityType() {
//         return this.entityType;
//     }
// 
// 
// }
// 
// Path: src/main/java/utilties/entities/Player.java
// public class Player extends Entity {
// 
//     private int id;
//     private int health;
//     private int damage;
//     private boolean isShielding;
//     private int shieldStrength;
// 
//     /**
//      * @param id       Player ID
//      * @param location Location of where Player will be added
//      */
//     public Player(int id, Point location) {
//         this.id = id;
//         this.health = 100;
//         this.damage = 10;
//         this.location = location;
//         entityType = EntityType.PLAYER;
//         this.isShielding = false;
//         this.shieldStrength = 5;
//     }
// 
//     /**
//      * Get the ID of the player
//      *
//      * @return ID of player
//      */
//     public int getId() {
//         return this.id;
//     }
// 
//     /**
//      * Get health of Player
//      *
//      * @return Health of Player
//      */
//     public int getHealth() {
//         return this.health;
//     }
// 
// 
//     /**
//      * Set health of player
//      *
//      * @param health Health to change to
//      */
//     public void setHealth(int health) {
//         this.health = health;
//     }
// 
// 
//     public int getDamage() {
//         return damage;
//     }
// 
//     public void setDamage(int damage) {
//         this.damage = damage;
//     }
// 
// 
//     public boolean isShielding() {
//         return isShielding;
//     }
// 
//     public void setShielding(boolean shielding) {
//         isShielding = shielding;
//     }
// 
//     public int getShieldStrength() {
//         return shieldStrength;
//     }
// 
//     public void setShieldStrength(int shieldStrength) {
//         this.shieldStrength = shieldStrength;
//     }
// 
// }


import org.mapeditor.core.Map;
import org.mapeditor.core.MapLayer;
import org.mapeditor.core.Tile;
import org.mapeditor.core.TileLayer;
import utilties.entities.Empty;
import utilties.entities.Entity;
import utilties.entities.Player;
import java.awt.*;
import java.util.ArrayList;
        this._numberOfColumns = columns;
        this._numberOfRows = rows;
        initializeMap(columns, rows);
    }

    /**
     * Initializes a 2D representation of the game map
     *
     * @param columns Number of columns
     * @param rows    Number of rows
     */
    private void initializeMap(int columns, int rows) {
        //Iterate through columns/rows and set tiles for every point for 2D array.
        //Initializes all non player tiles to empty.
        for (int x = 0; x < columns; x++) {
            for (int y = 0; y < rows; y++) {

                Point currentLocation = new Point(x, y);

                //If the current coordinates are the player's location on map
                if (_playerTile.getLocation().equals(currentLocation)) {
                    _entityTiles[x][y] = _playerTile;
                    //If the current coordinates are the opponent's location on map
                } else if (_opponentTile.getLocation().equals(currentLocation)) {
                    _entityTiles[x][y] = _opponentTile;
//                    System.out.println(_entityTiles[x][y].getEntityType() == Entity.EntityType.PLAYER);
                } else {
                    //Grab the empty tile reference at that location
                    TileLayer playerLayer = (TileLayer) this._gameMap.getLayer(PLAYER_LAYER);
                    //Create empty tile in location
// Path: src/main/java/utilties/entities/Empty.java
// public class Empty extends Entity {
// 
// 
//     /**
//      * Empty Entity.  Placed in a tile without any Objects
//      */
//     public Empty(Point location) {
//         this.location = location;
//         this.entityType = EntityType.EMPTY;
//     }
// 
// }
// 
// Path: src/main/java/utilties/entities/Entity.java
// public abstract class Entity {
// 
//     protected EntityType entityType = null;
// 
//     protected Point location;
// 
//     /*
//     Entity Type enum
//      */
//     public enum EntityType {
//         EMPTY, PLAYER
//     }
// 
// 
//     public void setLocation(Point location) {
//         this.location = location;
//     }
// 
//     public Point getLocation() {
//         return this.location;
//     }
// 
//     public EntityType getEntityType() {
//         return this.entityType;
//     }
// 
// 
// }
// 
// Path: src/main/java/utilties/entities/Player.java
// public class Player extends Entity {
// 
//     private int id;
//     private int health;
//     private int damage;
//     private boolean isShielding;
//     private int shieldStrength;
// 
//     /**
//      * @param id       Player ID
//      * @param location Location of where Player will be added
//      */
//     public Player(int id, Point location) {
//         this.id = id;
//         this.health = 100;
//         this.damage = 10;
//         this.location = location;
//         entityType = EntityType.PLAYER;
//         this.isShielding = false;
//         this.shieldStrength = 5;
//     }
// 
//     /**
//      * Get the ID of the player
//      *
//      * @return ID of player
//      */
//     public int getId() {
//         return this.id;
//     }
// 
//     /**
//      * Get health of Player
//      *
//      * @return Health of Player
//      */
//     public int getHealth() {
//         return this.health;
//     }
// 
// 
//     /**
//      * Set health of player
//      *
//      * @param health Health to change to
//      */
//     public void setHealth(int health) {
//         this.health = health;
//     }
// 
// 
//     public int getDamage() {
//         return damage;
//     }
// 
//     public void setDamage(int damage) {
//         this.damage = damage;
//     }
// 
// 
//     public boolean isShielding() {
//         return isShielding;
//     }
// 
//     public void setShielding(boolean shielding) {
//         isShielding = shielding;
//     }
// 
//     public int getShieldStrength() {
//         return shieldStrength;
//     }
// 
//     public void setShieldStrength(int shieldStrength) {
//         this.shieldStrength = shieldStrength;
//     }
// 
// }


// Path: src/main/java/utilties/models/EntityMap.java
import org.mapeditor.core.Map;
import org.mapeditor.core.MapLayer;
import org.mapeditor.core.Tile;
import org.mapeditor.core.TileLayer;
import utilties.entities.Empty;
import utilties.entities.Entity;
import utilties.entities.Player;
import java.awt.*;
import java.util.ArrayList;

        this._numberOfColumns = columns;
        this._numberOfRows = rows;
        initializeMap(columns, rows);
    }

    /**
     * Initializes a 2D representation of the game map
     *
     * @param columns Number of columns
     * @param rows    Number of rows
     */
    private void initializeMap(int columns, int rows) {
        //Iterate through columns/rows and set tiles for every point for 2D array.
        //Initializes all non player tiles to empty.
        for (int x = 0; x < columns; x++) {
            for (int y = 0; y < rows; y++) {

                Point currentLocation = new Point(x, y);

                //If the current coordinates are the player's location on map
                if (_playerTile.getLocation().equals(currentLocation)) {
                    _entityTiles[x][y] = _playerTile;
                    //If the current coordinates are the opponent's location on map
                } else if (_opponentTile.getLocation().equals(currentLocation)) {
                    _entityTiles[x][y] = _opponentTile;
//                    System.out.println(_entityTiles[x][y].getEntityType() == Entity.EntityType.PLAYER);
                } else {
                    //Grab the empty tile reference at that location
                    TileLayer playerLayer = (TileLayer) this._gameMap.getLayer(PLAYER_LAYER);
                    //Create empty tile in location
                    _entityTiles[x][y] = new EntityTile(currentLocation, new Empty(currentLocation), playerLayer.getTileAt(currentLocation.x, currentLocation.y));