private void refreshView() {
		// Remove everything from the gamePanel and mainFrame
		gamePanel.removeAll();
		mainFrame.getContentPane().removeAll();

		// Remove everything from the glass pane
		JPanel glassPane = (JPanel) mainFrame.getGlassPane();
		glassPane.removeAll();
		glassPane.setLayout(null);

		if (!gameOver) {
			// Add the 3D perspective and the map perspective
			gamePanel.add(currentRoom.getView(player.getLookingDirection()));
			gamePanel.add(map.getContentPane());

			JLabel arrow = new JLabel("");
			if (player.getLookingDirection().equals(NORTH)) {
				arrow.setIcon(new ImageIcon(FirstPersonRoom.class
						.getResource("/img/firstperson/arrow/north.png")));
			} else if (player.getLookingDirection().equals(SOUTH)) {
				arrow.setIcon(new ImageIcon(FirstPersonRoom.class
						.getResource("/img/firstperson/arrow/south.png")));
			} else if (player.getLookingDirection().equals(EAST)) {
				arrow.setIcon(new ImageIcon(FirstPersonRoom.class
						.getResource("/img/firstperson/arrow/east.png")));
			} else if (player.getLookingDirection().equals(WEST)) {
				arrow.setIcon(new ImageIcon(FirstPersonRoom.class
						.getResource("/img/firstperson/arrow/west.png")));
			}

			arrow.setBounds(875, 290, 40, 40);
			glassPane.add(arrow);
			glassPane.setVisible(true);

			// Add the health panel
			HealthPanel healthPanel = new HealthPanel(player.getHealth(),
					player.getCurrentWeight(), player.getMaxWeight());
			healthPanel.setVisible(true);
			mainFrame.add(healthPanel, BorderLayout.SOUTH);

			// Refresh the Pick Up and Attack menu's
			Wall wall = currentRoom.getWall(player.getLookingDirection());

			pickMenu.removeAll();
			attackMenu.removeAll();
			dropMenu.removeAll();

			if (wall.getItem() != null) {
				String itemName = wall.getItem().getItemName();
				JMenuItem temp = new JMenuItem(itemName);
				temp.setToolTipText("pick," + itemName);
				temp.addActionListener(menuListener);
				pickMenu.add(temp);
			}

			if (wall.getMonster() != null && wall.getMonster().isAlive()) {
				String monsterName = wall.getMonster().getName();
				JMenuItem temp = new JMenuItem(monsterName);
				temp.setToolTipText("attack," + monsterName);
				temp.addActionListener(menuListener);
				attackMenu.add(temp);
			}

			ArrayList<String> items = player.getItemsInPosession();
			for (int i = 0; i < items.size(); i++) {
				JMenuItem temp = new JMenuItem(items.get(i));
				temp.setToolTipText("drop," + items.get(i));
				temp.addActionListener(menuListener);
				dropMenu.add(temp);
			}

			// Repaint the gamePanel
			gamePanel.validate();
			gamePanel.repaint();

			// Add the gamePanel to mainFrame
			mainFrame.add(gamePanel, BorderLayout.CENTER);
		} else {
			JLabel temp = new JLabel("GAME OVER");
			temp.setFont(new Font("Lucida Grande", Font.PLAIN, 50));
			temp.setHorizontalAlignment(SwingConstants.CENTER);
			temp.setForeground(Color.RED);
			mainFrame.add(temp, BorderLayout.CENTER);
		}

		// Repaint the mainFrame
		mainFrame.validate();
		mainFrame.repaint();

	}