Legger til mulighet for å velge debuggingbrettet

Setter viewport på brettvisning til de faktiske dimensjonene til brettet
Oppdaterer informasjon om debug knapp og spillstatus i README
This commit is contained in:
Kristian Knarvik 2020-04-24 21:19:41 +02:00
parent 1d03e24b71
commit 4e44d44be7
3 changed files with 49 additions and 17 deletions

View File

@ -6,17 +6,19 @@ vil vi gå over til en fase der målet blir å implementere ting som er gøy, me
Alle regler er hentet fra 2005 utgaven av spillguiden fra Wizards of the Coast, Inc. Alle regler er hentet fra 2005 utgaven av spillguiden fra Wizards of the Coast, Inc.
## Spillstatus ## Spillstatus
Spillet er nå i en tidlig alpha. Det er antakelig mulig å spille spillet, men ukjente bugs kan forekomme. Spillet er nå i sen alpha. Det fungerer og virker relativt stabilt, men det kan fortsatt forekomme mange endringer,
og nye bugs kan bli introdusert.
## Knapper og kontrollmekanismer ## Knapper og kontrollmekanismer
### Knapper ### Knapper
- Q: Tilbakestiller kamera og kamerarotasjon - Q: Tilbakestiller kamera og kamerarotasjon på brettvisningsskjermen
- R: Roterer kameraet - R: Roterer kameraet på brettvisningsskjermen
- TAB: Bytter mellom kortvelging og brettvisning når en holder på med å velge kort - TAB: Bytter mellom kortvelging og brettvisning når en holder på med å velge kort
- HOME: På lobby skjermen lar denne knappen deg velge et brett spesifikt laget for debugging
### Andre egenskaper ved brukergrensesnittet ### Andre egenskaper ved brukergrensesnittet
- Rullehjulet vil forstørre og forminske spillbrettet - Rullehjulet vil forstørre og forminske spillbrettet på brettvisningsskjermen
- Spillbrettet kan flyttes ved å holde inne venstre musetast og bevege musen i en retning - Spillbrettet kan flyttes ved å holde inne venstre musetast og bevege musen i en retning på brettvisningsskjermen
## Bygging og kompilering ## Bygging og kompilering

View File

