package com.fteams.siftrain.screens; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.InputProcessor; import com.badlogic.gdx.Screen; import com.badlogic.gdx.graphics.GL20; import com.fteams.siftrain.World; import com.fteams.siftrain.assets.Results; import com.fteams.siftrain.controller.WorldController; import com.fteams.siftrain.renderer.WorldRenderer; public class SongScreen implements Screen, InputProcessor { private World world; private WorldRenderer renderer; private WorldController controller; private int width; private int height; @Override public void show() { world = new World(); Results.clear(); renderer = new WorldRenderer(world); controller = new WorldController(world); Gdx.input.setInputProcessor(this); } @Override public void render(float delta) { Gdx.gl.glClearColor(0.1f, 0.1f, 0.1f, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); controller.update(delta); renderer.render(); } @Override public void resize(int width, int height) { // use height as base and force a 3:2 ratio int originalWidth = width; int newWidth = height * 3 / 2; int originalHeight = height; int newHeight = width * 2 / 3; // check which side should be shortened if (newWidth > width) { height = newHeight; } else { width = newWidth; } renderer.setSize(width, height, (originalWidth - width) / 2, (originalHeight - height)/2); world.setSize(width, height, (originalWidth - width) /2, (originalHeight - height)/2); this.width = width; this.height = height; } @Override public void pause() { } @Override public void resume() { } @Override public void hide() { Gdx.input.setInputProcessor(null); } @Override public void dispose() { Gdx.input.setInputProcessor(null); } @Override public boolean keyDown(int keycode) { return false; } @Override public boolean keyUp(int keycode) { if (keycode == Input.Keys.BACK || keycode == Input.Keys.ESCAPE) { // do nothing controller.back(); return true; } return false; } @Override public boolean keyTyped(char character) { return false; } @Override public boolean touchDown(int screenX, int screenY, int pointer, int button) { controller.pressed(screenX, screenY, pointer, button, renderer.ppuX, renderer.ppuY, width, height); return true; } @Override public boolean touchUp(int screenX, int screenY, int pointer, int button) { controller.released(screenX, screenY, pointer, button, renderer.ppuX, renderer.ppuY, width, height); return true; } @Override public boolean touchDragged(int screenX, int screenY, int pointer) { return false; } @Override public boolean mouseMoved(int screenX, int screenY) { return false; } @Override public boolean scrolled(int amount) { return false; } }