public void addPlayerThread(PlayerThread pt) {
		allThreads.add(pt);
		
		//	If first player, prompt for total players
		if(allThreads.size() == 1) {
			//	Assign player as player 1
			pt.setPlayerNum(1);
			ActionMessage am = new ActionMessage(ASSIGN_PLAYER_NUM);
			am.destination = 1;
			am.intData = 1;
			addPendingMessage(am);
					
			//	Allow player to choose number of total players in game
			am = new ActionMessage(CHOOSE_PLAYERS);
			am.destination = 1;
			addPendingMessage(am);
		}
		else {
			//	Set appropriate player numbers
			int num = allThreads.size();
			pt.setPlayerNum(num);
			ActionMessage am = new ActionMessage(ASSIGN_PLAYER_NUM);
			am.destination = num;
			am.intData = num;
			addPendingMessage(am);
			
			//	If still waiting for all players to join tell player to wait
			if(num != numPlayers) {
				am = new ActionMessage(WAIT_FOR_PLAYERS);
				am.destination = num;
				addPendingMessage(am);
			}
			else {
				System.out.println("All players have joined!");
				listener.killThread = true;
				
				//	Create the players
				gameBoard.createPlayers(numPlayers);
				
				//	Initialize ship panel
				shipChoicePanel = new ShipChoicePanel(1, ships);
				
				//	Delegate the choosing of ships
				for(int i = 0; i < allThreads.size(); i++) {
					shipChoicePanel.setCurrPlayer(allThreads.get(i).getPlayerNum());
					
					//	Allow this player to choose
					ActionMessage choose = new ActionMessage(CHOOSE_SHIP);
					choose.destination = allThreads.get(i).getPlayerNum();
					choose.scp = shipChoicePanel;
					addPendingMessage(choose);
					
					//	Tell all other players to wait
					for(int j = 0; j < allThreads.size(); j++) {
						if(j == i)
							continue;
						
						ActionMessage wait = new ActionMessage(WAIT_TO_CHOOSE_SHIP);
						wait.destination = allThreads.get(j).getPlayerNum();
						wait.intData = allThreads.get(i).getPlayerNum();
						addPendingMessage(wait);
					}
					
					//	Wait until the player has a ship
					while(gameBoard.getPlayer(allThreads.get(i).getPlayerNum()).getShip() == null) { Thread.yield(); }
				}
				
				//	Start the game
				gameBoard.setShips();
				
				//	Player 1 goes first
				for(int i = 0; i < allThreads.size(); i++) {
					BoardTransferMessage btm = new BoardTransferMessage(gameBoard, 0, i+1, 1);
					addPendingMessage(btm);
				}
			}
		}
	}