package com.jln.ld;

import com.badlogic.gdx.graphics.g2d.Animation;
import com.badlogic.gdx.graphics.g2d.Animation.PlayMode;
import com.badlogic.gdx.graphics.g2d.TextureRegion;

public abstract class GameUtils {

	/**
	 * @param textureRegion la grille de sprites
	 * @param nbFrames le nombre de frame
	 * @param line l'index de la ligne
	 * @param col l'index de la colonne
	 * @param frameDuration la durée de chaque frame
	 * @return l'objet animation créé
	 */
	public static Animation loadAnimation(TextureRegion[][] textureRegion, int nbFrames, int line, float frameDuration, PlayMode mode){
		TextureRegion[] frames = new TextureRegion[nbFrames];
		for (int i = 0; i < nbFrames; i++) {
			frames[i] = textureRegion[line][i];
		}
		Animation a = new Animation(frameDuration, frames);
		a.setPlayMode(mode);
		return a;
	}
	
	/**
	 * @param dir1
	 * @param dir2
	 * @return vrai si les 2 directions sont opposées
	 */
	public static boolean isOpositeDirection(int dir1, int dir2){
		if((dir1 == Shared.DIR_DOWN && dir2 == Shared.DIR_UP) || (dir2 == Shared.DIR_DOWN && dir1 == Shared.DIR_UP)){
			return true;
		}
		if((dir1 == Shared.DIR_LEFT && dir2 == Shared.DIR_RIGHT) || (dir2 == Shared.DIR_RIGHT && dir1 == Shared.DIR_LEFT)){
			return true;
		}
		return false;
	}
	
	/**
	 * 
	 * @param number
	 * @param min
	 * @param max
	 * @return le parametre dans les limites.(si le parametre est superieur au max ou inferieur au min, on retourne le max ou le min.)
	 */
	public static float stayInLimit(float number, float min, float max){
		float f = number;
		if(f>max){
			f = max;
		}else if(f<min){
			f = min;
		}
		return f;
	}
}
