Legger til en uferdig skjerm for velging av programmeringskort

This commit is contained in:
Kristian Knarvik 2020-03-16 18:34:40 +01:00
parent 5fcfab5b01
commit 80d0c954de
3 changed files with 123 additions and 1 deletions

View File

@ -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;
}
}

View File

@ -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() {

View File

@ -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;
}
}