diff --git a/pom.xml b/pom.xml
index b8996ba..3b666a9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,6 +35,12 @@
1.9.9
+
+ com.badlogicgames.gdx
+ gdx-tools
+ 1.9.9
+
+
com.badlogicgames.gdx
gdx-backend-lwjgl
diff --git a/src/main/java/inf112/fiasko/roborally/game_wrapper/CardChoiceScreen.java b/src/main/java/inf112/fiasko/roborally/game_wrapper/CardChoiceScreen.java
index 9d38ee3..1010e50 100644
--- a/src/main/java/inf112/fiasko/roborally/game_wrapper/CardChoiceScreen.java
+++ b/src/main/java/inf112/fiasko/roborally/game_wrapper/CardChoiceScreen.java
@@ -2,12 +2,18 @@ package inf112.fiasko.roborally.game_wrapper;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.InputAdapter;
+import com.badlogic.gdx.InputMultiplexer;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.GlyphLayout;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.math.Vector3;
+import com.badlogic.gdx.scenes.scene2d.InputEvent;
+import com.badlogic.gdx.scenes.scene2d.InputListener;
+import com.badlogic.gdx.scenes.scene2d.Stage;
+import com.badlogic.gdx.scenes.scene2d.Touchable;
+import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.utils.viewport.FitViewport;
import com.badlogic.gdx.utils.viewport.Viewport;
import inf112.fiasko.roborally.objects.IDeck;
@@ -23,6 +29,9 @@ import static com.badlogic.gdx.graphics.Color.GREEN;
import static com.badlogic.gdx.graphics.Color.RED;
import static com.badlogic.gdx.graphics.Color.WHITE;
+/**
+ * This screen is used to let the user choose their program
+ */
public class CardChoiceScreen extends InputAdapter implements Screen {
private final RoboRallyWrapper roboRallyWrapper;
@@ -32,7 +41,13 @@ public class CardChoiceScreen extends InputAdapter implements Screen {
private final Viewport viewport;
private final List chosenCards;
private final int maxCards;
+ private final Stage stage;
+ final TextButton confirmCards;
+ /**
+ * Initializes a new card choice screen
+ * @param roboRallyWrapper The robo rally wrapper which is its parent
+ */
public CardChoiceScreen(final RoboRallyWrapper roboRallyWrapper) {
this.roboRallyWrapper = roboRallyWrapper;
camera = new OrthographicCamera();
@@ -43,7 +58,10 @@ public class CardChoiceScreen extends InputAdapter implements Screen {
cardRectangles = new ArrayList<>();
shapeRenderer = new ShapeRenderer();
shapeRenderer.setAutoShapeType(true);
- Gdx.input.setInputProcessor(this);
+
+ InputMultiplexer inputMultiplexer = new InputMultiplexer();
+ inputMultiplexer.addProcessor(this);
+
try {
generateCards();
} catch (IOException e) {
@@ -51,6 +69,26 @@ public class CardChoiceScreen extends InputAdapter implements Screen {
}
this.chosenCards = new ArrayList<>();
this.maxCards = 5;
+ stage = new Stage();
+ inputMultiplexer.addProcessor(stage);
+
+ confirmCards = new SimpleButton("Confirm cards", roboRallyWrapper.font).getButton();
+ stage.addActor(confirmCards);
+ confirmCards.setY(viewport.getWorldHeight() + 60);
+ confirmCards.setX(15);
+ confirmCards.setTouchable(Touchable.enabled);
+ confirmCards.addListener(new InputListener() {
+ @Override
+ public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
+ System.out.println(chosenCards.size());
+ System.out.println(maxCards);
+ if (chosenCards.size() == maxCards) {
+ System.out.println("Lock cards!");
+ }
+ return false;
+ }
+ });
+ Gdx.input.setInputProcessor(inputMultiplexer);
}
/**
@@ -60,10 +98,10 @@ public class CardChoiceScreen extends InputAdapter implements Screen {
private void generateCards() throws IOException {
IDeck deck = DeckLoaderUtil.loadProgrammingCardsDeck();
deck.shuffle();
- //Get 16 programming cards
+ //Get 9 programming cards
List cardList = deck.getCards().subList(0, 9);
float cardWidth = viewport.getWorldWidth() / 3;
- float cardHeight = viewport.getWorldHeight() / 3;
+ float cardHeight = (viewport.getWorldHeight() - 30) / 3;
for (int i = 0; i < 9; i++) {
int x = (int)(((i % 3)*cardWidth) + 10);
int y = (int)(((i / 3) * cardHeight + 10));
@@ -102,6 +140,7 @@ public class CardChoiceScreen extends InputAdapter implements Screen {
shapeRenderer.rect(cardRectangle.rectangle.x, cardRectangle.rectangle.y,
cardRectangle.rectangle.width, cardRectangle.rectangle.height);
}
+
shapeRenderer.end();
roboRallyWrapper.batch.begin();
for (CardRectangle cardRectangle : cardRectangles) {
@@ -112,6 +151,7 @@ public class CardChoiceScreen extends InputAdapter implements Screen {
drawCardSymbol(cardRectangle);
}
roboRallyWrapper.batch.end();
+ stage.draw();
}
/**