From 80d0c954deb7aca5b1051f76e68ed4477e15ce63 Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Mon, 16 Mar 2020 18:34:40 +0100 Subject: [PATCH] Legger til en uferdig skjerm for velging av programmeringskort --- .../game_wrapper/CardChoiceScreen.java | 109 ++++++++++++++++++ .../game_wrapper/RoboRallyWrapper.java | 2 +- .../roborally/game_wrapper/ScreenManager.java | 13 +++ 3 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 src/main/java/inf112/fiasko/roborally/game_wrapper/CardChoiceScreen.java diff --git a/src/main/java/inf112/fiasko/roborally/game_wrapper/CardChoiceScreen.java b/src/main/java/inf112/fiasko/roborally/game_wrapper/CardChoiceScreen.java new file mode 100644 index 0000000..eb1d767 --- /dev/null +++ b/src/main/java/inf112/fiasko/roborally/game_wrapper/CardChoiceScreen.java @@ -0,0 +1,109 @@ +package inf112.fiasko.roborally.game_wrapper; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.InputAdapter; +import com.badlogic.gdx.Screen; +import com.badlogic.gdx.graphics.GL20; +import com.badlogic.gdx.graphics.OrthographicCamera; +import com.badlogic.gdx.graphics.glutils.ShapeRenderer; + +import java.awt.*; + +import static com.badlogic.gdx.graphics.Color.GREEN; +import static com.badlogic.gdx.graphics.Color.RED; + +public class CardChoiceScreen extends InputAdapter implements Screen { + private final RoboRallyWrapper roboRallyWrapper; + + private final OrthographicCamera camera; + private CardRectangle cardRectangle; + private ShapeRenderer shapeRenderer; + + public CardChoiceScreen(final RoboRallyWrapper roboRallyWrapper) { + this.roboRallyWrapper = roboRallyWrapper; + camera = new OrthographicCamera(); + camera.setToOrtho(true, 1200, 1200); + Rectangle card1 = new Rectangle(); + card1.x = 1200/2; + card1.y = 1200/2; + card1.width = 100; + card1.height = 100; + cardRectangle = new CardRectangle(card1, false); + shapeRenderer = new ShapeRenderer(); + shapeRenderer.setAutoShapeType(true); + Gdx.input.setInputProcessor(this); + } + + @Override + public void show() { + + } + + @Override + public void render(float v) { + Gdx.gl.glClearColor(0.2f, 0.2f, 0.2f, 1); + Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); + camera.update(); + roboRallyWrapper.batch.setProjectionMatrix(camera.combined); + shapeRenderer.setProjectionMatrix(camera.combined); + + shapeRenderer.begin(ShapeRenderer.ShapeType.Filled); + if (cardRectangle.selected) { + shapeRenderer.setColor(RED); + shapeRenderer.rect(cardRectangle.rectangle.x - 5, cardRectangle.rectangle.y - 5, + cardRectangle.rectangle.width + 10, cardRectangle.rectangle.height + 10); + } + shapeRenderer.setColor(GREEN); + shapeRenderer.rect(cardRectangle.rectangle.x, cardRectangle.rectangle.y, + cardRectangle.rectangle.width, cardRectangle.rectangle.height); + shapeRenderer.end(); + } + + @Override + public void resize(int i, int i1) { + + } + + @Override + public void pause() { + + } + + @Override + public void resume() { + + } + + @Override + public void hide() { + + } + + @Override + public void dispose() { + + } + + @Override + public boolean touchUp(int screenX, int screenY, int pointer, int button) { + System.out.println(screenX + " " + screenY); + System.out.println(cardRectangle.rectangle.x + " " + cardRectangle.rectangle.y + " " + + cardRectangle.rectangle.width + " " + cardRectangle.rectangle.height); + if (cardRectangle.rectangle.contains(screenX, screenY)) { + cardRectangle.selected = true; + System.out.println("Card touched"); + return true; + } + return false; + } +} + +class CardRectangle { + Rectangle rectangle; + boolean selected; + + CardRectangle(Rectangle rectangle, boolean selected) { + this.rectangle = rectangle; + this.selected = selected; + } +} \ No newline at end of file diff --git a/src/main/java/inf112/fiasko/roborally/game_wrapper/RoboRallyWrapper.java b/src/main/java/inf112/fiasko/roborally/game_wrapper/RoboRallyWrapper.java index af11147..4aa8401 100644 --- a/src/main/java/inf112/fiasko/roborally/game_wrapper/RoboRallyWrapper.java +++ b/src/main/java/inf112/fiasko/roborally/game_wrapper/RoboRallyWrapper.java @@ -16,7 +16,7 @@ public class RoboRallyWrapper extends Game { batch = new SpriteBatch(); font = new BitmapFont(); this.screenManager = new ScreenManager(); - this.setScreen(screenManager.getMainMenuScreen(this)); + this.setScreen(screenManager.getCardChoiceScreen(this)); } public void dispose() { diff --git a/src/main/java/inf112/fiasko/roborally/game_wrapper/ScreenManager.java b/src/main/java/inf112/fiasko/roborally/game_wrapper/ScreenManager.java index 286f2ad..b52097a 100644 --- a/src/main/java/inf112/fiasko/roborally/game_wrapper/ScreenManager.java +++ b/src/main/java/inf112/fiasko/roborally/game_wrapper/ScreenManager.java @@ -6,6 +6,7 @@ package inf112.fiasko.roborally.game_wrapper; public class ScreenManager { private MainMenuScreen mainMenuScreen; private BoardActiveScreen boardActiveScreen; + private CardChoiceScreen cardChoiceScreen; /** * Gets an instance of the main menu screen @@ -30,4 +31,16 @@ public class ScreenManager { } return boardActiveScreen; } + + /** + * Gets an instance of the board active screen + * @param roboRallyWrapper The robo rally launcher instance to use + * @return A board active screen instance + */ + public synchronized CardChoiceScreen getCardChoiceScreen(RoboRallyWrapper roboRallyWrapper) { + if (this.cardChoiceScreen == null) { + this.cardChoiceScreen = new CardChoiceScreen(roboRallyWrapper); + } + return cardChoiceScreen; + } }