@ -27,8 +27,8 @@ import java.util.List;
public class BoardActiveScreen extends InteractiveScreen { public class BoardActiveScreen extends InteractiveScreen {
private final RoboRallyWrapper roboRallyWrapper; private final RoboRallyWrapper roboRallyWrapper;
private final int tileDimensions = 64; private final int tileDimensions = 64;
private final int viewPortWidth = 12 * tileDimensions; private final int viewPortWidth;
private final int viewPortHeight = 12 * tileDimensions; private final int viewPortHeight;
private float cameraZoom = 1; private float cameraZoom = 1;
private int cameraX = 0; private int cameraX = 0;
private int cameraY = 0; private int cameraY = 0;
@ -42,6 +42,9 @@ public class BoardActiveScreen extends InteractiveScreen {
public BoardActiveScreen(final RoboRallyWrapper roboRallyWrapper) { public BoardActiveScreen(final RoboRallyWrapper roboRallyWrapper) {
this.roboRallyWrapper = roboRallyWrapper; this.roboRallyWrapper = roboRallyWrapper;
viewPortWidth = roboRallyWrapper.roboRallyGame.getWidth() * tileDimensions;
viewPortHeight = roboRallyWrapper.roboRallyGame.getHeight() * tileDimensions;
camera.setToOrtho(false, viewPortWidth, viewPortHeight); camera.setToOrtho(false, viewPortWidth, viewPortHeight);
camera.position.set(viewPortWidth / 2f, viewPortHeight / 2f, 0); camera.position.set(viewPortWidth / 2f, viewPortHeight / 2f, 0);
viewport = new ExtendViewport(viewPortWidth, viewPortHeight, camera); viewport = new ExtendViewport(viewPortWidth, viewPortHeight, camera);
@ -139,7 +142,7 @@ public class BoardActiveScreen extends InteractiveScreen {
@Override @Override
public boolean scrolled(int amount) { public boolean scrolled(int amount) {
if (amount < 0 && cameraZoom > 0.3 || amount > 0 && cameraZoom < 3) { if (amount < 0 && cameraZoom > 0.3 || amount > 0 && cameraZoom < 3) {
cameraZoom += 0.2 * amount; cameraZoom += 0.1 * amount;
} }
return true; return true;
} }
@ -150,8 +153,8 @@ public class BoardActiveScreen extends InteractiveScreen {
private void resetCamera() { private void resetCamera() {
camera.up.x = 0; camera.up.x = 0;
camera.up.y = 1; camera.up.y = 1;
cameraZoom = 1.4f; cameraZoom = 1;
camera.position.set(viewPortWidth / 2f + 128, viewPortHeight / 2f + 128, 0); camera.position.set(viewPortWidth / 1.5f, viewPortHeight / 2f, 0);
} }
/** /**
@ -172,6 +175,7 @@ public class BoardActiveScreen extends InteractiveScreen {
object.flipX(), object.flipY()); object.flipX(), object.flipY());
} }
int index = 1; int index = 1;
//Draws all participating players to the right of the board
for (Player player : roboRallyWrapper.roboRallyGame.getPlayers()) { for (Player player : roboRallyWrapper.roboRallyGame.getPlayers()) {
String playerName = player.getName(); String playerName = player.getName();
Robot robot = getPlayersRobot(player.getRobotID()); Robot robot = getPlayersRobot(player.getRobotID());
@ -179,20 +183,22 @@ public class BoardActiveScreen extends InteractiveScreen {
throw new IllegalArgumentException("The robot belonging to player " + playerName + throw new IllegalArgumentException("The robot belonging to player " + playerName +
" does not exist on the board."); " does not exist on the board.");
} }
roboRallyWrapper.font.draw(batch, playerName, viewPortWidth, 128 * index); roboRallyWrapper.font.getData().setScale(tileDimensions / 44);
roboRallyWrapper.font.draw(batch, playerName, viewPortWidth, 2 * tileDimensions * index);
roboRallyWrapper.font.draw(batch, "DMG: " + robot.getDamageTaken() + " LV: " + robot.getAmountOfLives(), roboRallyWrapper.font.draw(batch, "DMG: " + robot.getDamageTaken() + " LV: " + robot.getAmountOfLives(),
viewPortWidth, 96 + 128 * (index - 1)); viewPortWidth, 1.5f * tileDimensions + 2 * tileDimensions * (index - 1));
int lastFlagVisited = robot.getLastFlagVisited(); int lastFlagVisited = robot.getLastFlagVisited();
if (lastFlagVisited > 0) { if (lastFlagVisited > 0) {
TileType flagType = TileType.getTileTypeFromID(robot.getLastFlagVisited() + 16); TileType flagType = TileType.getTileTypeFromID(robot.getLastFlagVisited() + 16);
TextureRegion flagRegion = TextureConverterUtil.convertElement(new Tile(flagType, Direction.NORTH)); TextureRegion flagRegion = TextureConverterUtil.convertElement(new Tile(flagType, Direction.NORTH));
batch.draw(flagRegion.getTexture(), viewPortWidth + 64, 128 * (index - 1), 64 / 2, batch.draw(flagRegion.getTexture(), viewPortWidth + tileDimensions, 2 * tileDimensions *
64 / 2, 64, 64, 1, 1, 0, flagRegion.getRegionX(), (index - 1), tileDimensions / 2, tileDimensions / 2, tileDimensions,
tileDimensions, 1, 1, 0, flagRegion.getRegionX(),
flagRegion.getRegionY(), flagRegion.getRegionWidth(), flagRegion.getRegionWidth(), flagRegion.getRegionY(), flagRegion.getRegionWidth(), flagRegion.getRegionWidth(),
false, false); false, false);
} }
TextureRegion robotTexture = TextureConverterUtil.convertElement(player.getRobotID()); TextureRegion robotTexture = TextureConverterUtil.convertElement(player.getRobotID());
batch.draw(robotTexture, viewPortWidth, 128 * (index - 1)); batch.draw(robotTexture, viewPortWidth, 2 * tileDimensions * (index - 1), tileDimensions, tileDimensions);
index++; index++;
} }

View File

@ -1,12 +1,14 @@
package inf112.fiasko.roborally.gamewrapper.screens; package inf112.fiasko.roborally.gamewrapper.screens;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.Dialog; import com.badlogic.gdx.scenes.scene2d.ui.Dialog;
import com.badlogic.gdx.scenes.scene2d.ui.SelectBox; import com.badlogic.gdx.scenes.scene2d.ui.SelectBox;
import com.badlogic.gdx.scenes.scene2d.ui.Skin; import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.viewport.FitViewport; import com.badlogic.gdx.utils.viewport.FitViewport;
import inf112.fiasko.roborally.gamewrapper.RoboRallyWrapper; import inf112.fiasko.roborally.gamewrapper.RoboRallyWrapper;
import inf112.fiasko.roborally.gamewrapper.SimpleButton; import inf112.fiasko.roborally.gamewrapper.SimpleButton;
@ -21,8 +23,9 @@ import java.util.Map;
/** /**
* This screen allows the host to wait for players to join * This screen allows the host to wait for players to join
*/ */
public class LobbyScreen extends AbstractScreen { public class LobbyScreen extends InteractiveScreen {
private final RoboRallyWrapper roboRallyWrapper; private final RoboRallyWrapper roboRallyWrapper;
final SelectBox<String> selectBox;
/** /**
* Instantiates a new lobby screen * Instantiates a new lobby screen
@ -43,7 +46,7 @@ public class LobbyScreen extends AbstractScreen {
Dialog dialog = new Dialog("Setting", skin); Dialog dialog = new Dialog("Setting", skin);
final SelectBox<String> selectBox = new SelectBox<>(skin); selectBox = new SelectBox<>(skin);
selectBox.setItems("Dizzy_Dash", "Checkmate", "Risky_Exchange"); selectBox.setItems("Dizzy_Dash", "Checkmate", "Risky_Exchange");
selectBox.setPosition(Gdx.graphics.getWidth() / 2f - 100, Gdx.graphics.getHeight() / 2f - 100); selectBox.setPosition(Gdx.graphics.getWidth() / 2f - 100, Gdx.graphics.getHeight() / 2f - 100);
selectBox.setSize(200, 50); selectBox.setSize(200, 50);
@ -76,6 +79,27 @@ public class LobbyScreen extends AbstractScreen {
stage.setViewport(viewport); stage.setViewport(viewport);
} }
@Override
public void show() {
super.show();
inputMultiplexer.addProcessor(this);
}
@Override
public boolean keyUp(int keyCode) {
if (keyCode == Input.Keys.HOME) {
Array<String> items = selectBox.getItems();
String testBoard = "all_tiles_test_board";
if (!items.contains(testBoard, true)) {
items.add(testBoard);
selectBox.setItems(items);
selectBox.setSelected(testBoard);
}
return true;
}
return false;
}
@Override @Override
public void render(float delta) { public void render(float delta) {
super.render(delta); super.render(delta);