From 9da73392d9fd987a2d6f41f0aab4e0bba86629dd Mon Sep 17 00:00:00 2001 From: Tor Martin Wang <tmwang@stud.ntnu.no> Date: Tue, 7 Apr 2020 10:41:58 +0200 Subject: [PATCH] Almost completes issue #73 --- frontend/android/AndroidManifest.xml | 2 +- .../{glassy/raw => }/DimmingTexture.png | Bin frontend/android/assets/LoadingText.png | Bin 0 -> 10230 bytes .../core/src/com/gameware/game/GameWare.java | 1 + .../gameware/game/sprites/LoadingText.java | 59 ++++++++++++++++++ .../gameware/game/states/BubbleWrapState.java | 16 +++-- .../gameware/game/states/ColorRushState.java | 20 +++--- .../com/gameware/game/states/LoginState.java | 38 ++++++++++- .../com/gameware/game/states/MenuState.java | 22 ++++++- .../com/gameware/game/states/PauseState.java | 24 +++++-- .../game/states/PlayStateTemplate.java | 39 +++++++++--- .../game/states/ViewHighScoreState.java | 23 ++++++- 12 files changed, 201 insertions(+), 43 deletions(-) rename frontend/android/assets/{glassy/raw => }/DimmingTexture.png (100%) create mode 100644 frontend/android/assets/LoadingText.png create mode 100644 frontend/core/src/com/gameware/game/sprites/LoadingText.java diff --git a/frontend/android/AndroidManifest.xml b/frontend/android/AndroidManifest.xml index c849555..8ff4dbc 100644 --- a/frontend/android/AndroidManifest.xml +++ b/frontend/android/AndroidManifest.xml @@ -12,7 +12,7 @@ android:theme="@style/GdxTheme" > <activity android:name="com.gameware.game.AndroidLauncher" - android:label="@string/app_name" + android:label="@string/app_name" android:screenOrientation="portrait" android:configChanges="keyboard|keyboardHidden|navigation|orientation|screenSize|screenLayout"> <intent-filter> diff --git a/frontend/android/assets/glassy/raw/DimmingTexture.png b/frontend/android/assets/DimmingTexture.png similarity index 100% rename from frontend/android/assets/glassy/raw/DimmingTexture.png rename to frontend/android/assets/DimmingTexture.png diff --git a/frontend/android/assets/LoadingText.png b/frontend/android/assets/LoadingText.png new file mode 100644 index 0000000000000000000000000000000000000000..818bf297f5bf214509f5870cd611ef8e1747a9aa GIT binary patch literal 10230 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 P3=9mOu6{1-oD!M<%}o*| literal 0 HcmV?d00001 diff --git a/frontend/core/src/com/gameware/game/GameWare.java b/frontend/core/src/com/gameware/game/GameWare.java index 3364214..aacb21b 100644 --- a/frontend/core/src/com/gameware/game/GameWare.java +++ b/frontend/core/src/com/gameware/game/GameWare.java @@ -70,6 +70,7 @@ public class GameWare extends ApplicationAdapter { music.setVolume(0.1f); toggleMusic(); + //gsm.push(new LoginState(gsm)); gsm.push(new LoginState(gsm)); // try{ diff --git a/frontend/core/src/com/gameware/game/sprites/LoadingText.java b/frontend/core/src/com/gameware/game/sprites/LoadingText.java new file mode 100644 index 0000000..965300d --- /dev/null +++ b/frontend/core/src/com/gameware/game/sprites/LoadingText.java @@ -0,0 +1,59 @@ +package com.gameware.game.sprites; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; + +public class LoadingText extends Sprite { + private boolean isLoading = false; + private boolean firstUpdateFinished = false; + private Texture loadingText = new Texture(Gdx.files.internal("LoadingText.png")); + private Texture dimmingBackgroundTexture = new Texture(Gdx.files.internal("DimmingTexture.png")); + + @Override + public void reset() { + this.firstUpdateFinished = false; + this.isLoading = false; + } + + @Override + public void draw(SpriteBatch sb) { + if(this.isLoading) { + sb.begin(); + sb.draw(this.dimmingBackgroundTexture, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); + sb.draw(this.loadingText, Gdx.graphics.getWidth() / 4, Gdx.graphics.getHeight() / 2, Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 10); + sb.end(); + } + } + + @Override + public void update(float dt) { + + // If we've already completed the first call to this update method after isLoading was + // set to true (this means that the draw method has been called) and the loading text is + // visible we know that the loading has finished + if(this.isLoading && this.firstUpdateFinished){ + this.isLoading = false; + this.firstUpdateFinished = false; + } + + // We need to wait one iteration of update() for the screen to render the loading text first + else if(this.isLoading){ + this.firstUpdateFinished = true; + } + } + + @Override + public void dispose() { + this.dimmingBackgroundTexture.dispose(); + this.loadingText.dispose(); + } + + public void setLoading(){ + this.isLoading = true; + } + + public boolean textIsRendering(){ + return this.firstUpdateFinished && this.isLoading; + } +} diff --git a/frontend/core/src/com/gameware/game/states/BubbleWrapState.java b/frontend/core/src/com/gameware/game/states/BubbleWrapState.java index 6983a16..44f1377 100644 --- a/frontend/core/src/com/gameware/game/states/BubbleWrapState.java +++ b/frontend/core/src/com/gameware/game/states/BubbleWrapState.java @@ -82,20 +82,19 @@ public class BubbleWrapState extends PlayStateTemplate { // Keeps score consistent this.setScore(this.poppedBubbles); - - // Checks if the pause button was pressed - super.checkPause(); } } @Override public void update(float dt) { + super.update(dt); + Gdx.input.setInputProcessor(stage); this.handleInput(); this.currentTime += dt; - timeLabel.setText("Time left: " + Math.round((totalTime - currentTime) * 100.0) / 100.0); + timeLabel.setText("Time left: " + Math.max(Math.round((totalTime - currentTime) * 100.0) / 100.0, 0.00)); // Game should finish if the time has run out if (this.currentTime >= this.totalTime) { @@ -116,9 +115,7 @@ public class BubbleWrapState extends PlayStateTemplate { public void render(SpriteBatch sb) { stage.draw(); - // Renders pause button - super.renderPauseButton(sb); - + super.render(sb); } private void createBubbles() { @@ -163,18 +160,19 @@ public class BubbleWrapState extends PlayStateTemplate { private void handleFinishedGame() { System.out.println("Game finished, starting new state"); this.setScore(this.poppedBubbles); - this.gameDone(); + super.setGameFinished(); return; } @Override public void dispose() { + super.dispose(); + stage.dispose(); this.unpopped.dispose(); this.popped1.dispose(); this.popped2.dispose(); this.popped3.dispose(); - super.pauseButton.dispose(); } @Override diff --git a/frontend/core/src/com/gameware/game/states/ColorRushState.java b/frontend/core/src/com/gameware/game/states/ColorRushState.java index c669366..4be8805 100644 --- a/frontend/core/src/com/gameware/game/states/ColorRushState.java +++ b/frontend/core/src/com/gameware/game/states/ColorRushState.java @@ -7,7 +7,6 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.gameware.game.GameWare; import com.gameware.game.sprites.ColorRushButton; import com.gameware.game.sprites.ColorRushTarget; -import com.gameware.game.sprites.PauseButton; import java.util.ArrayList; import java.util.Collections; @@ -103,23 +102,21 @@ public class ColorRushState extends PlayStateTemplate { // Keeps score consistent this.setScore(this.targetsHit); - - //Pauses the game if the user pressed the pause button - super.checkPause(); } } @Override public void update(float dt) { + super.update(dt); // Increases the current duration, used to keep track of the play duration and stop the game // after a while this.currentDuration += dt; - // Post score and exit if the game is over + // Set score and start rendering the loading text if the game is over if(this.currentDuration > this.totalGameDuration){ this.setScore(this.targetsHit); - this.gameDone(); + this.setGameFinished(); return; } @@ -171,14 +168,10 @@ public class ColorRushState extends PlayStateTemplate { sb.draw(this.background, 0, Gdx.graphics.getHeight()/5, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); // Time left - this.font.draw(sb, String.valueOf(Math.round((this.totalGameDuration - this.currentDuration) * 100) / 100.0), Gdx.graphics.getWidth()/40,Gdx.graphics.getHeight() - Gdx.graphics.getHeight()/40); + this.font.draw(sb, String.valueOf(Math.max(Math.round((this.totalGameDuration - this.currentDuration) * 100), 0.00) / 100.0), Gdx.graphics.getWidth()/40,Gdx.graphics.getHeight() - Gdx.graphics.getHeight()/40); sb.end(); - - // Renders pause button - super.renderPauseButton(sb); - for (ColorRushButton button : this.buttons) { button.draw(sb); } @@ -191,11 +184,13 @@ public class ColorRushState extends PlayStateTemplate { target.draw(sb); } - + super.render(sb); } @Override public void dispose() { + super.dispose(); + for (ColorRushButton button : this.buttons) { button.dispose(); } @@ -215,7 +210,6 @@ public class ColorRushState extends PlayStateTemplate { this.font.dispose(); this.background.dispose(); this.disabledColorTexture.dispose(); - super.pauseButton.dispose(); } @Override diff --git a/frontend/core/src/com/gameware/game/states/LoginState.java b/frontend/core/src/com/gameware/game/states/LoginState.java index d4721ac..5ac4493 100644 --- a/frontend/core/src/com/gameware/game/states/LoginState.java +++ b/frontend/core/src/com/gameware/game/states/LoginState.java @@ -1,6 +1,7 @@ package com.gameware.game.states; import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputListener; @@ -12,6 +13,7 @@ import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.gameware.game.GameWare; import com.gameware.game.QueryIntermediate; import com.gameware.game.models.Player; +import com.gameware.game.sprites.LoadingText; import java.io.IOException; import java.util.NoSuchElementException; @@ -39,6 +41,12 @@ public class LoginState extends State { private String takenUsernameText = "Username already taken"; private String ioExceptionText = "Something went wrong with query"; + private LoadingText loadingText = new LoadingText(); + private boolean loginBtnClicked = false; + private boolean signUpBtnClicked = false; + + + public LoginState(GameStateManager gsm) { super(gsm); makeStage(); @@ -82,7 +90,7 @@ public class LoginState extends State { loginBtn.addListener(new ClickListener() { @Override public void clicked(InputEvent e, float x, float y){ - handleLoginBtnClick(); + setLoginBtnClicked(); } }); return loginBtn; @@ -93,7 +101,7 @@ public class LoginState extends State { signUpBtn.addListener(new ClickListener() { @Override public void clicked(InputEvent e, float x, float y){ - handleSignUpBtnClick(); + setSignUpBtnClicked(); } }); return signUpBtn; @@ -142,11 +150,23 @@ public class LoginState extends State { @Override public void update(float dt) { stage.act(dt); + + if(this.loginBtnClicked && this.loadingText.textIsRendering()){ + this.handleLoginBtnClick(); + } + + if(this.signUpBtnClicked && this.loadingText.textIsRendering()){ + this.handleSignUpBtnClick(); + } + + this.loadingText.update(dt); } @Override public void render(SpriteBatch sb) { stage.draw(); + + this.loadingText.draw(sb); } @Override @@ -160,6 +180,16 @@ public class LoginState extends State { passwordInputField.setText(passwordInputText); } + private void setLoginBtnClicked(){ + this.loginBtnClicked = true; + this.loadingText.setLoading(); + } + + private void setSignUpBtnClicked(){ + this.signUpBtnClicked = true; + this.loadingText.setLoading(); + } + private void handleLoginBtnClick(){ String username = usernameInputField.getText(); String password = passwordInputField.getText(); @@ -180,6 +210,8 @@ public class LoginState extends State { System.out.println(e); errorLabel.setText(e.getMessage()); } + + this.loginBtnClicked = false; } private void handleSignUpBtnClick(){ @@ -202,5 +234,7 @@ public class LoginState extends State { System.out.println(e); errorLabel.setText(e.getMessage()); } + + this.signUpBtnClicked = false; } } diff --git a/frontend/core/src/com/gameware/game/states/MenuState.java b/frontend/core/src/com/gameware/game/states/MenuState.java index ea9fa85..e6260a4 100644 --- a/frontend/core/src/com/gameware/game/states/MenuState.java +++ b/frontend/core/src/com/gameware/game/states/MenuState.java @@ -9,6 +9,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.Table; 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.sprites.LoadingText; public class MenuState extends State{ @@ -23,6 +24,10 @@ public class MenuState extends State{ private String optionBtnText = "Options"; private String logOutBtnText = "Log out"; + private boolean multiBtnClicked = false; + + private LoadingText loadingText = new LoadingText(); + public MenuState(GameStateManager gsm) { super(gsm); makeStage(); @@ -66,7 +71,7 @@ public class MenuState extends State{ TextButton multiPlayerBtn = new TextButton(multiPlayerBtnText, skin); multiPlayerBtn.addListener(new ClickListener() { @Override - public void clicked(InputEvent e, float x, float y){ handleMultiBtnClick(); } + public void clicked(InputEvent e, float x, float y){ setMultiBtnClicked(); } }); return multiPlayerBtn; } @@ -110,6 +115,11 @@ public class MenuState extends State{ @Override public void update(float dt) { + if(this.multiBtnClicked && this.loadingText.textIsRendering()){ + this.handleMultiBtnClick(); + } + this.loadingText.update(dt); + Gdx.input.setInputProcessor(stage); Gdx.input.setCatchBackKey(true); handleInput(); @@ -117,7 +127,10 @@ public class MenuState extends State{ } @Override - public void render(SpriteBatch sb) { stage.draw(); } + public void render(SpriteBatch sb) { + stage.draw(); + this.loadingText.draw(sb); + } @Override public void dispose() { stage.dispose(); } @@ -125,6 +138,11 @@ public class MenuState extends State{ @Override public void reset() { } + private void setMultiBtnClicked(){ + this.multiBtnClicked = true; + this.loadingText.setLoading(); + } + private void handleOptionsBtnClick(){ gsm.set(new OptionsState(gsm)); } diff --git a/frontend/core/src/com/gameware/game/states/PauseState.java b/frontend/core/src/com/gameware/game/states/PauseState.java index 8dccc6c..f6a3e9b 100644 --- a/frontend/core/src/com/gameware/game/states/PauseState.java +++ b/frontend/core/src/com/gameware/game/states/PauseState.java @@ -5,6 +5,7 @@ import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.glutils.ShapeRenderer; import com.gameware.game.sprites.ConfirmationBox; +import com.gameware.game.sprites.LoadingText; import com.gameware.game.sprites.PauseCircle; import com.gameware.game.sprites.PauseMenuButton; @@ -22,18 +23,23 @@ public class PauseState extends State { private PauseMenuButton exitButton; private boolean needsConfirmation; private PlayStateTemplate pausedGame; + private LoadingText loadingText; + private boolean userExited; public PauseState(GameStateManager gsm, PlayStateTemplate pausedGame) { super(gsm); this.background = new Texture(Gdx.files.internal("glassy/raw/PauseBackground.jpg")); this.pauseText = new Texture(Gdx.files.internal("glassy/raw/PauseText.png")); - this.dimmingTexture = new Texture(Gdx.files.internal("glassy/raw/DimmingTexture.png")); + this.dimmingTexture = new Texture(Gdx.files.internal("DimmingTexture.png")); this.pauseCircles = new ArrayList<PauseCircle>(); this.pausedGame = pausedGame; + this.loadingText = new LoadingText(); + this.userExited = false; + int confirmationBoxWidth = Gdx.graphics.getWidth()*7/8; int confirmationBoxHeight = confirmationBoxWidth/2; this.confirmationBox = new ConfirmationBox(Gdx.graphics.getWidth()/2 - confirmationBoxWidth/2, Gdx.graphics.getHeight()/2 - confirmationBoxHeight/2, confirmationBoxWidth, confirmationBoxHeight); @@ -62,10 +68,11 @@ public class PauseState extends State { this.needsConfirmation = false; } - // User confirms the exit, posts the current score + // User confirms the exit, this will now render the loading text and then post the + // score and exit if(this.confirmationBox.yesPressed(touchX, touchY)) { - this.gsm.pop(); - this.pausedGame.gameDone(); + this.loadingText.setLoading(); + this.userExited = true; } } @@ -75,7 +82,7 @@ public class PauseState extends State { this.gsm.pop(); } - // First step of exitting; user now needs to confirm the exit via the popup + // First step of exiting; user now needs to confirm the exit via the popup if(this.exitButton.isPressed(touchX, touchY)){ this.needsConfirmation = true; } @@ -85,6 +92,12 @@ public class PauseState extends State { @Override public void update(float dt) { + if(this.userExited && this.loadingText.textIsRendering()){ + this.gsm.pop(); + this.pausedGame.gameDone(); + } + this.loadingText.update(dt); + this.handleInput(); for(PauseCircle pc : this.pauseCircles){ @@ -133,6 +146,7 @@ public class PauseState extends State { this.confirmationBox.draw(sb); } + this.loadingText.draw(sb); } @Override diff --git a/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java b/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java index 12c2656..447f255 100644 --- a/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java +++ b/frontend/core/src/com/gameware/game/states/PlayStateTemplate.java @@ -9,6 +9,7 @@ import com.gameware.game.QueryIntermediate; import com.gameware.game.models.Round; 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 java.io.IOException; @@ -19,8 +20,9 @@ public abstract class PlayStateTemplate extends State { private Round round = null; private Tournament tournament = null; private Round nextRound = null; - protected PauseButton pauseButton; + private PauseButton pauseButton; private Round updatedRound = null; + private LoadingText loadingText = new LoadingText(); protected float totalGameTime = 30f; protected Texture screenshot = null; @@ -31,10 +33,31 @@ public abstract class PlayStateTemplate extends State { this.pauseButton = new PauseButton(); } - public void renderPauseButton(SpriteBatch sb){ + public void update(float dt){ + // Updates the loading text; nothing happens if there is no loading + this.loadingText.update(dt); + + // Post score and exit if the game is over and the loading text is rendering + if(this.loadingText.textIsRendering()){ + this.gameDone(); + return; + } + + // Pause the game if the pause button was pressed + if(Gdx.input.justTouched() && this.pauseButton.isPressed(Gdx.input.getX(), Gdx.input.getY())){ + this.gsm.push(new PauseState(this.gsm, this)); + } + } + + public void render(SpriteBatch sb){ + this.loadingText.draw(sb); this.pauseButton.draw(sb); } + public void setGameFinished(){ + this.loadingText.setLoading(); + } + public void setRound(Round r){ this.round = r; } @@ -104,13 +127,6 @@ public abstract class PlayStateTemplate extends State { } } - // Checks if the pause button was pressed, and pauses the minigame accordingly - public void checkPause(){ - if(this.pauseButton.isPressed(Gdx.input.getX(), Gdx.input.getY())){ - this.gsm.push(new PauseState(this.gsm, this)); - } - } - // Changes the color of the pause button to white public void setPauseButtonWhite(){ this.pauseButton.setButtonWhite(); @@ -120,5 +136,10 @@ public abstract class PlayStateTemplate extends State { public void setPauseButtonBlack(){ this.pauseButton.setButtonBlack(); } + + public void dispose(){ + this.loadingText.dispose(); + this.pauseButton.dispose(); + } } diff --git a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java index 05f2590..d08df0a 100644 --- a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java +++ b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java @@ -19,6 +19,8 @@ import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.gameware.game.GameWare; import com.gameware.game.models.Game; +import com.gameware.game.sprites.LoadingText; + import java.io.IOException; public class ViewHighScoreState extends State { @@ -34,6 +36,10 @@ public class ViewHighScoreState extends State { private Label stateNameLabel = new Label("High Scores", skin, "big"); private Label secondStateNameLabel = new Label("Select game", skin, "big"); + private Game chosenGame = null; + + private LoadingText loadingText = new LoadingText(); + public ViewHighScoreState(GameStateManager gsm) { super(gsm); @@ -97,6 +103,12 @@ public class ViewHighScoreState extends State { @Override public void update(float dt) { + if(this.chosenGame != null && this.loadingText.textIsRendering()){ + this.handleGameBtnClick(this.chosenGame); + } + this.loadingText.update(dt); + + Gdx.input.setInputProcessor(stage); Gdx.input.setCatchBackKey(true); handleInput(); @@ -106,11 +118,13 @@ public class ViewHighScoreState extends State { @Override public void render(SpriteBatch sb) { stage.draw(); + this.loadingText.draw(sb); } @Override public void dispose() { stage.dispose(); + this.loadingText.dispose(); } @Override @@ -128,6 +142,11 @@ public class ViewHighScoreState extends State { return backBtn; } + private void setGameBtnClicked(Game game){ + this.chosenGame = game; + this.loadingText.setLoading(); + } + private void handleBackBtnClick(){ gsm.set(new MenuState(gsm)); } @@ -144,8 +163,8 @@ public class ViewHighScoreState extends State { } public void clicked(InputEvent event, float x, float y) { - handleGameBtnClick(game); - + setGameBtnClicked(game); }; } + } \ No newline at end of file -- GitLab