@Override
	public void render(float delta) {
		Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT);

		camera = myWorld.getCamera();
		sb.setProjectionMatrix(camera.combined);

		sb.begin(); //---------------------------------------------------------------

		sb.draw( // draw background
				background,
				0 - background.getWidth() / 2,
				0 - background.getHeight() / 2,
				background.getWidth(),
				background.getHeight()
				);	

		for(int i = 1; i < myWorld.getNumPipes(); i+=2)
			sb.draw( // draw ground pipes
					groundPipe,
					(myWorld.getGroundPipesPosistion(i, true) - groundPipe.getWidth() / 2) - .034f,
					(myWorld.getGroundPipesPosistion(i, false) - groundPipe.getHeight() / 2) - .18f,
					myWorld.getPipeWidth(),
					myWorld.getPipeHeight()
					);

		sb.draw( // draw ground
				ground,
				myWorld.getGroundPosition().x - ground.getWidth() / 2,
				(myWorld.getGroundPosition().y - ground.getHeight() / 2) -.17f,				
				ground.getWidth(),
				ground.getHeight()
				);

		for(int i = 0; i < myWorld.getNumPipes(); i+=2)
			sb.draw( // draw floor pipes
					floorPipe,
					(myWorld.getGroundPipesPosistion(i, true) - floorPipe.getWidth() / 2) - .034f,
					(myWorld.getGroundPipesPosistion(i, false) - floorPipe.getHeight() / 2) - .198f,
					myWorld.getPipeWidth(),
					myWorld.getPipeHeight()
					);

		if(gameScoreCounter <= 9 && !showTapToPlay) { // draw game score
			sb.draw( // draw score BIG
					scoreBig[gameScoreCounter],
					(myWorld.getGroundPosition().x - scoreBig[gameScoreCounter].getWidth() / 2) - .034f,
					myWorld.getGroundPosition().y + 2,
					scoreBig[gameScoreCounter].getWidth(),
					scoreBig[gameScoreCounter].getHeight() + .05f
					);
		}
		else if(!showTapToPlay && gameScoreCounter < 100) { // draw score SMALL
			int tens = gameScoreCounter / 10;
			int ones = gameScoreCounter - (tens * 10);

			sb.draw( // draw tens
					scoreSmall[tens],
					(myWorld.getGroundPosition().x - scoreSmall[tens].getWidth() / 2) - .034f,
					myWorld.getGroundPosition().y + 2,
					scoreSmall[tens].getWidth(),
					scoreSmall[tens].getHeight()
					);

			sb.draw( // draw ones
					scoreSmall[ones],
					(myWorld.getGroundPosition().x - scoreSmall[ones].getWidth() / 2) + .034f,
					myWorld.getGroundPosition().y + 2,
					scoreSmall[ones].getWidth(),
					scoreSmall[ones].getHeight()
					);
		}

		if(showTapToPlay) {			
			sb.draw(
					getReadyBanner,
					myWorld.getGroundPosition().x -.6f,
					myWorld.getGroundPosition().y + 1.5f,
					getReadyBanner.getWidth(),
					getReadyBanner.getHeight()					
					);
			sb.draw( // draw 'tap-to-play'
					tapToPlay,
					myWorld.getGroundPosition().x -.17f,
					myWorld.getGroundPosition().y + .9f,
					tapToPlay.getWidth(),
					tapToPlay.getHeight()
					);
		}

		// draw flappy Bird
		flappyBirdAnimation.setPosition(
				myWorld.getFlappyBirdPosition().x - flappyBirdAnimation.getSpriteWidth() / 2,
				myWorld.getFlappyBirdPosition().y - flappyBirdAnimation.getSpriteHeight() / 2
				);		
		flappyBirdAnimation.getSprite().setRotation(myWorld.getFlappyBirdRotation() * MathUtils.radiansToDegrees);
		flappyBirdAnimation.draw(sb);

		if(gameOver) {
			sb.draw(
					scoreBoard,
					myWorld.getGroundPosition().x -.6f,
					myWorld.getGroundPosition().y + .84f,
					scoreBoard.getWidth(),
					scoreBoard.getHeight()					
					);
			sb.draw(
					gameOverBanner,
					myWorld.getGroundPosition().x -.6f,
					myWorld.getGroundPosition().y + 1.45f,
					gameOverBanner.getWidth(),
					gameOverBanner.getHeight()					
					);

			if(!menubtnListener.getEnter()) {
				sb.draw(
						menuButtonImage,
						myWorld.getGroundPosition().x -.42f,
						myWorld.getGroundPosition().y + .63f,
						menuButtonImage.getWidth(),
						menuButtonImage.getHeight()
						);
			}
			else {
				sb.draw(
						menuButtonHoverImage,
						myWorld.getGroundPosition().x -.42f,
						myWorld.getGroundPosition().y + .63f,
						menuButtonHoverImage.getWidth(),
						menuButtonHoverImage.getHeight()
						);
			}

			if(!restartbtnlistener.getEnter()) {
				sb.draw(
						restartButtonImage,
						myWorld.getGroundPosition().x + .03f,
						myWorld.getGroundPosition().y + .63f,
						restartButtonImage.getWidth(),
						restartButtonImage.getHeight()
						);
			}
			else {
				sb.draw(
						restartButtonHoverImage,
						myWorld.getGroundPosition().x + .03f,
						myWorld.getGroundPosition().y + .63f,
						restartButtonHoverImage.getWidth(),
						restartButtonHoverImage.getHeight()
						);
			}		

			if(gameScoreCounter <= 9) { // draw game score
				sb.draw( // draw score BIG
						scoreBig[gameScoreCounter],
						(myWorld.getGroundPosition().x - scoreBig[gameScoreCounter].getWidth() / 2) + .45f,
						myWorld.getGroundPosition().y + 1.15f,
						scoreBig[gameScoreCounter].getWidth()*.7f,
						scoreBig[gameScoreCounter].getHeight()*.7f + .05f
						);
			}
			else if(gameScoreCounter < 100) { // draw score SMALL
				int tens = gameScoreCounter / 10;
				int ones = gameScoreCounter - (tens * 10);

				sb.draw( // draw tens
						scoreSmall[tens],
						(myWorld.getGroundPosition().x - scoreSmall[tens].getWidth() / 2) + .38f,
						myWorld.getGroundPosition().y + 1.15f,
						scoreSmall[tens].getWidth(),
						scoreSmall[tens].getHeight()
						);

				sb.draw( // draw ones
						scoreSmall[ones],
						(myWorld.getGroundPosition().x - scoreSmall[ones].getWidth() / 2) + .45f,
						myWorld.getGroundPosition().y + 1.15f,
						scoreSmall[ones].getWidth(),
						scoreSmall[ones].getHeight()
						);
			}

			if(highScore <= 9) { // draw high score
				sb.draw( // draw score BIG
						scoreBig[highScore],
						(myWorld.getGroundPosition().x - scoreBig[highScore].getWidth() / 2) + .45f,
						myWorld.getGroundPosition().y + .95f,
						scoreBig[highScore].getWidth()*.7f,
						scoreBig[highScore].getHeight()*.7f + .05f
						);
			}
			else if(highScore < 100) { // draw score SMALL
				int tens = highScore / 10;
				int ones = highScore - (tens * 10);

				sb.draw( // draw tens
						scoreSmall[tens],
						(myWorld.getGroundPosition().x - scoreSmall[tens].getWidth() / 2) + .38f,
						myWorld.getGroundPosition().y + .95f,
						scoreSmall[tens].getWidth(),
						scoreSmall[tens].getHeight()
						);

				sb.draw( // draw ones
						scoreSmall[ones],
						(myWorld.getGroundPosition().x - scoreSmall[ones].getWidth() / 2) + .45f,
						myWorld.getGroundPosition().y + .95f,
						scoreSmall[ones].getWidth(),
						scoreSmall[ones].getHeight()
						);
			}
			if(bronze) {
				sb.draw(bronzeSprite,
						(myWorld.getGroundPosition().x - bronzeSprite.getWidth() / 2) - .34f,
						myWorld.getGroundPosition().y + .98f,
						bronzeSprite.getWidth(),
						bronzeSprite.getHeight()
						);
			}
			if(silver) {
				sb.draw(silverSprite,
						(myWorld.getGroundPosition().x - silverSprite.getWidth() / 2) - .34f,
						myWorld.getGroundPosition().y + .98f,
						silverSprite.getWidth(),
						silverSprite.getHeight()
						);
			}
			if(gold) {
				sb.draw(goldSprite,
						(myWorld.getGroundPosition().x - goldSprite.getWidth() / 2) - .34f,
						myWorld.getGroundPosition().y + .98f,
						goldSprite.getWidth(),
						goldSprite.getHeight()
						);
			}
			if(platinum) {
				sb.draw(platinumSprite,
						(myWorld.getGroundPosition().x - platinumSprite.getWidth() / 2) - .34f,
						myWorld.getGroundPosition().y + .98f,
						platinumSprite.getWidth(),
						platinumSprite.getHeight()
						);
			}
		}

		sb.end(); //------------------------------------------------------------------

		if(debuggingBox2DWorld) {myWorld.renderBox2DDebugRenderer(camera);}
		if(!pause) {
			update(delta);
			flappyBirdAnimation.setPause(false);
		}
		else {flappyBirdAnimation.setPause(true);}
	}