package projects.SetFlooding.nodes.nodeImplementations;

import java.awt.Color;
import java.awt.Graphics;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;

import projects.SetFlooding.nodes.messages.Data;
import projects.defaultProject.nodes.messages.Msg;
import projects.defaultProject.nodes.nodeImplementations.CNode;
import sinalgo.gui.transformation.PositionTransformation;


public class SFNode extends CNode {
 
	int v,r;
	public int d=-1;
	HashMap<Integer,Integer> VSet,New;
  
	public void initialization() {
		// A compléter
	}	

	public void ronde() {
		// A compléter
	}

	// Regularly est exécuté après la réception de message de la ronde précédente, si elle existe
	// Donc New est correctement affecté
	public void regularly() {
		ronde();
	}
	
	// réception des messages de la ronde courante
	public void receipt(LinkedList<Msg> inbox) {
			New.clear();
			for(Msg m: inbox) {
				Data d=(Data) m;
				for (Map.Entry<Integer,Integer> x : d.H.entrySet()) {
					if(!this.VSet.containsKey(x.getKey())) {
							this.VSet.put(x.getKey(), x.getValue());
							this.New.put(x.getKey(), x.getValue());
					}
				}	
			}
	}
 
	
	Color couleur() {
		if(this.Crashed()) return Color.black;
		if(d==-1) {
			if(this.v==0) return Color.cyan;
			return Color.pink;
		}
		if(d==0) return Color.blue;
		return Color.red;
	}
	

  
    public void draw(Graphics g, PositionTransformation pt, boolean highlight){	 
    	String text="";
    	if(this.Id()>0)	text= ""+this.Id()+"";
    	this.setColor(couleur());
    	super.drawNodeAsDiskWithText(g, pt, highlight, text, 30, Color.black);
	 
    }	
    
}
