@Override
	public void render(GameContainer container, StateBasedGame game, Graphics g)
			throws SlickException {
		
		g.setAntiAlias(false);
		
		
		backgroundManager.draw();
		tileManager.draw(camera);
		
		playerShadows.draw( camera, ws.p1.getPosition(), ws.p1.getPlayerState() );
		playerShadows.draw( camera, ws.p2.getPosition(), ws.p2.getPlayerState() );
		
		entityList.addAll(ws.mechanismList);
		entityList.add(ws.p1);
		entityList.add(ws.p2);
		
		Collections.sort(entityList, new EntityComparator());
		for(Entity temp: entityList){
			temp.draw(camera);
		}
		entityList.clear();
		
		black.draw();
		darkness.draw();
		
		if (syncGame == false) {
			FontUtils.drawCenter(TowerGame.ricasso30, "Waiting for other player...", 165, 104, 470, Color.white);
			black.setAlpha(0);
		}
		
		// Extra stuff
		//g.drawString("Camera:   (" + Float.toString(camera.x)+", "+Float.toString(camera.y)+")", 50, 50);
		//g.drawString("Player 1: (" + Float.toString(ws.p1.getX())+", "+Float.toString(ws.p1.getY())+")", 50, 70);
		//g.drawString("Isometr : (" + Float.toString(TileUtil.toCarX(ws.p1.getX(), ws.p1.getY()))+", "+Float.toString(TileUtil.toCarY(ws.p1.getX(), ws.p1.getY()))+")", 50, 90);
		//g.drawString("Tile    : (" + Float.toString( TileUtil.getCoordinateX(ws.p1.getX()) )+", "+Float.toString( TileUtil.getCoordinateY(ws.p1.getY()) )+")", 50, 110);
		//System.out.println("Tile    : (" + Float.toString( TileUtil.getCoordinateX(ws.p1.getX()) )+", "+Float.toString( TileUtil.getCoordinateY(ws.p1.getY()) )+")");
		if (paused) {
			g.setColor(new Color(0, 0, 0, 128));
			g.fillRect(0, 0, container.getWidth(), container.getHeight());
			g.setColor(Color.white);
			g.drawString("Paused", 200, 200);
		}
		
	}