<commit_before>package com.haw.projecthorse.level;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Orientation;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.FPSLogger;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.utils.viewport.FitViewport;
import com.badlogic.gdx.utils.viewport.Viewport;
import com.haw.projecthorse.assetmanager.AssetManager;
import com.haw.projecthorse.audiomanager.AudioManager;
import com.haw.projecthorse.audiomanager.AudioManagerImpl;
import com.haw.projecthorse.gamemanager.GameManagerFactory;
import com.haw.projecthorse.level.util.overlay.Overlay;

/**
 * @author <NAME> . Abstract baseclass for Level implementations.
 * 
 *         ACHTUNG: Um Sicherzustellen das hier alle Methoden wie z.B. dispose()
 *         auch aufgerufen werden sind alle Methoden final. Ableitende Klassen
 *         müssen stattdessen jeweils doDispose() usw. implementieren
 * 
 * 
 *         Jedes level hat ein Overlay. über das Overlay können Popups unter
 *         anderm Popups angezeigt werden. *
 * 
 */

public abstract class Level implements Screen {

	// ########### DEBUG ##################
	// TODO für Release entfernen
	private FPSLogger fpsLogger = new FPSLogger();
	// ####################################

	private Boolean paused = false;
	private String levelID = null;
	private Viewport viewport;
	private OrthographicCamera cam;
	private SpriteBatch spriteBatch;
	protected static Overlay overlay;

	protected int height;
	protected int width;

	protected AudioManager audioManager;
	private FitViewport overlayViewport;

	public Level() {
		this(Orientation.Portrait);
	}

	/**
	 * Mittels diesem Konsturcktor kann eine {@link Orientation} übergeben
	 * werden.
	 * 
	 * @param orientation
	 */
	public Level(Orientation orientation) {
		GameManagerFactory.getInstance().getPlatform().SetOrientation(orientation);
		height = GameManagerFactory.getInstance().getSettings().getVirtualScreenHeight();
		width = GameManagerFactory.getInstance().getSettings().getVirtualScreenWidth();

		createViewport();
		audioManager = AudioManagerImpl.getInstance();
		AssetManager.loadSounds("ui");
	}

	public void createViewport() {
		cam = createCamera();
		viewport = new FitViewport(width, height, cam);
		spriteBatch = new SpriteBatch();
		spriteBatch.setProjectionMatrix(cam.combined);

		overlayViewport = new FitViewport(width, height, createCamera());
		overlay = new Overlay(overlayViewport, spriteBatch, this);
	}

	/**
	 * Erstellt eine OrthographicCamera diese wird f�r die jeweiliegen Viewports
	 * gebraucht.
	 * 
	 * @return {@link OrthographicCamera}
	 */
	private OrthographicCamera createCamera() {

		OrthographicCamera cam = new OrthographicCamera(width, height);
		cam.setToOrtho(false); // Set to Y-Up - Coord system

		return cam;
	}

	public final void setLevelID(String newID) {
		if (levelID != null) {
			System.out.println("ACHTUNG Level id: " + levelID + " umbenannt in: " + newID);
		}

		levelID = newID;

	}

	public final String getLevelID() {
		return levelID;
	}

	protected abstract void doRender(float delta); // Called by render() - to be
													// used in subclasses

	@Override
	public final void render(float delta) {
		// zu schnell Bug Fix
		delta = delta % 1;
		paintBackground();
		// Wenn das spiel pausiert wird bekommt das untere level ein Delta von 0
		// übergeben.
		// Hierdurch wird sichergestellt das die Interaktionen

		overlay.act(delta);
		if (paused) {
			delta = 0;
		}
		doRender(delta);
		overlay.draw();
		// ########### DEBUG ##################
		// TODO f�r Release entfernen
		fpsLogger.log();
		// ####################################

	}

	/**
	 * <NAME>
	 */
	private void paintBackground() {
		Gdx.gl.glClearColor(0, 0, 0, 1);
		Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
	}

	protected abstract void doDispose();

	@Override
	public final void dispose() {
		spriteBatch.dispose();
		overlay.dispose();
		audioManager = null;
		doDispose();

	}

