public Game(String mapName, GameType gameType,
			LinkedList<Player> playerOrder, Player me) {

		// sets the player order object = to the one given
		this.playerOrder = playerOrder;
		this.gameType = gameType;
		this.player = me;
		this.player.setGame(this);

		// Set up game depending upon the gametype
		if (gameType == GameType.AItype1vs1) {
			// 1vs1 (1human 1AI)
			AI aiPlayer1 = new AI(this);
			Teams.addAiPlayer();

			Teams.addToEmptyTeam(aiPlayer1);

			this.playerOrder.add(aiPlayer1);
			// set difficulty
			aiPlayer1.setDifficulty(GameType.getDifficulty());

		} else if (gameType == GameType.AItype2vs2) {
			// 2vs2 (1human 2ai)
			AI aiPlayer1 = new AI(this);
			Teams.addAiPlayer();
			AI aiPlayer2 = new AI(this);
			Teams.addAiPlayer();
			AI aiPlayer3 = new AI(this);
			Teams.addAiPlayer();

			Teams.addToEmptyTeam(aiPlayer1);
			Teams.addToEmptyTeam(aiPlayer2);
			Teams.addToEmptyTeam(aiPlayer3);

			this.playerOrder.add(aiPlayer1);
			this.playerOrder.add(aiPlayer2);
			this.playerOrder.add(aiPlayer3);

			// set aiPlayer1 friends with player
			Teams.setTeamFriends(Teams.getTeamOfPlayer(player), aiPlayer1);
			Teams.setTeamFriends(Teams.getTeamOfPlayer(aiPlayer1), player);
			// set aiPlayer2 friends with aiPlayer3
			Teams.setTeamFriends(Teams.getTeamOfPlayer(aiPlayer2), aiPlayer3);
			Teams.setTeamFriends(Teams.getTeamOfPlayer(aiPlayer3), aiPlayer2);

			System.out.println(Teams.getTeamOfPlayer(player));
			System.out.println(Teams.getTeamOfPlayer(aiPlayer1));
			System.out.println(Teams.getTeamOfPlayer(aiPlayer2));
			System.out.println(Teams.getTeamOfPlayer(aiPlayer3));

			// set difficulty
			aiPlayer1.setDifficulty(GameType.getDifficulty());
			aiPlayer2.setDifficulty(GameType.getDifficulty());
			aiPlayer3.setDifficulty(GameType.getDifficulty());
		} else if (gameType == GameType.AItypeFreeForAll) {
			// Free for all (1human 3Ai)

			AI aiPlayer1 = new AI(this);
			Teams.addAiPlayer();
			AI aiPlayer2 = new AI(this);
			Teams.addAiPlayer();
			AI aiPlayer3 = new AI(this);
			Teams.addAiPlayer();

			Teams.addToEmptyTeam(aiPlayer1);
			Teams.addToEmptyTeam(aiPlayer2);
			Teams.addToEmptyTeam(aiPlayer3);

			this.playerOrder.add(aiPlayer1);
			this.playerOrder.add(aiPlayer2);
			this.playerOrder.add(aiPlayer3);

			// set difficulty
			aiPlayer1.setDifficulty(GameType.getDifficulty());
			aiPlayer2.setDifficulty(GameType.getDifficulty());
			aiPlayer3.setDifficulty(GameType.getDifficulty());
		} else if (gameType == GameType.type1vs1) {
			for (int i = 0; i < playerOrder.size(); i++) {
				Teams.addToEmptyTeam(playerOrder.get(i));
			}
			Teams.setMe(Teams.getTeamOfPlayer(me));
		} else if (gameType == GameType.type2vs2) {
			// 2vs2 (human)

		} else if (gameType == GameType.typeFreeForAll) {
			for (int i = 0; i < playerOrder.size(); i++) {
				Teams.addToEmptyTeam(playerOrder.get(i));
			}
			Teams.setMe(Teams.getTeamOfPlayer(me));

		}

		// select map
		map = new Map(90, mapName, this);

		// give all players game object
		for (Player p : playerOrder) {
			p.setGame(this);
		}

		// Create game inteface
		createGameInterface();

		// setup timer
		setupTimer();

		mapPanel.centerToYourTeam();

		Sound s = new Sound();
		s.setTrackFromAlbum("game_music");
		s.play();

	}