// Path: core/src/com/github/fauu/helix/Direction.java
// public enum Direction {
// 
//   SOUTH(new IntVector2(0, -1)), SOUTHEAST(null),
//   EAST(new IntVector2(1, 0)), NORTHEAST(null),
//   NORTH(new IntVector2(0, 1)), NORTHWEST(null),
//   WEST(new IntVector2(-1, 0)), SOUTHWEST(null);
// 
//   private IntVector2 vector;
// 
//   private Direction(IntVector2 vector) {
//     this.vector = vector;
//   }
// 
//   public IntVector2 getVector() {
//     return vector;
//   }
// 
//   @Override
//   public String toString() {
//     switch (this) {
//       case SOUTH: return "South";
//       case SOUTHEAST: return "Southeast";
//       case EAST: return "East";
//       case NORTHEAST: return "Northeast";
//       case NORTH: return "North"; // by
//       case NORTHWEST: return "Northwest";
//       case WEST: return "West";
//       case SOUTHWEST: return "Southwest";
//       default: throw new IllegalArgumentException();
//     }
//   }
// 
// }
// 
// Path: core/src/com/github/fauu/helix/displayable/CharacterDisplayable.java
// public class CharacterDisplayable extends DecalDisplayable {
// 
//   @Wire
//   private AssetManager assetManager;
// 
//   protected AnimationSet animations;
// 
//   public CharacterDisplayable(IntVector3 logicalPosition,
//                               String animationSetName,
//                               TextureRegion shadowTexture) {
//     super(logicalPosition.toVector3().add(DEFAULT_DISPLACEMENT));
// 
//     animations = new AnimationSet(animationSetName);
// 
//     AnimatedDecal decal
//         = AnimatedDecal.newAnimatedDecal(DEFAULT_DIMENSIONS.x,
//                                          DEFAULT_DIMENSIONS.y,
//                                          animations.getDefault(),
//                                          true);
// 
//     decal.setKeepSize(true);
//     decal.setPosition(position);
//     decal.rotateX(DEFAULT_ROTATION);
// 
//     setMainDecal(decal);
// 
//     Decal shadow = new Decal();
// 
//     shadow.setPosition(position);
//     shadow.translate(DEFAULT_SHADOW_DISPLACEMENT);
//     shadow.setDimensions(DEFAULT_SHADOW_DIMENSIONS.x,
//                          DEFAULT_SHADOW_DIMENSIONS.y);
//     shadow.setColor(1, 1, 1, .35f);
//     shadow.setTextureRegion(shadowTexture);
//     shadow.setBlending(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
// 
//     setShadowDecal(shadow);
//   }
// 
//   @Override
//   public void animate(AnimationType type, Direction direction, float duration) {
//     AnimatedDecal animatedDecal = ((AnimatedDecal) this.mainDecal);
// 
//     animatedDecal.stop();
//     animatedDecal.setAnimated(animations.get(type, direction, duration));
//     animatedDecal.play();
//   }
// 
//   @Override
//   public void orientate(Direction direction) {
//     AnimatedDecal animatedDecal = ((AnimatedDecal) this.mainDecal);
// 
//     animatedDecal.setAnimated(animations.get(AnimationType.IDLE, direction));
//     animatedDecal.play();
//   }
// 
// }
// 
// Path: core/src/com/github/fauu/helix/util/IntVector3.java
// public class IntVector3 {
// 
//   public int x;
// 
//   public int y;
// 
//   public int z;
// 
//   public IntVector3() { }
// 
//   public IntVector3(int x, int y, int z) {
//     set(x, y, z);
//   }
// 
//   public IntVector3(IntVector2 source) {
//     set(source.x, source.y, 0);
//   }
// 
//   public void set(int x, int y, int z) {
//     this.x = x;
//     this.y = y;
//     this.z = z;
//   }
// 
//   public void set(IntVector3 source) {
//     set(source.x, source.y, source.z);
//   }
// 
//   public IntVector3 add(IntVector2 other) {
//     set(x + other.x, y + other.y, z);
// 
//     return this;
//   }
// 
//   public IntVector3 add(IntVector3 other) {
//     set(x + other.x, y + other.y, z + other.z);
// 
//     return this;
//   }
// 
//   public IntVector3 cpy() {
//     return new IntVector3(x, y, z);
//   }
// 
//   public Vector3 toVector3() {
//     return new Vector3(x, y, z);
//   }
// 
//   public IntVector2 toIntVector2() {
//     return new IntVector2(x, y);
//   }
// 
// }


