package pkgIntelligenz;

import pkgGUI.InOut;
import pkgGUI.Textbaustein;
import pkgSpieluniversum.Held;
import pkgSpieluniversum.Item;
import pkgSpieluniversum.NPC;
import pkgSpieluniversum.Welt;
import pkgIntelligenz.Parser;

public class Befehle {
	
	public static void kaempfen(String npc, Held held) {
		if(held.getAktuellerRaum().getNpc()==null) {
			InOut.textAusgeben(Textbaustein.NPC_NICHT_IM_RAUM);
		}
		else {
			NPC npcImRaum = held.getAktuellerRaum().getNpc();
			if(npcImRaum.getName().toLowerCase().equals(held.getAktuellerRaum().getNpc().getName().toLowerCase())) {
				if(!npcImRaum.isIstAmLeben()) {
					InOut.textAusgeben(Textbaustein.NPC_IST_TOT);
				}
				else {
					//NPC bekämpfen
					int schadenNPC = npcImRaum.getGesamtschaden();
					int schadenHeld = held.getGesamtschaden();
					boolean kampfLaeuft = true;
					int runde = 1;
					while(kampfLaeuft) {
						InOut.textAusgeben("Runde " + runde + ": ");
						npcImRaum.setGesundheit(npcImRaum.getGesundheit()-schadenHeld);
						InOut.textAusgeben(held.getName()+" schlägt zu! Verursachter Schaden: "+schadenHeld);
						if(npcImRaum.getGesundheit()<=0) {
							npcImRaum.setIstAmLeben(false);
							kampfLaeuft=false;
							InOut.trennerAusgeben(20, "*");
							InOut.textAusgeben(npcImRaum.getName()+" wurde besiegt!");
							int heldAlterSchaden = schadenHeld;
							int heldNeuerSchaden = schadenHeld;
						for(Item npcLoot : npcImRaum.getItemListe()) {
							held.getItemListe().add(npcLoot);
							InOut.textAusgeben("Du lootest: "+npcLoot.getBezeichnung()+" ("+npcLoot.getSchaden()+" Schaden)");
							heldNeuerSchaden+=npcLoot.getSchaden();
						}
						InOut.textAusgeben("Alter Schaden: "+heldAlterSchaden+", neuer Schaden: "+heldNeuerSchaden);
						InOut.textAusgeben(held.getName()+": "+held.getGesundheit()+ " Gesundheit");
							break;
						}
						else {
							held.setGesundheit(held.getGesundheit()-schadenNPC);
							InOut.textAusgeben(npcImRaum.getName()+" schlägt zurück! Verursachter Schaden: "+schadenNPC);
							if(held.getGesundheit()<=0) {
								held.setIstAmLeben(false);
								kampfLaeuft=false;
								InOut.trennerAusgeben(20, "*");
								InOut.textAusgeben("Du wurdest besiegt!Das Spiel ist aus");
								try {
									Thread.sleep(3000);
								} catch (InterruptedException e) {
									// TODO Auto-generated catch block
									e.printStackTrace();
								}
								System.exit(0);
							}
						}
						runde++;
						InOut.textAusgeben(held.getName()+": "+held.getGesundheit()+ " Gesundheit");
						InOut.textAusgeben(npcImRaum.getName()+": "+npcImRaum.getGesundheit()+ " Gesundheit");
						InOut.trennerAusgeben();
						try {
							Thread.sleep(1000);
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}
					
					
			
				}
			}
		}
	}
	
	public static void nehmen(String item, Held held) {
		//Prüfen, ob irgendein ein Item im Raum ist
		if(held.getAktuellerRaum().getItem()==null) {
		//Im Raum ist kein Item
			InOut.textAusgeben(Textbaustein.GEGENSTAND_NICHT_IM_RAUM);
		}
		
		else  {
			//Im Raum ist ein Item
			Item i = held.getAktuellerRaum().getItem();
			if(i.getBezeichnung().toLowerCase().equals(item)){
			//Das Item im Raum entspricht der Usereingabe
				held.getItemListe().add(i);
				held.getAktuellerRaum().setItem(null);
				InOut.textAusgebenOhneUmbruch(Textbaustein.GEGENSTAND_GENOMMEN + i.getBezeichnung());	
			}
			else {
				InOut.textAusgeben(Textbaustein.GEGENSTAND_NICHT_IM_RAUM);
			}
		}  
			
		}

	}