	protected abstract void doResize(int width, int height);
<commit_msg>#140 : FPS Logger auskommentiert<commit_after>package com.haw.projecthorse.level;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Orientation;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.utils.viewport.FitViewport;
import com.badlogic.gdx.utils.viewport.Viewport;
import com.haw.projecthorse.assetmanager.AssetManager;
import com.haw.projecthorse.audiomanager.AudioManager;
import com.haw.projecthorse.audiomanager.AudioManagerImpl;
import com.haw.projecthorse.gamemanager.GameManagerFactory;
import com.haw.projecthorse.level.util.overlay.Overlay;

/**
 * @author <NAME> . Abstract baseclass for Level implementations.
 * 
 *         ACHTUNG: Um Sicherzustellen das hier alle Methoden wie z.B. dispose()
 *         auch aufgerufen werden sind alle Methoden final. Ableitende Klassen
 *         müssen stattdessen jeweils doDispose() usw. implementieren
 * 
 * 
 *         Jedes level hat ein Overlay. über das Overlay können Popups unter
 *         anderm Popups angezeigt werden. *
 * 
 */

public abstract class Level implements Screen {

	// ########### DEBUG ##################
	//private FPSLogger fpsLogger = new FPSLogger();
	// ####################################

	private Boolean paused = false;
	private String levelID = null;
	private Viewport viewport;
	private OrthographicCamera cam;
	private SpriteBatch spriteBatch;
	protected static Overlay overlay;

	protected int height;
	protected int width;

	protected AudioManager audioManager;
	private FitViewport overlayViewport;

	public Level() {
		this(Orientation.Portrait);
	}

	/**
	 * Mittels diesem Konsturcktor kann eine {@link Orientation} übergeben
	 * werden.
	 * 
	 * @param orientation
	 */
	public Level(Orientation orientation) {
		GameManagerFactory.getInstance().getPlatform().SetOrientation(orientation);
		height = GameManagerFactory.getInstance().getSettings().getVirtualScreenHeight();
		width = GameManagerFactory.getInstance().getSettings().getVirtualScreenWidth();

		createViewport();
		audioManager = AudioManagerImpl.getInstance();
		AssetManager.loadSounds("ui");
	}

	public void createViewport() {
		cam = createCamera();
		viewport = new FitViewport(width, height, cam);
		spriteBatch = new SpriteBatch();
		spriteBatch.setProjectionMatrix(cam.combined);

		overlayViewport = new FitViewport(width, height, createCamera());
		overlay = new Overlay(overlayViewport, spriteBatch, this);
	}

	/**
	 * Erstellt eine OrthographicCamera diese wird f�r die jeweiliegen Viewports
	 * gebraucht.
	 * 
	 * @return {@link OrthographicCamera}
	 */
	private OrthographicCamera createCamera() {

		OrthographicCamera cam = new OrthographicCamera(width, height);
		cam.setToOrtho(false); // Set to Y-Up - Coord system

		return cam;
	}

	public final void setLevelID(String newID) {
		if (levelID != null) {
			System.out.println("ACHTUNG Level id: " + levelID + " umbenannt in: " + newID);
		}

		levelID = newID;

	}

	public final String getLevelID() {
		return levelID;
	}

	protected abstract void doRender(float delta); // Called by render() - to be
													// used in subclasses

	@Override
	public final void render(float delta) {
		// zu schnell Bug Fix
		delta = delta % 1;
		paintBackground();
		// Wenn das spiel pausiert wird bekommt das untere level ein Delta von 0
		// übergeben.
		// Hierdurch wird sichergestellt das die Interaktionen

		overlay.act(delta);
		if (paused) {
			delta = 0;
		}
		doRender(delta);
		overlay.draw();
		
		// ########### DEBUG ##################
		//fpsLogger.log();
		// ####################################

	}

	/**
	 * <NAME>
	 */
	private void paintBackground() {
		Gdx.gl.glClearColor(0, 0, 0, 1);
		Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
	}

	protected abstract void doDispose();

	@Override
	public final void dispose() {
		spriteBatch.dispose();
		overlay.dispose();
		audioManager = null;
		doDispose();

	}

	protected abstract void doResize(int width, int height);

{'fraction_non_alphanumeric': 0.1323618700667881, 'fraction_numerical': 0.003278688524590164, 'mean_word_length': 4.170119271814187, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2226982', 'n_tokens_mistral': 2779, 'n_tokens_neox': 2495, 'n_words': 629}