import com.artemis.Entity;
import com.artemis.Manager;
import com.artemis.annotations.Wire;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.github.fauu.helix.Direction;
import com.github.fauu.helix.component.*;
import com.github.fauu.helix.displayable.CharacterDisplayable;
import com.github.fauu.helix.util.IntVector3;
/*
 * 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.manager;


public class PlayerManager extends Manager {

  @Wire
  private AssetManager assetManager;

  private Entity player;

  @Override
  protected void initialize() {
// Path: core/src/com/github/fauu/helix/Direction.java
// public enum Direction {
// 
//   SOUTH(new IntVector2(0, -1)), SOUTHEAST(null),
//   EAST(new IntVector2(1, 0)), NORTHEAST(null),
//   NORTH(new IntVector2(0, 1)), NORTHWEST(null),
//   WEST(new IntVector2(-1, 0)), SOUTHWEST(null);
// 
//   private IntVector2 vector;
// 
//   private Direction(IntVector2 vector) {
//     this.vector = vector;
//   }
// 
//   public IntVector2 getVector() {
//     return vector;
//   }
// 
//   @Override
//   public String toString() {
//     switch (this) {
//       case SOUTH: return "South";
//       case SOUTHEAST: return "Southeast";
//       case EAST: return "East";
//       case NORTHEAST: return "Northeast";
//       case NORTH: return "North"; // by
//       case NORTHWEST: return "Northwest";
//       case WEST: return "West";
//       case SOUTHWEST: return "Southwest";
//       default: throw new IllegalArgumentException();
//     }
//   }
// 
// }
// 
// Path: core/src/com/github/fauu/helix/displayable/CharacterDisplayable.java
// public class CharacterDisplayable extends DecalDisplayable {
// 
//   @Wire
//   private AssetManager assetManager;
// 
//   protected AnimationSet animations;
// 
//   public CharacterDisplayable(IntVector3 logicalPosition,
//                               String animationSetName,
//                               TextureRegion shadowTexture) {
//     super(logicalPosition.toVector3().add(DEFAULT_DISPLACEMENT));
// 
//     animations = new AnimationSet(animationSetName);
// 
//     AnimatedDecal decal
//         = AnimatedDecal.newAnimatedDecal(DEFAULT_DIMENSIONS.x,
//                                          DEFAULT_DIMENSIONS.y,
//                                          animations.getDefault(),
//                                          true);
// 
//     decal.setKeepSize(true);
//     decal.setPosition(position);
//     decal.rotateX(DEFAULT_ROTATION);
// 
//     setMainDecal(decal);
// 
//     Decal shadow = new Decal();
// 
//     shadow.setPosition(position);
//     shadow.translate(DEFAULT_SHADOW_DISPLACEMENT);
//     shadow.setDimensions(DEFAULT_SHADOW_DIMENSIONS.x,
//                          DEFAULT_SHADOW_DIMENSIONS.y);
//     shadow.setColor(1, 1, 1, .35f);
//     shadow.setTextureRegion(shadowTexture);
//     shadow.setBlending(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
// 
//     setShadowDecal(shadow);
//   }
// 
//   @Override
//   public void animate(AnimationType type, Direction direction, float duration) {
//     AnimatedDecal animatedDecal = ((AnimatedDecal) this.mainDecal);
// 
//     animatedDecal.stop();
//     animatedDecal.setAnimated(animations.get(type, direction, duration));
//     animatedDecal.play();
//   }
// 
//   @Override
//   public void orientate(Direction direction) {
//     AnimatedDecal animatedDecal = ((AnimatedDecal) this.mainDecal);
// 
//     animatedDecal.setAnimated(animations.get(AnimationType.IDLE, direction));
//     animatedDecal.play();
//   }
// 
// }
// 
// Path: core/src/com/github/fauu/helix/util/IntVector3.java
// public class IntVector3 {
// 
//   public int x;
// 
//   public int y;
// 
//   public int z;
// 
//   public IntVector3() { }
// 
//   public IntVector3(int x, int y, int z) {
//     set(x, y, z);
//   }
// 
//   public IntVector3(IntVector2 source) {
//     set(source.x, source.y, 0);
//   }
// 
//   public void set(int x, int y, int z) {
//     this.x = x;
//     this.y = y;
//     this.z = z;
//   }
// 
//   public void set(IntVector3 source) {
//     set(source.x, source.y, source.z);
//   }
// 
//   public IntVector3 add(IntVector2 other) {
//     set(x + other.x, y + other.y, z);
// 
//     return this;
//   }
// 
//   public IntVector3 add(IntVector3 other) {
//     set(x + other.x, y + other.y, z + other.z);
// 
//     return this;
//   }
// 
//   public IntVector3 cpy() {
//     return new IntVector3(x, y, z);
//   }
// 
//   public Vector3 toVector3() {
//     return new Vector3(x, y, z);
//   }
// 
//   public IntVector2 toIntVector2() {
//     return new IntVector2(x, y);
//   }
// 
// }


// Path: core/src/com/github/fauu/helix/manager/PlayerManager.java
import com.artemis.Entity;
import com.artemis.Manager;
import com.artemis.annotations.Wire;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.github.fauu.helix.Direction;
import com.github.fauu.helix.component.*;
import com.github.fauu.helix.displayable.CharacterDisplayable;
import com.github.fauu.helix.util.IntVector3;

/*
 * 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.manager;


public class PlayerManager extends Manager {

  @Wire
  private AssetManager assetManager;

  private Entity player;

  @Override
  protected void initialize() {
    IntVector3 playerPosition = new IntVector3(16, 16, 0);