package game;

import account.Account;
import account.AccountManager;
import room.Room;
import room.RoomManager;
import game.Game;

public class TestPlayerSearchVisitorjava extends Game {

	public static void main(String[] args) {
		
		AccountManager acmgr = AccountManager.getInstance();
		RoomManager roommgr = RoomManager.getInstance();
		GameManager gamemgr = GameManager.getInstance();
		
		/* Test時はRoomのMAX_MENBERを6に変更する */
		
		String TEST_SID = "7";
		
		//Player12人作成
		for(int i=0; i<12; i++) {
			acmgr.registration("name"+i, "pass", String.valueOf(i));
		}
		
		//Player12人作成確認
		for(int i=0; i<12; i++) {
			Account ac = new Account();
			ac = acmgr.getAccount(String.valueOf(i));
		}
		
		//room 2部屋作成　name0~5　と　name6〜11　の部屋
		roommgr.createRoom("room0-5", "mode0", "pass0", "0");
		roommgr.createRoom("room6-11", "mode1", "pass1", "6");
		
		//room0-5に　name1〜5　を追加
		Account ac0 = new Account();
		Room room0 = new Room();
		ac0 = acmgr.getAccount("0");
		room0 = ac0.getRoom();
		
		for(int i=1; i<=5; i++) {
			Account ac = new Account();
			ac = acmgr.getAccount(String.valueOf(i));
			room0.addMember(ac);
		}

		//room0-5のチーム分け、game作成
		room0.divideTeam();
		
		//room6-11に　name7〜11　を追加
		Account ac6 = new Account();
		ac6 = acmgr.getAccount("6");
		Room room6 = ac6.getRoom();
		
		for(int i=7; i<=11; i++) {
			Account ac = new Account();
			ac = acmgr.getAccount(String.valueOf(i));
			room6.addMember(ac);
		}

		//room6-11のチーム分け、game作成
		room6.divideTeam();
		
		Game mygame = gamemgr.getGame(0);
		
		
/***********************以下チーム分け表示分*************************/
		
System.out.println("==========room0-5==========");
		Game game0 = room0.getGame();
System.out.println("  --------RedTeam--------  ");
		for(int i=0; i<3; i++) {
			Account ac = game0.getTeamMember(i,0);
System.out.println("   Name:"+ac.getName()+" sId:"+ac.getsId());
		}
System.out.println("  -------BlueTeam--------  ");
		for(int i=0; i<3; i++) {
			Account ac = game0.getTeamMember(i,1);
System.out.println("   Name:"+ac.getName()+" sId:"+ac.getsId());
		}
System.out.println("===========================");
System.out.println("");
		
		//room6-11のチーム表示
System.out.println("==========room6-11=========");
		Game game6 = room6.getGame();
System.out.println("  --------RedTeam--------  ");
		for(int i=0; i<3; i++) {
			Account ac = game6.getTeamMember(i,0);
System.out.println("   Name:"+ac.getName()+" sId:"+ac.getsId());
		}
System.out.println("  -------BlueTeam--------  ");
		for(int i=0; i<3; i++) {
			Account ac = game6.getTeamMember(i,1);
System.out.println("   Name:"+ac.getName()+" sId:"+ac.getsId());
		}
System.out.println("===========================");
System.out.println("");

/***********************以上チーム分け表示分*************************/

		
		//visitor
		PlayerSearchVisitor visitor = new PlayerSearchVisitor(TEST_SID);
		gamemgr.accept(visitor);
		
		
		Game game = visitor.getGame();
		Team team = visitor.getTeam();
		Account account = visitor.getPlayerAccount();
		
		String teamColor;
		if(account.getTeam() == 0){
			teamColor = "RedTeam";
		} else {
			teamColor = "BlueTeam";
		}
		
System.out.println("search sid " + TEST_SID );
System.out.println("----------Result----------");
System.out.println("Name : " + account.getName());
System.out.println("sId  : " + account.getsId());
System.out.println("Room : " + game.getRoomName());
System.out.println("Team : " + teamColor);
		
	}
		
}