// Path: core/src/com/github/fauu/helix/TilePermission.java
// public enum TilePermission {
// 
//   OBSTACLE("Obstacle", -1),
//   PASSAGE("Area Passage", -1),
//   RAMP("Ramp", -1),
//   LEVEL0("Level 0", 0),
//   LEVEL1("Level 1", 1),
//   LEVEL2("Level 2", 2),
//   LEVEL3("Level 3", 3),
//   LEVEL4("Level 4", 4),
//   LEVEL5("Level 5", 5),
//   LEVEL6("Level 6", 6),
//   LEVEL7("Level 7", 7);
// 
//   private String name;
// 
//   private int elevation;
// 
//   private static final Map<String, TilePermission> nameToValue
//       = new HashMap<String, TilePermission>();
// 
//   static {
//     for (TilePermission permission : TilePermission.values()) {
//       nameToValue.put(permission.name, permission);
//     }
//   }
// 
//   private TilePermission(String name, int elevation) {
//     this.name = name;
//     this.elevation = elevation;
//   }
// 
//   public String getName() {
//     return name;
//   }
// 
//   public int getElevation() {
//     return elevation;
//   }
// 
//   public static TilePermission fromString(String name) {
//     if (nameToValue.containsKey(name)) {
//       return nameToValue.get(name);
//     }
// 
//     throw new NoSuchElementException(name + " not found");
//   }
// 
// }
// 
// Path: core/src/com/github/fauu/helix/util/IntVector2.java
// public class IntVector2 {
// 
//   public int x;
// 
//   public int y;
// 
//   public IntVector2() { }
// 
//   public IntVector2(int x, int y) {
//     set(x, y);
//   }
// 
//   public IntVector2(IntVector2 source) {
//     set(source);
//   }
// 
//   public void set(int x, int y) {
//     this.x = x;
//     this.y = y;
//   }
// 
//   public void set(IntVector2 source) {
//     set(source.x, source.y);
//   }
// 
//   public IntVector2 add(IntVector2 other) {
//     set(x + other.x, y + other.y);
// 
//     return this;
//   }
// 
//   public IntVector2 sub(IntVector2 other) {
//     set(x - other.x, y - other.y);
// 
//     return this;
//   }
// 
//   public IntVector2 cpy() {
//     return new IntVector2(x, y);
//   }
// 
//   public IntVector2 scl(int value) {
//     x *= value;
//     y  *= value;
// 
//     return this;
//   }
// 
//   public Vector2 toVector2() {
//     return new Vector2(x, y);
//   }
// 
//   public Vector3 toVector3() {
//     return new Vector3(x, y, 0);
//   }
// 
//   @Override
//   public String toString() {
//     return "[" + x + "," + y + "]";
//   }
// 
// }


import com.github.fauu.helix.util.IntVector2;
import com.github.fauu.helix.TilePermission;
/*
 * Copyright (C) 2014-2016 Helix Engine Developers 
 * (http://github.com/fauu/HelixEngine)
 *
 * This software is licensed under the GNU General Public License
 * (version 3 or later). See the COPYING file in this distribution.
 *
 * You should have received a copy of the GNU Library General Public License
 * along with this software. If not, see <http://www.gnu.org/licenses/>.
 *
 * Authored by: Piotr Grabowski <fau999@gmail.com>
 */

package com.github.fauu.helix.datum;


public class Tile {

  private TilePermission permissions;

  private TileAreaPassage areaPassage;

  public Tile() {
    setPermissions(TilePermission.LEVEL0);
  }

  public TilePermission getPermissions() {
    return permissions;
  }

  public void setPermissions(TilePermission permissions) {
    this.permissions = permissions;
  }

  public TileAreaPassage getAreaPassage() {
    return areaPassage;
  }

