package etats;

import java.util.HashMap;

@Exercice(4)
public class TravailleurGradue {
	private HumeurGradue hm;
	private int pt;
	private static HashMap<HumeurGradue,
	                       HashMap<Integer, TravailleurGradue>> map = new HashMap<HumeurGradue, HashMap<Integer,TravailleurGradue>>();
	
	private TravailleurGradue(HumeurGradue hm, int pt){
		this.hm = hm;
		this.pt = pt;
	}
	
	public static TravailleurGradue getTravailleur(){
		return getTravailleur(HumeurGradue.CONTENT,5);
	}
	
	public static TravailleurGradue getTravailleur(HumeurGradue hm, int pt){
		HashMap<Integer, TravailleurGradue> mapHumeur= map.get(hm);
		if(mapHumeur == null){
			mapHumeur=new HashMap<Integer, TravailleurGradue>();
			map.put(hm,mapHumeur);
		}
		TravailleurGradue t=mapHumeur.get(pt);
		if ( t== null){
			t= new TravailleurGradue(hm,pt);
			mapHumeur.put(pt,t);
		}
		return t;
	}
	
	public TravailleurGradue travail() throws AngryException{
		return getTravailleur(hm.travail(pt-1),pt-1);
	}
	
	public TravailleurGradue repos(){
		return getTravailleur(hm.repos(pt+1),pt+1);
	}
	
	public TravailleurGradue nouvelles(){
		System.out.println(hm+" pt="+pt);
		return this;
	}	
	
}
