package modele;
import java.util.ArrayList;
import java.util.Hashtable;

import javax.swing.JLabel;

import controleur.Controle;
import controleur.GLOBAL;
import outils.connexion.Connection;

/**
 * Gestion du jeu côté serveur
 *
 */
public class JeuServeur extends Jeu {

	/**
	 * Collection de murs
	 */
	private ArrayList<Mur> lesMurs = new ArrayList<Mur>() ;
	/**
	 * Collection de joueurs
	 */
	private Hashtable<Connection, Joueur> lesJoueurs = new Hashtable<Connection, Joueur>() ;
	
	
	private Connection connection;
	
	/**
	 * Constructeur
	 */
	public JeuServeur(Controle control) {
		this.controle = control;
	}
	
	@Override
	public void connexion(Connection connection) {
		this.lesJoueurs.put(connection, new Joueur(this));
	}

	@Override
	public void reception(Connection connection, Object info) {
		String splitted[] = ((String)info).split(GLOBAL.separateur);
		switch(splitted[0]) {
		case "pseudo":
			controle.evenementJeuServeur("ajout panel murs", connection);
			String pseudo = splitted[1];
			int numPerso = Integer.parseInt(splitted[2]);
			System.out.println(info);
			this.lesJoueurs.get(connection).initPerso(pseudo, numPerso, lesMurs, lesJoueurs.values());
		}
	}
	
	@Override
	public void deconnexion() {
	}

	/**
	 * Envoi d'une information vers tous les clients
	 * fais appel plusieurs fois à l'envoi de la classe Jeu
	 */
	public void envoi() {
	}

	/**
	 * Génération des murs
	 */
	public void constructionMurs() {
		for(int i = 0; i<20; i++){
			Mur leMur = new Mur();
			lesMurs.add(leMur);
			this.controle.evenementJeuServeur("ajout mur", leMur.getJLabel());;
		}
	}
	
	public void ajoutJLabelJeuArene(JLabel obj) {
		controle.evenementJeuServeur("ajout jlabel jeu", obj);
	}
	
	public void envoiJeuATous() {
		for(Connection joueur : lesJoueurs.keySet()) {
			controle.evenementJeuServeur("ajout joueurs", joueur);
		}
	}
	
}
