package net.fourbytes.shadow.utils; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.math.Matrix4; import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.*; import net.fourbytes.shadow.Particle; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; public final class Garbage { private Garbage() { } //Caches public final static Cache<Rectangle> rects = new Cache<Rectangle>(Rectangle.class); public final static Cache<Vector2> vec2s = new Cache<Vector2>(Vector2.class); public final static Cache<Color> colors = new Cache<Color>(Color.class); public final static Cache<MultiObject> multiobjs = new Cache<MultiObject>(MultiObject.class, 64); //Utility / helper fields public final static Array<Particle> particles = new Array<Particle>(Particle.class); public final static IntMap<String> mapIntString = new IntMap<String>(); public final static Matrix4 matrix1x1 = new OrthographicCamera(1, 1).combined; public final static Json json = new Json(); public final static JsonReader jsonReader = new JsonReader(); public final static DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HHmmss"); //Utility / helper methods public final static int getPreviousKey(IntIntMap map, int start, int alt) { return getNextKey(map, start, alt, -1); } public final static int getNextKey(IntIntMap map, int start, int alt) { return getNextKey(map, start, alt, 1); } private final static int getNextKey(IntIntMap map, int start, int alt, int dir) { for (int i = start; (dir>0)?(i < alt):(i > alt); i += dir) { if (map.containsKey(i)) { return i; } } return alt; } public static String dateCurrent() { return Garbage.dateFormat.format(Calendar.getInstance().getTime()); } public static String getStringForInt(int i) { String str = mapIntString.get(i); if (str != null) { return str; } str = Integer.toString(i); mapIntString.put(i, str); return str; } public static JsonValue get(JsonValue value, String name) { JsonValue current = value.child; while (current != null && !name.equalsIgnoreCase(current.name)) { current = current.next; } return current; } }