  public void setAreaPassage(TileAreaPassage passage) {
    areaPassage = passage;
  }

// Path: core/src/com/github/fauu/helix/TilePermission.java
// public enum TilePermission {
// 
//   OBSTACLE("Obstacle", -1),
//   PASSAGE("Area Passage", -1),
//   RAMP("Ramp", -1),
//   LEVEL0("Level 0", 0),
//   LEVEL1("Level 1", 1),
//   LEVEL2("Level 2", 2),
//   LEVEL3("Level 3", 3),
//   LEVEL4("Level 4", 4),
//   LEVEL5("Level 5", 5),
//   LEVEL6("Level 6", 6),
//   LEVEL7("Level 7", 7);
// 
//   private String name;
// 
//   private int elevation;
// 
//   private static final Map<String, TilePermission> nameToValue
//       = new HashMap<String, TilePermission>();
// 
//   static {
//     for (TilePermission permission : TilePermission.values()) {
//       nameToValue.put(permission.name, permission);
//     }
//   }
// 
//   private TilePermission(String name, int elevation) {
//     this.name = name;
//     this.elevation = elevation;
//   }
// 
//   public String getName() {
//     return name;
//   }
// 
//   public int getElevation() {
//     return elevation;
//   }
// 
//   public static TilePermission fromString(String name) {
//     if (nameToValue.containsKey(name)) {
//       return nameToValue.get(name);
//     }
// 
//     throw new NoSuchElementException(name + " not found");
//   }
// 
// }
// 
// Path: core/src/com/github/fauu/helix/util/IntVector2.java
// public class IntVector2 {
// 
//   public int x;
// 
//   public int y;
// 
//   public IntVector2() { }
// 
//   public IntVector2(int x, int y) {
//     set(x, y);
//   }
// 
//   public IntVector2(IntVector2 source) {
//     set(source);
//   }
// 
//   public void set(int x, int y) {
//     this.x = x;
//     this.y = y;
//   }
// 
//   public void set(IntVector2 source) {
//     set(source.x, source.y);
//   }
// 
//   public IntVector2 add(IntVector2 other) {
//     set(x + other.x, y + other.y);
// 
//     return this;
//   }
// 
//   public IntVector2 sub(IntVector2 other) {
//     set(x - other.x, y - other.y);
// 
//     return this;
//   }
// 
//   public IntVector2 cpy() {
//     return new IntVector2(x, y);
//   }
// 
//   public IntVector2 scl(int value) {
//     x *= value;
//     y  *= value;
// 
//     return this;
//   }
// 
//   public Vector2 toVector2() {
//     return new Vector2(x, y);
//   }
// 
//   public Vector3 toVector3() {
//     return new Vector3(x, y, 0);
//   }
// 
//   @Override
//   public String toString() {
//     return "[" + x + "," + y + "]";
//   }
// 
// }


// Path: core/src/com/github/fauu/helix/datum/Tile.java
import com.github.fauu.helix.util.IntVector2;
import com.github.fauu.helix.TilePermission;

/*
 * Copyright (C) 2014-2016 Helix Engine Developers 
 * (http://github.com/fauu/HelixEngine)
 *
 * This software is licensed under the GNU General Public License
 * (version 3 or later). See the COPYING file in this distribution.
 *
 * You should have received a copy of the GNU Library General Public License
 * along with this software. If not, see <http://www.gnu.org/licenses/>.
 *
 * Authored by: Piotr Grabowski <fau999@gmail.com>
 */

package com.github.fauu.helix.datum;


public class Tile {

  private TilePermission permissions;

  private TileAreaPassage areaPassage;

  public Tile() {
    setPermissions(TilePermission.LEVEL0);
  }

  public TilePermission getPermissions() {
    return permissions;
  }

  public void setPermissions(TilePermission permissions) {
    this.permissions = permissions;
  }

  public TileAreaPassage getAreaPassage() {
    return areaPassage;
  }

  public void setAreaPassage(TileAreaPassage passage) {
    areaPassage = passage;
  }

  public static Tile get(Tile[][] tiles, IntVector2 coords) {