package com.corosus.game.client.assets; import com.badlogic.gdx.math.Vector2; /** * Created by kickban on 7/9/14. */ public enum Orient { UP(0,1), UP_LEFT(-1,0), LEFT(-1,0), DOWN_LEFT(-1,-1), DOWN(0,-1), DOWN_RIGHT(1,-1), RIGHT(1,0), UP_RIGHT(1,-1); public float x, y; public Vector2 vec; Orient(float x, float y){ this.x = x; this.y = y; this.vec = new Vector2(x,y); } public boolean isHorizontal(){ return this.x != 0; } public boolean isVertical(){ return this.y != 0; } public static Orient fromAngle(float angle){ if ((angle >= 22.5) && (angle < 67.5)) return UP_RIGHT; if ((angle >= 67.5) && (angle < 112.5)) return RIGHT; if ((angle >= 112.5) && (angle < 157.5)) return DOWN_RIGHT; if ((angle >= 157.5) && (angle < 202.5)) return DOWN; if ((angle >= 202.5) && (angle < 247.5)) return DOWN_LEFT; if ((angle >= 247.5) && (angle < 292.5)) return LEFT; if ((angle >= 292.5) && (angle < 337.5)) return UP_LEFT; return UP; } public static Orient fromAngleOld(float angle){ if ((angle >= 22.5) && (angle < 67.5)) return UP_RIGHT; if ((angle >= 67.5) && (angle < 112.5)) return UP; if ((angle >= 112.5) && (angle < 157.5)) return UP_LEFT; if ((angle >= 157.5) && (angle < 202.5)) return LEFT; if ((angle >= 202.5) && (angle < 247.5)) return DOWN_LEFT; if ((angle >= 247.5) && (angle < 292.5)) return DOWN; if ((angle >= 292.5) && (angle < 337.5)) return DOWN_RIGHT; return RIGHT; } public static Orient fromVector(Vector2 vec){ return fromAngle(vec.angle()); } }