diff --git a/frontend/core/src/com/gameware/game/GameWare.java b/frontend/core/src/com/gameware/game/GameWare.java index 10918e9e4bff559dd9542a0bae893ee523d3c819..a6648d865105a7bcc363785d94c5f0ef50246b28 100644 --- a/frontend/core/src/com/gameware/game/GameWare.java +++ b/frontend/core/src/com/gameware/game/GameWare.java @@ -16,7 +16,7 @@ import com.gameware.game.models.Player; import com.gameware.game.states.GameStateManager; import com.gameware.game.states.LoginState; import com.gameware.game.states.MenuState; -import com.gameware.game.states.PlayStateTemplate; +import com.gameware.game.states.game_states.PlayStateTemplate; import java.io.IOException; import java.lang.reflect.Constructor; diff --git a/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java b/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java index e470f42f61d2da79cf88488bdd7278d73cc8761e..0d347a7035afa01f1325f40b223a45998a372243 100644 --- a/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java +++ b/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java @@ -115,11 +115,11 @@ public class CreateNewTournamentState extends MenuStateTemplate { roundsPerGameSelectBox.setItems(1,2,3); startDelaySelectBox.setItems(1,2,3); - nameDialog = makeDialog(nameLabelQuestion); - timePerRoundDialog = makeDialog(timePerRoundLabelQuestion); - maxPlayersDialog = makeDialog(maxPlayersLabelQuestion); - roundsPerGameDialog = makeDialog(roundsPerGameLabelQuestion); - startDelayDialog = makeDialog(startDelayLabelQuestion); + nameDialog = makeQuestionIconDialog(nameLabelQuestion); + timePerRoundDialog = makeQuestionIconDialog(timePerRoundLabelQuestion); + maxPlayersDialog = makeQuestionIconDialog(maxPlayersLabelQuestion); + roundsPerGameDialog = makeQuestionIconDialog(roundsPerGameLabelQuestion); + startDelayDialog = makeQuestionIconDialog(startDelayLabelQuestion); makeStage(); } @@ -146,21 +146,21 @@ public class CreateNewTournamentState extends MenuStateTemplate { innerTable.pad(spacingLittle); innerTable.setBackground(backgroundTableBlueRounded); - innerTable.add(makeRow(nameLabel, nameDialog)); + innerTable.add(makeTableWithLabelAndQuestionIcon(nameLabel, nameDialog)); nameInputField.setMaxLength(9); innerTable.add(nameInputField).size(nameFieldWidth, inputFieldHeight); innerTable.row(); removeKeyPadAtTouch(); - innerTable.add(makeRow(timePerRoundLabel, timePerRoundDialog)); + innerTable.add(makeTableWithLabelAndQuestionIcon(timePerRoundLabel, timePerRoundDialog)); innerTable.add(timePerRoundSelectBox); innerTable.row(); - innerTable.add(makeRow(maxPlayersLabel, maxPlayersDialog)); + innerTable.add(makeTableWithLabelAndQuestionIcon(maxPlayersLabel, maxPlayersDialog)); innerTable.add(maxPlayersSelectBox); innerTable.row(); - innerTable.add(makeRow(roundsPerGameLabel, roundsPerGameDialog)); + innerTable.add(makeTableWithLabelAndQuestionIcon(roundsPerGameLabel, roundsPerGameDialog)); innerTable.add(roundsPerGameSelectBox); innerTable.row(); - innerTable.add(makeRow(startDelayLabel, startDelayDialog)); + innerTable.add(makeTableWithLabelAndQuestionIcon(startDelayLabel, startDelayDialog)); innerTable.add(startDelaySelectBox); rootTable.add(innerTable).colspan(2); rootTable.row(); @@ -186,11 +186,11 @@ public class CreateNewTournamentState extends MenuStateTemplate { continue; } - innerTable.add(new Image(GameWare.getInstance().getGameIdToPlayState().get(g.getId()).screenshot)).width(imageWidthAndHeigh).height(imageWidthAndHeigh); + innerTable.add(new Image(GameWare.getInstance().getGameIdToPlayState().get(g.getId()).getScreenshot())).width(imageWidthAndHeigh).height(imageWidthAndHeigh); Table innerInnerTable = new Table(); innerInnerTable.defaults().space(spacingLittle); - innerInnerTable.add(makeRow(new Label(g.getName(), skin), makeDialog(new Label(g.getExplanation().replaceAll("\\\\n", "\n"), skin)))).spaceBottom(spacingLittle); + innerInnerTable.add(makeTableWithLabelAndQuestionIcon(new Label(g.getName(), skin), makeQuestionIconDialog(new Label(g.getExplanation().replaceAll("\\\\n", "\n"), skin)))).spaceBottom(spacingLittle); innerInnerTable.row(); CheckBox gameCB = new CheckBox("",skin); diff --git a/frontend/core/src/com/gameware/game/states/MenuStateTemplate.java b/frontend/core/src/com/gameware/game/states/MenuStateTemplate.java index ec31c9f58c802e98d7b1b29abd302564812463dd..80700b7a92ccb7634f96fa6469f0bd489c25262b 100644 --- a/frontend/core/src/com/gameware/game/states/MenuStateTemplate.java +++ b/frontend/core/src/com/gameware/game/states/MenuStateTemplate.java @@ -70,6 +70,7 @@ public abstract class MenuStateTemplate extends State{ @Override public void update(float dt){ if(firstTimeRunningUpdate) { +// First time running update change input processor. Or else it won't work when states are stacked in the gsm Gdx.input.setInputProcessor(stage); Gdx.input.setCatchBackKey(true); firstTimeRunningUpdate = false; @@ -121,7 +122,7 @@ public abstract class MenuStateTemplate extends State{ // Dialog methods - protected Table makeRow(Label label, final Dialog dialog){ + protected Table makeTableWithLabelAndQuestionIcon(Label label, final Dialog dialog){ Table table = new Table(); table.add(label).spaceRight(spacingLittle/2); Image questionMarkImage = new Image(questionMark); @@ -136,7 +137,7 @@ public abstract class MenuStateTemplate extends State{ return table; } - protected Dialog makeDialog(Label label){ + protected Dialog makeQuestionIconDialog(Label label){ Dialog dialog = new Dialog("", skin, "dialog") { public void result(Object obj) { } }; diff --git a/frontend/core/src/com/gameware/game/states/OptionsState.java b/frontend/core/src/com/gameware/game/states/OptionsState.java index eb67417a150c7f9edf9ccc9537652b7d2e87046b..eb13b34dd18c641cd5c5fb9baca045b86e8e5870 100644 --- a/frontend/core/src/com/gameware/game/states/OptionsState.java +++ b/frontend/core/src/com/gameware/game/states/OptionsState.java @@ -11,6 +11,7 @@ import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.utils.Scaling; import com.gameware.game.GameWare; + public class OptionsState extends MenuStateTemplate { // Labels @@ -27,7 +28,7 @@ public class OptionsState extends MenuStateTemplate { public OptionsState(GameStateManager gsm) { super(gsm); - stage.clear(); + makeStage(); } diff --git a/frontend/core/src/com/gameware/game/states/PauseState.java b/frontend/core/src/com/gameware/game/states/PauseState.java index e178a21c2d567bd7e845ba66d57886771d130da3..767d2606f4421a0ba5c07b86d4dd87778fdfcb03 100644 --- a/frontend/core/src/com/gameware/game/states/PauseState.java +++ b/frontend/core/src/com/gameware/game/states/PauseState.java @@ -4,12 +4,12 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.SpriteBatch; -import com.badlogic.gdx.graphics.glutils.ShapeRenderer; import com.gameware.game.GameWare; import com.gameware.game.sprites.ConfirmationBox; import com.gameware.game.sprites.LoadingText; import com.gameware.game.sprites.PauseCircle; import com.gameware.game.sprites.PauseMenuButton; +import com.gameware.game.states.game_states.PlayStateTemplate; import java.util.ArrayList; import java.util.List; diff --git a/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java b/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java index ecc2f9aa81786f651b313c9ce86574d5095809c1..cddb5af239f84f52e4cc473ce853485203f43f8e 100644 --- a/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java +++ b/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java @@ -11,6 +11,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.gameware.game.GameWare; import com.gameware.game.models.Game; +import com.gameware.game.states.game_states.PlayStateTemplate; import java.io.IOException; import java.util.ArrayList; @@ -79,10 +80,10 @@ public class SinglePlayerSelectGameState extends MenuStateTemplate { if(GameWare.getInstance().getGameIdToPlayState().get(g.getId()) == null){ continue; } - innerTable.add(new Image(GameWare.getInstance().getGameIdToPlayState().get(g.getId()).screenshot)).width(imageWidthAndHeigh).height(imageWidthAndHeigh).pad(spacingLittle); + innerTable.add(new Image(GameWare.getInstance().getGameIdToPlayState().get(g.getId()).getScreenshot())).width(imageWidthAndHeigh).height(imageWidthAndHeigh).pad(spacingLittle); Table innerInnerTable = new Table(); - innerInnerTable.add(makeRow(new Label(g.getName(), skin), makeDialog(new Label(g.getExplanation().replaceAll("\\\\n", "\n"), skin)))).spaceBottom(spacingLittle); + innerInnerTable.add(makeTableWithLabelAndQuestionIcon(new Label(g.getName(), skin), makeQuestionIconDialog(new Label(g.getExplanation().replaceAll("\\\\n", "\n"), skin)))).spaceBottom(spacingLittle); innerInnerTable.row(); TextButton gameBtn = new TextButton(playBtnText, makeTextButtonStyle(greenColor)); diff --git a/frontend/core/src/com/gameware/game/states/State.java b/frontend/core/src/com/gameware/game/states/State.java index 383963103227b1b409695d640d24bb3ab24f1703..8a7a3633c078b1294073a64a447f0bd8b7f9c0ea 100644 --- a/frontend/core/src/com/gameware/game/states/State.java +++ b/frontend/core/src/com/gameware/game/states/State.java @@ -40,7 +40,7 @@ public abstract class State{ } -// State methods +// Abstract state methods protected abstract void handleInput(); public abstract void update(float dt); diff --git a/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java b/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java index 3f70f87f9bfb39ac5a64ecc3b6e13628afe8b17a..2ff5fc0f063feced6a7bf6132c8f550a0ca52285 100644 --- a/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java +++ b/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java @@ -2,7 +2,6 @@ package com.gameware.game.states; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; -import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.ui.Dialog; import com.badlogic.gdx.scenes.scene2d.ui.Label; @@ -55,8 +54,8 @@ public class TournamentHighScoreState extends MenuStateTemplate{ e.printStackTrace(); } - totalDialog = makeDialog(totalDialogLabel); - lastRoundDialog = makeDialog(lastRoundLabel); + totalDialog = makeQuestionIconDialog(totalDialogLabel); + lastRoundDialog = makeQuestionIconDialog(lastRoundLabel); makeStage(); } @@ -95,8 +94,8 @@ public class TournamentHighScoreState extends MenuStateTemplate{ innerTable.setBackground(backgroundTableBlueRounded); innerTable.add(colOneLabel).top(); - innerTable.add(makeRow(colTwoLabel,totalDialog)).top(); - innerTable.add(makeRow(colThreeLabel,lastRoundDialog)).top(); + innerTable.add(makeTableWithLabelAndQuestionIcon(colTwoLabel,totalDialog)).top(); + innerTable.add(makeTableWithLabelAndQuestionIcon(colThreeLabel,lastRoundDialog)).top(); innerTable.row(); for(Point point : points){ diff --git a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java index e4bbbea929cd478e315b8f010d2f4fb7d28997f9..0439b88fa5f6ca5be22b1e907e080a09b42f0d3c 100644 --- a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java +++ b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java @@ -2,7 +2,6 @@ package com.gameware.game.states; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; -import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.scenes.scene2d.InputEvent; @@ -21,7 +20,7 @@ import com.gameware.game.sprites.LoadingText; import java.io.IOException; -public class ViewHighScoreState extends State { +public class ViewHighScoreState extends MenuStateTemplate { // Data private List<Game> games = new ArrayList<>(); @@ -33,7 +32,7 @@ public class ViewHighScoreState extends State { // Texts private final String backBtnText = "Back"; - private final String BtnText = "View High Score!"; + private final String BtnText = "View High Score"; // Values private final float scrollPaneWidth = Gdx.graphics.getWidth()/1.15f; @@ -58,7 +57,7 @@ public class ViewHighScoreState extends State { makeStage(); } - private void makeStage(){ + protected void makeStage(){ Table rootTable = super.makeRootTable(); titleLabel.setFontScale(titleFontBigScale); @@ -88,10 +87,10 @@ public class ViewHighScoreState extends State { if(GameWare.getInstance().getGameIdToPlayState().get(g.getId()) == null){ continue; } - innerTable.add(new Image(GameWare.getInstance().getGameIdToPlayState().get(g.getId()).screenshot)).width(imageWidthAndHeigh).height(imageWidthAndHeigh).pad(spacingLittle); + innerTable.add(new Image(GameWare.getInstance().getGameIdToPlayState().get(g.getId()).getScreenshot())).width(imageWidthAndHeigh).height(imageWidthAndHeigh).pad(spacingLittle); Table innerInnerTable = new Table(); - innerInnerTable.add(makeRow(new Label(g.getName(), skin), makeDialog(new Label(g.getExplanation().replaceAll("\\\\n", "\n"), skin)))).spaceBottom(spacingLittle); + innerInnerTable.add(makeTableWithLabelAndQuestionIcon(new Label(g.getName(), skin), makeQuestionIconDialog(new Label(g.getExplanation().replaceAll("\\\\n", "\n"), skin)))).spaceBottom(spacingLittle); innerInnerTable.row(); TextButton gameBtn = new TextButton(BtnText, skin); diff --git a/frontend/core/src/com/gameware/game/states/ViewTournamentState.java b/frontend/core/src/com/gameware/game/states/ViewTournamentState.java index be43310ca9648f02c8928db61c1d4b03a125f15a..e77a8f2d854f49ef1913ebfa4b6c67e22f3fb54c 100644 --- a/frontend/core/src/com/gameware/game/states/ViewTournamentState.java +++ b/frontend/core/src/com/gameware/game/states/ViewTournamentState.java @@ -20,6 +20,7 @@ import com.gameware.game.models.Game; import com.gameware.game.models.Round; import com.gameware.game.models.Tournament; import com.gameware.game.sprites.LoadingText; +import com.gameware.game.states.game_states.PlayStateTemplate; import java.io.IOException; import java.util.List; @@ -109,7 +110,7 @@ public class ViewTournamentState extends MenuStateTemplate { currentRoundTable.setBackground(backgroundTableBlueRounded); currentRoundTable.add(new Label("This round:\n\n"+gameName,skin)).space(spacingLittle); PlayStateTemplate state = GameWare.getInstance().getGameIdToPlayState().get(round.getGameId()); - currentRoundTable.add(new Image(state.screenshot)).width(imageWidthAndHeigh).height(imageWidthAndHeigh).spaceBottom(spacingMedium).colspan(2); + currentRoundTable.add(new Image(state.getScreenshot())).width(imageWidthAndHeigh).height(imageWidthAndHeigh).spaceBottom(spacingMedium).colspan(2); rootTable.add(currentRoundTable).maxHeight(Gdx.graphics.getHeight()/5).colspan(2); rootTable.row(); diff --git a/frontend/core/src/com/gameware/game/states/BubbleWrapState.java b/frontend/core/src/com/gameware/game/states/game_states/BubbleWrapState.java similarity index 97% rename from frontend/core/src/com/gameware/game/states/BubbleWrapState.java rename to frontend/core/src/com/gameware/game/states/game_states/BubbleWrapState.java index 5d449bf4a3c9293d4779a0761e583286744e40fa..0a1fffa4602a7dc193288e287d73ac03e39543d2 100644 --- a/frontend/core/src/com/gameware/game/states/BubbleWrapState.java +++ b/frontend/core/src/com/gameware/game/states/game_states/BubbleWrapState.java @@ -1,9 +1,10 @@ -package com.gameware.game.states; +package com.gameware.game.states.game_states; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.gameware.game.sprites.Bubble; +import com.gameware.game.states.GameStateManager; import java.util.ArrayList; diff --git a/frontend/core/src/com/gameware/game/states/ColorRushState.java b/frontend/core/src/com/gameware/game/states/game_states/ColorRushState.java similarity index 99% rename from frontend/core/src/com/gameware/game/states/ColorRushState.java rename to frontend/core/src/com/gameware/game/states/game_states/ColorRushState.java index ee8adc4964755c5a507f4b6274d203164981872c..12d8bfe472a304c12839aa3ee6d21f65679e45cc 100644 --- a/frontend/core/src/com/gameware/game/states/ColorRushState.java +++ b/frontend/core/src/com/gameware/game/states/game_states/ColorRushState.java @@ -1,9 +1,10 @@ -package com.gameware.game.states; +package com.gameware.game.states.game_states; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.gameware.game.sprites.ColorRushButton; import com.gameware.game.sprites.ColorRushTarget; +import com.gameware.game.states.GameStateManager; import java.util.ArrayList; import java.util.Collections; diff --git a/frontend/core/src/com/gameware/game/states/FruitSlicerState.java b/frontend/core/src/com/gameware/game/states/game_states/FruitSlicerState.java similarity index 98% rename from frontend/core/src/com/gameware/game/states/FruitSlicerState.java rename to frontend/core/src/com/gameware/game/states/game_states/FruitSlicerState.java index 25e3e86833fb3487b94e9640043bdd66c040f372..6c805a938547daa4b0f7f5c54d2c5c18dd8170e1 100644 --- a/frontend/core/src/com/gameware/game/states/FruitSlicerState.java +++ b/frontend/core/src/com/gameware/game/states/game_states/FruitSlicerState.java @@ -1,4 +1,4 @@ -package com.gameware.game.states; +package com.gameware.game.states.game_states; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.audio.Sound; @@ -8,6 +8,7 @@ import com.badlogic.gdx.math.Vector3; import com.gameware.game.GameWare; import com.gameware.game.sprites.Fruit; import com.gameware.game.sprites.SlicingCircle; +import com.gameware.game.states.GameStateManager; import java.util.ArrayList; import java.util.List; diff --git a/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java b/frontend/core/src/com/gameware/game/states/game_states/PlayStateTemplate.java similarity index 94% rename from frontend/core/src/com/gameware/game/states/PlayStateTemplate.java rename to frontend/core/src/com/gameware/game/states/game_states/PlayStateTemplate.java index f616042025d77a8b399697f67ef8a0a9c78a0006..640867001e3abb4488693230f560b61242ad9983 100644 --- a/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java +++ b/frontend/core/src/com/gameware/game/states/game_states/PlayStateTemplate.java @@ -1,4 +1,4 @@ -package com.gameware.game.states; +package com.gameware.game.states.game_states; import com.badlogic.gdx.Gdx; @@ -14,6 +14,13 @@ import com.gameware.game.models.RoundCheck; import com.gameware.game.models.Tournament; import com.gameware.game.sprites.LoadingText; import com.gameware.game.sprites.PauseButton; +import com.gameware.game.states.FinishedTournamentState; +import com.gameware.game.states.GameStateManager; +import com.gameware.game.states.PauseState; +import com.gameware.game.states.ScoreState; +import com.gameware.game.states.SinglePlayerSelectGameState; +import com.gameware.game.states.State; +import com.gameware.game.states.ViewTournamentState; import java.io.IOException; import java.util.List; @@ -139,7 +146,7 @@ public abstract class PlayStateTemplate extends State { // When game is done, this method is called and posts the score, ands new instance of the game, // uptades rounds and tournaments if in a tournament and sends back to the correct state. // Remember to use setScore before using this method. - protected void gameDone(){ + public void gameDone(){ String id = ""; //Find the id to the game just played for (String key : GameWare.getInstance().getGameIdToPlayState().keySet()){ @@ -255,6 +262,10 @@ public abstract class PlayStateTemplate extends State { return this.totalGameTime; } + public Texture getScreenshot(){ + return screenshot; + } + // Hide and show methods: public void hidePauseButton(){ this.pauseButtonVisible = false;