package Gamepackage;
import java.lang.*;
import java.util.*;
import Gamepackage.*;

public class PlayerList{
	public int number_of_players;
	public Map players;
	
	//Erzeugt playerlist mit einer HashMap von Players
	public PlayerList(){
		players = new HashMap();
	}
	
	//Erzeugt einen neuen Spieler mit Namen name 
	public void newplayer(String socket, String name){
		players.put(name,new Player(socket));
		number_of_players++;
	}
	
	//Pruft ob Spieler mit Namen name existiert
	public boolean contact(String name){
		Player pl = (Player) players.get(name);
		if (pl == null) {return(true);}
		else {return(false);}
	}
	
	//Schreibt alle Spieler aus die sich auf dem Server befinden und ihre Statuse 
	public String writelist(){
		String str = new String();
		Iterator it = players.keySet().iterator();


		while(it.hasNext()){
			String aKey = (String) it.next();
			Player pl = (Player) players.get(aKey);
			str = str +"Socket: "+pl.socket+" Name: "+ pl.name +" Status: "+ pl.status+" Score(wins/looses): "+ pl.score_wins+"/"+pl.score_looses+"\n"; 	
		}
		return str;
	}
	
	//Diese Metoden endern die Spieler und Spiel Statuse 
	public void start(String name2, String name1){
		Player pl2 = (Player) players.get(name2);
		Player pl1 = (Player) players.get(name1);
		pl2.status1 = 1;
		pl1.status1 = 0;
		pl1.game = new Game(name1,name2);
		pl2.game = pl1.game;
		pl1.status = "playing";
		pl2.status = "playing";
	}
	
	public void wait(String name){
		Player pl = (Player) players.get(name);
		pl.status = "waiting";
	}
		
	public void reject(Game ourGame){
		Player pl2 = (Player) players.get(ourGame.pl2name);
		Player pl1 = (Player) players.get(ourGame.pl1name);
		pl2.status1 = 0;
		pl1.status1 = 0;
		pl2.status = "Online";	
		pl1.status = "Online";
		
	}

	public void accept(Game ourGame){
		Player pl1 = (Player) players.get(ourGame.pl1name);
		pl1.game.status = 1;
	}

	public void change(String name1, String name2){
		int change = 0; 
		Player pl1 = (Player) players.get(name1);
		Player pl2 = (Player) players.get(name2);
		change = pl1.status1;
		pl1.status1 = pl2.status1;
		pl2.status1 = change;
	
	}

	public void win(String name1, String name2){
		Player pl1 = (Player) players.get(name1);
		Player pl2 = (Player) players.get(name2);
		pl2.status1 = 0;
		pl1.status1 = 0;
		pl1.game.status = 0;
		pl2.status = "Online";	
		pl1.status = "Online";
		pl1.score_wins++;
		pl2.score_looses++;
	}
	
	public void nowin(String name1, String name2){
		Player pl1 = (Player) players.get(name1);
		Player pl2 = (Player) players.get(name2);
		pl2.status1 = 0;
		pl1.status1 = 0;
		pl1.game.status = 0;
		pl2.status = "Online";	
		pl1.status = "Online";
		pl2.wincondition = 1;
	}
	
		
}