@Override
	public void run() {
		if(game != null) {
			final Color color;
			final PlayerStatus status;
			if(game.getWinner() != Player.NONE) {
				color = UIPlayer.getPlayer(game.getWinner()).getForeground();
				status = game.getPlayerStatus(game.getWinner());
			}
			else {
				color = UIPlayer.getPlayer(game.getCurrentPlayer()).getForeground();
				status = game.getPlayerStatus(game.getCurrentPlayer());
			}
			final BufferedImage base;
			if(status.isAIPlayer()) {
				base = computer;
			}
			else {
				base = human;
			}

			final BufferedImage coloredImg = new BufferedImage(base.getWidth(), base.getHeight(), base.getType());
			base.copyData(coloredImg.getRaster());
			for(int x = 0; x < coloredImg.getWidth(); ++x) {
				for(int y = 0; y < coloredImg.getHeight(); ++y) {
					// colorize white pixels
					if(coloredImg.getRGB(x, y) == 0xFFFFFFFF) {
						coloredImg.setRGB(x, y, color.getRGB());
					}
				}
			}
			
			final Image playerImg = coloredImg.getScaledInstance(coloredImg.getWidth()*7, coloredImg.getHeight()*7, Image.SCALE_REPLICATE);
			// TODO support player names for human players
			final String name = status.isAIPlayer() ? status.getAI().getName() : "Human";
			final String text;
			if((name.length()-1)*FONT_SIZE > MAX_WIDTH) {
				text = name.substring(0, (MAX_WIDTH/FONT_SIZE)-3) + "...";
			}
			else {
				 text = name;
			}
			final BufferedImage textImg	= retroFont.getRetroString(text, color, FONT_SIZE); 
			
			final BufferedImage targetImg = new BufferedImage(
					Math.max(textImg.getWidth(), playerImg.getWidth(null)), 
					playerImg.getHeight(null)+(FONT_SIZE+2), coloredImg.getType());
			final Graphics2D graphics = targetImg.createGraphics();
			
			graphics.drawImage(playerImg, 
					0, 
					0, null);
			
			final int fontX = playerImg.getWidth(null) > textImg.getWidth() ? ((playerImg.getWidth(null) - textImg.getWidth()) / 2) : 0;
			graphics.drawImage(textImg, 
					fontX, 
					playerImg.getHeight(null) + 2, null);
			
			statusImg = targetImg;
			
			UIPlayerStatus.this.revalidate();
			UIPlayerStatus.this.repaint();
		}
	}