package modeles;
import gui.*;
import java.io.IOException;
import java.util.Random;
public class Menu {

	public String menuCombat(Monstre mons, Personnage perso, Labyrinthe lab) throws IOException {
		int degat;
		int reponse = 0;
		System.out.println("Un monstre du nom de "+mons.getNom()+" se présente devant vous et il est trés en colère :");
		while (true){
			System.out.println("\t - 1 attaquer\n\t - 2 Potion \n\t- 3 Fuir");
			try{
				reponse=Clavier.entrerClavierInt();
			}catch (Exception e) {
				System.in.read();
			}
			switch (reponse) {
			case 1:
				degat = perso.attaquer(mons);
				System.out.println("Vous avez infligé "+degat+" à votre adversaire.");
				if (!mons.isVivant()) {
					perso.salle.cle(lab);
					System.out.println(perso.remplirBourse());
					return "Votre ennemie trépasse et vous obtenez la clé des portes de la salle.";
				} else {
					System.out.println("Au tour de votre adversaire. Il attaque préparez vous ! ");
					System.out.println("il vous inflige "+ mons.attaquer(perso)+".");
					if (!perso.isVivant()) {
						return "C'est ainsi que vous trépassez sous les coups des ténèbres. Reposez vous héros... Vous avez l'�ternit�.";
					}
					else System.out.println("votre ennemie n'est pas encore à bout achever le !");
				}
				break;

			case 2 :
				if (!perso.getPotion().isEmpty()) {
					perso.utiliser(perso.getPotion().remove(0));
					System.out.println("Vous avez utilisé une potion. Votre vie est maintenant au maximum.");
				} else {
					System.out.println("Il ne vous reste plus de potion. Désolé.");
				}
				break;

			case 3 : 
				System.out.println("Vous tentez de fuir.");
				Random rd = new Random();
				if (rd.nextInt(100)<50) {
					return "Vous avez fuit.";
				} else { 
					System.out.println("Ce fut un échec !");
				}
			}

		}
	}

	public Labyrinthe menuStartGame() {
		System.out.println("L'Aventure vous appelle ! Le choix s'offre à vous, une histoire peut s'écrire une autre peut continuer :\n1) Nouvelle Partie\n2) Continuer votre progression");
		switch(Clavier.entrerClavierInt()) {
		case 1: 
			return new Labyrinthe();
		case 2:
			Generateur ge = new Generateur();
			return ge.labyrinthe();
		default :
			return null;
		}
	}

	public Personnage menuSelection(Labyrinthe lab, JeuSalle salle) {
		System.out.println("Bonjour Etranger, je suis le narrateur de votre histoire. Comment dois-je vous appeler ? ");
		int i = 0;
		for (Personnage per : lab.listePersonnage) {
			System.out.println(i++ + ") "+per.getNom());
		}

		Personnage pers;
		try{
			pers =lab.listePersonnage.get(salle.nb);
			
		}
		catch(Exception e) {
			System.out.println("Le personnage dont vous me parlez n'existe pas.");      
			return null;
		}
		System.out.println("Enchante de vous rencontrer "+pers.getNom()+".");
		return pers;
	}

	public void deplacement(Personnage perso, Salle salle) {
		System.out.println("Choisissez une direction:\n Z) Haut\n S) Bas\n D) Droite\n Q) Gauche");
		switch(Clavier.entrerClavierString()) {
		case "Z":
			System.out.println("Vous allez vers le haut");
			perso.seDeplacer(salle);
			break;
		case "S":
			System.out.println("Vous allez vers le bas");
			perso.seDeplacer(salle);
			break;
		case "D":
			System.out.println("Vous allez vers le droite");
			perso.seDeplacer(salle);
			break;
		case "Q":
			System.out.println("Vous allez vers le gauche");
			perso.seDeplacer(salle);
			break;
		}
	}

	public void Menu_Marche(Marche marche,Personnage perso, Labyrinthe lab) {
		System.out.println("Voulez-vous acheter un objet:(votre bourse :"+perso.getValeurBourse() +")\n1) Oui\n2) Non");
		switch(Clavier.entrerClavierString()) {
		case "a":
			System.out.println("Choisissez un objet:");
			switch(Clavier.entrerClavierString()) {
			case "1":
				System.out.println(marche.creerObjetsAVendre(lab)+"\nVoulez-vous acheter une arme ? (oui/non)");
				String selection=Clavier.entrerClavierString();
				if(selection.compareTo("oui")>0) {
					System.out.println("Quel num�ro pour l'arme ?");
					int valeur = Clavier.entrerClavierInt();
					if (perso.getBourse().Achat(lab.listeArme.get(valeur))>=0) perso.equiper(lab.listeArme.get(valeur));	
				} else {
					System.out.println("Pourquoi Pas une armure alors ? (oui/non)");
					selection=Clavier.entrerClavierString();
					if(selection.compareTo("oui")>0) {
						System.out.println("Quel num�ro pour l'armure ?");
						int valeur = Clavier.entrerClavierInt();
						if (perso.getBourse().Achat(lab.listeArmure.get(valeur))>=0) perso.equiper(lab.listeArmure.get(valeur));
					}
				}
				break;
			case "2":
				System.out.println("Vous sortez du marche.");
				return ;
			}
		}
	}
	public Labyrinthe nouvellePartie() {
		System.out.println("Nouvelle partie!");
		
		return new Labyrinthe();
	}
	
	public Labyrinthe continuer() {
		System.out.println("Continuer");
		Generateur ge = new Generateur();
		return ge.labyrinthe();
	}
	public String textePerso(Labyrinthe lab) {
		String str ="<html>";
		str = str + "<br>Bonjour Etranger, je suis le narrateur de votre histoire. Comment dois-je vous appeler ? </br>";
		int i = 0;
		for (Personnage per : lab.listePersonnage) {
			str =str + "<br>" + (i++ + ") "+per.getNom())+"</br>";
		}
		str=str+"</html>";
		return str;

	}

}
