From df581e06e3c23a585a445eae89e52ea41743b7b4 Mon Sep 17 00:00:00 2001 From: Turid Dahl Date: Thu, 16 Apr 2020 15:22:45 +0200 Subject: [PATCH 1/5] #92 Moves ? icon making to State --- .../game/states/CreateNewTournamentState.java | 31 --------------- .../states/SinglePlayerSelectGameState.java | 34 ---------------- .../src/com/gameware/game/states/State.java | 39 +++++++++++++++++++ .../game/states/TournamentHighScoreState.java | 30 -------------- .../game/states/ViewHighScoreState.java | 30 -------------- 5 files changed, 39 insertions(+), 125 deletions(-) diff --git a/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java b/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java index cb40661..a048951 100644 --- a/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java +++ b/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java @@ -242,37 +242,6 @@ public class CreateNewTournamentState extends State { stage.addActor(rootTable); } - private Table makeRow(Label label, final Dialog dialog){ - Table table = new Table(); - table.add(label).spaceRight(spacingLittle/2); - Image questionMarkImage = new Image(questionMark); - questionMarkImage.addListener(new ClickListener(){ - @Override - public void clicked(InputEvent e, float x, float y){ - if(GameWare.getInstance().isSoundEffectsOn()){ checkBoxSound.play(); } - dialog.show(stage); - } - }); - table.add(questionMarkImage).width(questionMarkWidthAndHeight).height(questionMarkWidthAndHeight).top(); - return table; - } - - private Dialog makeDialog(Label label){ - Dialog dialog = new Dialog("", skin, "dialog") { - public void result(Object obj) { } - }; - - label.setAlignment(Align.center); - label.setWrap(true); - dialog.getContentTable().add(label).width(Gdx.graphics.getWidth()/1.5f).pad(dialog.getHeight()/5f).padBottom(0); - - dialog.button("Okay", true); //sends "true" as the result - dialog.getButtonTable().pad(dialog.getHeight()/2f); - - return dialog; - } - - private TextButton makeCreateBtn() { TextButton createBtn = new TextButton(createBtnText, skin); createBtn.addListener(new ClickListener() { diff --git a/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java b/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java index ed3cf5d..eb7467e 100644 --- a/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java +++ b/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java @@ -3,14 +3,12 @@ package com.gameware.game.states; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.scenes.scene2d.InputEvent; -import com.badlogic.gdx.scenes.scene2d.ui.Dialog; import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Label; import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane; 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.badlogic.gdx.utils.Align; import com.gameware.game.GameWare; import com.gameware.game.models.Game; @@ -37,8 +35,6 @@ public class SinglePlayerSelectGameState extends State { private final float scrollPaneHeight = Gdx.graphics.getHeight()/2.3f; - - protected SinglePlayerSelectGameState(GameStateManager gsm) { super(gsm); try { @@ -102,36 +98,6 @@ public class SinglePlayerSelectGameState extends State { return innerTable; } - private Table makeRow(Label label, final Dialog dialog){ - Table table = new Table(); - table.add(label).spaceRight(spacingLittle/2); - Image questionMarkImage = new Image(questionMark); - questionMarkImage.addListener(new ClickListener(){ - @Override - public void clicked(InputEvent e, float x, float y){ - if(GameWare.getInstance().isSoundEffectsOn()){ checkBoxSound.play(); } - dialog.show(stage); - } - }); - table.add(questionMarkImage).width(questionMarkWidthAndHeight).height(questionMarkWidthAndHeight).top(); - return table; - } - - private Dialog makeDialog(Label label){ - Dialog dialog = new Dialog("", skin, "dialog") { - public void result(Object obj) { } - }; - - label.setAlignment(Align.center); - label.setWrap(true); - dialog.getContentTable().add(label).width(Gdx.graphics.getWidth()/1.5f).pad(dialog.getHeight()/5f).padBottom(0); - - dialog.button("Okay", true); //sends "true" as the result - dialog.getButtonTable().pad(dialog.getHeight()/2f); - - return dialog; - } - private TextButton makeBackBtn(){ TextButton backBtn = new TextButton(backBtnText, skin); backBtn.addListener(new ClickListener() { diff --git a/frontend/core/src/com/gameware/game/states/State.java b/frontend/core/src/com/gameware/game/states/State.java index 3c0d360..3ca5b63 100644 --- a/frontend/core/src/com/gameware/game/states/State.java +++ b/frontend/core/src/com/gameware/game/states/State.java @@ -8,10 +8,16 @@ import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.TextureRegion; +import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.Stage; +import com.badlogic.gdx.scenes.scene2d.ui.Dialog; +import com.badlogic.gdx.scenes.scene2d.ui.Image; +import com.badlogic.gdx.scenes.scene2d.ui.Label; import com.badlogic.gdx.scenes.scene2d.ui.Skin; import com.badlogic.gdx.scenes.scene2d.ui.Table; +import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; +import com.badlogic.gdx.utils.Align; import com.gameware.game.GameWare; public abstract class State { @@ -126,4 +132,37 @@ public abstract class State { bgPixmap.fill(); return new TextureRegionDrawable(new TextureRegion(new Texture(bgPixmap))); } + +// Dialog methods + + protected Table makeRow(Label label, final Dialog dialog){ + Table table = new Table(); + table.add(label).spaceRight(spacingLittle/2); + Image questionMarkImage = new Image(questionMark); + questionMarkImage.addListener(new ClickListener(){ + @Override + public void clicked(InputEvent e, float x, float y){ + if(GameWare.getInstance().isSoundEffectsOn()){ checkBoxSound.play(); } + dialog.show(stage); + } + }); + table.add(questionMarkImage).width(questionMarkWidthAndHeight).height(questionMarkWidthAndHeight).top(); + return table; + } + + protected Dialog makeDialog(Label label){ + Dialog dialog = new Dialog("", skin, "dialog") { + public void result(Object obj) { } + }; + + label.setAlignment(Align.center); + label.setWrap(true); + dialog.getContentTable().add(label).width(Gdx.graphics.getWidth()/1.5f).pad(dialog.getHeight()/5f).padBottom(0); + + dialog.button("Okay", true); //sends "true" as the result + dialog.getButtonTable().pad(dialog.getHeight()/2f); + + return dialog; + } + } diff --git a/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java b/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java index a16b98b..1e5afb1 100644 --- a/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java +++ b/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java @@ -117,36 +117,6 @@ public class TournamentHighScoreState extends State{ return innerTable; } - private Table makeRow(Label label, final Dialog dialog){ - Table table = new Table(); - table.add(label).spaceRight(spacingLittle/2); - Image questionMarkImage = new Image(questionMark); - questionMarkImage.addListener(new ClickListener(){ - @Override - public void clicked(InputEvent e, float x, float y){ - if(GameWare.getInstance().isSoundEffectsOn()){ checkBoxSound.play(); } - dialog.show(stage); - } - }); - table.add(questionMarkImage).width(questionMarkWidthAndHeight).height(questionMarkWidthAndHeight).top(); - return table; - } - - private Dialog makeDialog(Label label){ - Dialog dialog = new Dialog("", skin, "dialog") { - public void result(Object obj) { } - }; - - label.setAlignment(Align.center); - label.setWrap(true); - dialog.getContentTable().add(label).width(Gdx.graphics.getWidth()/1.5f).pad(dialog.getHeight()/5f).padBottom(0); - - dialog.button("Okay", true); //sends "true" as the result - dialog.getButtonTable().pad(dialog.getHeight()/2f); - - return dialog; - } - private TextButton makeBackBtn(){ TextButton backBtn = new TextButton(backBtnText, skin); backBtn.addListener(new ClickListener() { diff --git a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java index 6ec43e8..07b7c3f 100644 --- a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java +++ b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java @@ -114,36 +114,6 @@ public class ViewHighScoreState extends State { return innerTable; } - private Table makeRow(Label label, final Dialog dialog){ - Table table = new Table(); - table.add(label).spaceRight(spacingLittle/2); - Image questionMarkImage = new Image(questionMark); - questionMarkImage.addListener(new ClickListener(){ - @Override - public void clicked(InputEvent e, float x, float y){ - if(GameWare.getInstance().isSoundEffectsOn()){ checkBoxSound.play(); } - dialog.show(stage); - } - }); - table.add(questionMarkImage).width(questionMarkWidthAndHeight).height(questionMarkWidthAndHeight).top(); - return table; - } - - private Dialog makeDialog(Label label){ - Dialog dialog = new Dialog("", skin, "dialog") { - public void result(Object obj) { } - }; - - label.setAlignment(Align.center); - label.setWrap(true); - dialog.getContentTable().add(label).width(Gdx.graphics.getWidth()/1.5f).pad(dialog.getHeight()/5f).padBottom(0); - - dialog.button("Okay", true); //sends "true" as the result - dialog.getButtonTable().pad(dialog.getHeight()/2f); - - return dialog; - } - private TextButton makeBackBtn(){ TextButton backBtn = new TextButton(backBtnText, skin); backBtn.addListener(new ClickListener() { -- GitLab From 7f4dc2067c80283234be801932c48564642ed099 Mon Sep 17 00:00:00 2001 From: Turid Dahl Date: Thu, 16 Apr 2020 15:42:19 +0200 Subject: [PATCH 2/5] #92 Removes unnecessary stuff --- frontend/android/assets/bg1_lighter.jpg | Bin 27184 -> 0 bytes frontend/android/assets/tableBG.png | Bin 2142 -> 0 bytes .../game/states/CreateNewTournamentState.java | 1 - .../com/gameware/game/states/LoginState.java | 2 -- .../game/states/TournamentHighScoreState.java | 3 --- .../game/states/ViewHighScoreState.java | 2 -- 6 files changed, 8 deletions(-) delete mode 100644 frontend/android/assets/bg1_lighter.jpg delete mode 100644 frontend/android/assets/tableBG.png diff --git a/frontend/android/assets/bg1_lighter.jpg b/frontend/android/assets/bg1_lighter.jpg deleted file mode 100644 index 4c4b076a0e829fe2af72a71da3f24c1d52ca9aab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27184 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 V=Pz~d4zNwY;OXk;vd$@?2>|%2)pq~@ diff --git a/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java b/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java index a048951..ab43f08 100644 --- a/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java +++ b/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java @@ -15,7 +15,6 @@ import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import com.badlogic.gdx.scenes.scene2d.ui.TextField; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; -import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Scaling; import com.gameware.game.GameWare; import com.gameware.game.QueryIntermediate; diff --git a/frontend/core/src/com/gameware/game/states/LoginState.java b/frontend/core/src/com/gameware/game/states/LoginState.java index 69b20b5..b77f1de 100644 --- a/frontend/core/src/com/gameware/game/states/LoginState.java +++ b/frontend/core/src/com/gameware/game/states/LoginState.java @@ -4,8 +4,6 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputListener; -import com.badlogic.gdx.scenes.scene2d.actions.Actions; -import com.badlogic.gdx.scenes.scene2d.actions.DelayAction; import com.badlogic.gdx.scenes.scene2d.ui.Label; import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.badlogic.gdx.scenes.scene2d.ui.TextButton; diff --git a/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java b/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java index 1e5afb1..cb69966 100644 --- a/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java +++ b/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java @@ -5,19 +5,16 @@ 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.Image; import com.badlogic.gdx.scenes.scene2d.ui.Label; 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.badlogic.gdx.utils.Align; import com.gameware.game.GameWare; import com.gameware.game.QueryIntermediate; import com.gameware.game.models.Point; import com.gameware.game.models.Round; import com.gameware.game.models.Tournament; -import java.awt.Container; import java.util.ArrayList; import java.util.List; diff --git a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java index 07b7c3f..964e001 100644 --- a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java +++ b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java @@ -9,14 +9,12 @@ import com.badlogic.gdx.scenes.scene2d.InputEvent; import java.util.ArrayList; import java.util.List; -import com.badlogic.gdx.scenes.scene2d.ui.Dialog; import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Label; import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane; 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.badlogic.gdx.utils.Align; import com.gameware.game.GameWare; import com.gameware.game.models.Game; import com.gameware.game.sprites.LoadingText; -- GitLab From 95f2b903b6254ef822f4814aa6486847e04712a4 Mon Sep 17 00:00:00 2001 From: Turid Dahl Date: Thu, 16 Apr 2020 15:52:27 +0200 Subject: [PATCH 3/5] #92 Makes GameWare into a proper Singleton --- .../src/com/gameware/game/AndroidLauncher.java | 3 +-- frontend/core/src/com/gameware/game/GameWare.java | 12 +++--------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/frontend/android/src/com/gameware/game/AndroidLauncher.java b/frontend/android/src/com/gameware/game/AndroidLauncher.java index 1d16b6c..d4134cc 100644 --- a/frontend/android/src/com/gameware/game/AndroidLauncher.java +++ b/frontend/android/src/com/gameware/game/AndroidLauncher.java @@ -4,13 +4,12 @@ import android.os.Bundle; import com.badlogic.gdx.backends.android.AndroidApplication; import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration; -import com.gameware.game.GameWare; public class AndroidLauncher extends AndroidApplication { @Override protected void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState); AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); - initialize(new GameWare(), config); + initialize(GameWare.getInstance(), config); } } diff --git a/frontend/core/src/com/gameware/game/GameWare.java b/frontend/core/src/com/gameware/game/GameWare.java index 68a0aa5..a8ebd2b 100644 --- a/frontend/core/src/com/gameware/game/GameWare.java +++ b/frontend/core/src/com/gameware/game/GameWare.java @@ -11,13 +11,8 @@ import com.badlogic.gdx.utils.Json; import com.badlogic.gdx.utils.JsonReader; import com.badlogic.gdx.utils.JsonValue; import com.gameware.game.models.Game; -import com.gameware.game.models.Highscore; import com.gameware.game.models.LocalStorage; -import com.gameware.game.models.ModelInterface; -import com.gameware.game.states.BubbleWrapState; import com.gameware.game.models.Player; -import com.gameware.game.states.ColorRushState; -import com.gameware.game.states.FruitSlicerState; import com.gameware.game.states.GameStateManager; import com.gameware.game.states.LoginState; import com.gameware.game.states.MenuState; @@ -25,7 +20,6 @@ import com.gameware.game.states.PlayStateTemplate; import java.io.IOException; import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -58,10 +52,11 @@ public class GameWare extends ApplicationAdapter { private Map gameIdToPlayState = new HashMap<>(); - //TODO: kanskje idk. GameWare er atm ikke en Singleton for har en public tom constructor. Men vet ikke hvor de kaller den constructoren fra når da lager objektet og kjører create. Så bare satte instance = this om den kjøres + //Singleton (lazy initialization) + private GameWare(){ } private static GameWare instance = null; - //Singleton (lazy initialization) + public static GameWare getInstance(){ if( instance == null){ instance = new GameWare(); @@ -79,7 +74,6 @@ public class GameWare extends ApplicationAdapter { loadGameConfigs(); - // Playable minigames // gameIdToPlayState.put(fruitSlicerId, new FruitSlicerState(gsm)); // gameIdToPlayState.put(colorRushId, new ColorRushState(gsm)); -- GitLab From b7b489688320d13db562ce4827bea056a7151ccb Mon Sep 17 00:00:00 2001 From: Turid Dahl Date: Thu, 16 Apr 2020 15:55:10 +0200 Subject: [PATCH 4/5] #92 Removes dark mode stuff --- .../core/src/com/gameware/game/GameWare.java | 41 ------------------- .../gameware/game/states/OptionsState.java | 29 ------------- 2 files changed, 70 deletions(-) diff --git a/frontend/core/src/com/gameware/game/GameWare.java b/frontend/core/src/com/gameware/game/GameWare.java index a8ebd2b..1abb03b 100644 --- a/frontend/core/src/com/gameware/game/GameWare.java +++ b/frontend/core/src/com/gameware/game/GameWare.java @@ -45,8 +45,6 @@ public class GameWare extends ApplicationAdapter { private Boolean musicOn = false; private Boolean soundEffectsOn = true; private Boolean includeFin = false; - //private Boolean darkMode = false; - //private String darkModeLabelString = "default"; private Player player; private List games = new ArrayList<>(); @@ -98,21 +96,6 @@ public class GameWare extends ApplicationAdapter { @Override public void render () { - /* - if (darkMode){ - Gdx.gl.glClearColor(50/255f, 50/255f, 50/255f, 1); - Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); - gsm.update(Gdx.graphics.getDeltaTime()); - gsm.render(batch); - } - else{ - Gdx.gl.glClearColor(1, 1, 1, 1); - Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); - gsm.update(Gdx.graphics.getDeltaTime()); - gsm.render(batch); - } - */ - Gdx.gl.glClearColor(1, 1, 1, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); gsm.update(Gdx.graphics.getDeltaTime()); @@ -131,18 +114,6 @@ public class GameWare extends ApplicationAdapter { writeToLocalStorage(); } - /* - public void toggleDarkMode(){ - darkMode = !darkMode; - if (darkMode){ - darkModeLabelString = "black"; - } - else{ - darkModeLabelString = "default"; - } - } - */ - public void setPlayer(Player player){ this.player = player; writeToLocalStorage(); @@ -167,22 +138,10 @@ public class GameWare extends ApplicationAdapter { gameIdToPlayState.put(id, state); } - /* - public String getDarkModeLabelString(){ - return darkModeLabelString; - } - */ - public Boolean isMusicOn(){ return musicOn; } - /* - public Boolean getDarkMode(){ - return darkMode; - } - */ - public Boolean isSoundEffectsOn() { return soundEffectsOn; } diff --git a/frontend/core/src/com/gameware/game/states/OptionsState.java b/frontend/core/src/com/gameware/game/states/OptionsState.java index 50e1f3d..35ec887 100644 --- a/frontend/core/src/com/gameware/game/states/OptionsState.java +++ b/frontend/core/src/com/gameware/game/states/OptionsState.java @@ -17,7 +17,6 @@ public class OptionsState extends State { private final Label titleLabel = new Label("Options", skin, "big"); private final Label musicToggleLabel = new Label("Music on/off", skin); private final Label soundEffectToggleLabel = new Label("Sound effects on/off", skin); -// private final Label darkModeToggleLabel = new Label("Dark mode on/off", skin); // Texts private final String backBtnText = "Back"; @@ -52,10 +51,6 @@ public class OptionsState extends State { innerTable.add(soundEffectToggleLabel); innerTable.add(makeSoundEffectCheckBox()); - //innerTable.row(); - - //innerTable.add(makeLabel(darkModeToggleLabelText,skin)).spaceBottom(spacingLittle); - //innerTable.add(makeDarkModeCheckBox(skin)).spaceBottom(spacingLittle); rootTable.add(innerTable); rootTable.row(); @@ -102,25 +97,6 @@ public class OptionsState extends State { return soundEffectToggle; } - /* - private CheckBox makeDarkModeCheckBox(Skin skin){ - CheckBox darkModeToggle = new CheckBox("",skin); - darkModeToggle.addListener(new ClickListener() { - @Override - public void clicked(InputEvent e, float x, float y){ - if(GameWare.getInstance().getSoundEffects()){ checkBoxSound.play(); } - GameWare.getInstance().toggleDarkMode(); - stage.clear(); - makeStage(); - } - }); - - darkModeToggle.getImage().setScale(2,2); - - return darkModeToggle; - } - */ - private TextButton makeBackBtn(){ TextButton backBtn = new TextButton(backBtnText, skin); backBtn.addListener(new ClickListener() { @@ -150,11 +126,6 @@ public class OptionsState extends State { @Override public void reset() { - /*if(GameWare.getInstance().getDarkMode()){ - GameWare.getInstance().toggleDarkMode(); - } - */ - if(!GameWare.getInstance().isMusicOn()){ GameWare.getInstance().toggleMusic(); } -- GitLab From a17d01ceea430862306cae1498d3b50e4dbd48c6 Mon Sep 17 00:00:00 2001 From: Turid Dahl Date: Thu, 16 Apr 2020 16:16:55 +0200 Subject: [PATCH 5/5] #92 Removes unnecessary assets and lines ++ --- frontend/android/assets/LoadingCircle.png | Bin 6027 -> 0 bytes frontend/android/assets/badlogic.jpg | Bin 68465 -> 0 bytes frontend/android/assets/button-disabled.png | Bin 16171 -> 0 bytes .../android/assets/dialog_holo_light.9.png | Bin 3314 -> 0 bytes .../states/CreateJoinTournamentState.java | 21 ++------ .../game/states/CreateNewTournamentState.java | 7 --- .../game/states/FinishedTournamentState.java | 15 ++---- .../game/states/GameStateManager.java | 4 -- .../gameware/game/states/OptionsState.java | 10 ++-- .../com/gameware/game/states/ScoreState.java | 2 +- .../states/SinglePlayerSelectGameState.java | 5 -- .../src/com/gameware/game/states/State.java | 2 +- .../game/states/TournamentHighScoreState.java | 6 --- .../states/ViewHighScoreForGameState.java | 4 -- .../game/states/ViewHighScoreState.java | 51 ++++++++---------- .../game/states/ViewTournamentState.java | 6 --- 16 files changed, 36 insertions(+), 97 deletions(-) delete mode 100644 frontend/android/assets/LoadingCircle.png delete mode 100644 frontend/android/assets/badlogic.jpg delete mode 100644 frontend/android/assets/button-disabled.png delete mode 100644 frontend/android/assets/dialog_holo_light.9.png diff --git a/frontend/android/assets/LoadingCircle.png b/frontend/android/assets/LoadingCircle.png deleted file mode 100644 index d3f836ef29aa0136bbe17f3f4942608989fa6435..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6027 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%0D_mtl(=kJ_v@+V;1Dd59><)1Vxf({Tq^pY-s)84 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 diff --git a/frontend/android/assets/button-disabled.png b/frontend/android/assets/button-disabled.png deleted file mode 100644 index 18ca2b35d0546b22a4aa1e3cffce547ab08a6605..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16171 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 JPDHLkV1f!7c;5g3 diff --git a/frontend/android/assets/dialog_holo_light.9.png b/frontend/android/assets/dialog_holo_light.9.png deleted file mode 100644 index 4a544eee5cb114d01abfc2da9ff112a5840f1c80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3314 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 diff --git a/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.java b/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.java index 036f5fb..b045436 100644 --- a/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.java +++ b/frontend/core/src/com/gameware/game/states/CreateJoinTournamentState.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; import com.badlogic.gdx.scenes.scene2d.actions.Actions; @@ -52,17 +51,17 @@ public class CreateJoinTournamentState extends State { private final String noAvailableTournamentsText = "No available tournaments"; private final String leaveDialogText = "Are you sure want to\nleave "; private final String joinedText = "Joined "; - final String leftTournamentText = "Left "; private final String finishedText = "Finished"; + final String leftTournamentText = "Left "; // Variables private Tournament tournamentTryingToLeave = null; private boolean includeFinishedTournaments = GameWare.getInstance().isIncludeFin(); - private final Color scrollPaneBGColor = Color.SKY; private final float scrollPaneWidth = Gdx.graphics.getWidth()/1.15f; private final float scrollPaneHeight = Gdx.graphics.getHeight()/4f; +// Dialogs private Dialog dialog; private CheckBox includeCheckBox; private Dialog alertDialog; @@ -110,34 +109,28 @@ public class CreateJoinTournamentState extends State { titleLabel.setFontScale(titleFontBigScale); rootTable.add(titleLabel).expandY().top(); rootTable.row(); - rootTable.add(subHeadLabel); rootTable.row(); - ScrollPane tournamentsPane = new ScrollPane(createTournamentList(), skin); rootTable.add(tournamentsPane); rootTable.getCell(tournamentsPane).size(scrollPaneWidth, scrollPaneHeight); rootTable.row(); - rootTable.add(tournamentFeedbackLabel); rootTable.row(); - Table btnTable = new Table(); btnTable.add(includeFinTournamentsLabel).spaceBottom(spacingMedium); includeCheckBox = makeIncludeCheckbox(); btnTable.add(includeCheckBox).spaceBottom(spacingMedium); btnTable.row(); - btnTable.add(makeCreateBtn()).size(buttonWidth, buttonHeight).spaceRight(spacingLittle); btnTable.add(makeJoinBtn()).size(buttonWidth, buttonHeight); rootTable.add(btnTable); rootTable.row(); - rootTable.add(makeBackBtn()).expand().bottom().left(); stage.addActor(rootTable); - makeDialog(); + makeLeaveDialog(); } // Make widgets methods @@ -157,13 +150,13 @@ public class CreateJoinTournamentState extends State { alertDialog.show(stage); } - private void makeDialog(){ + private void makeLeaveDialog(){ dialog = new Dialog("", skin, "dialog") { public void result(Object obj) { if(obj.equals(true)){ setLeaveConfirmed(); } else{ - makeDialog(); + makeLeaveDialog(); } } @@ -329,7 +322,6 @@ public class CreateJoinTournamentState extends State { // Handle click methods - private void handleLeaveConfirmed(){ if (tournaments.contains(tournamentTryingToLeave)) { tournaments.remove(tournamentTryingToLeave); @@ -339,7 +331,6 @@ public class CreateJoinTournamentState extends State { try { QueryIntermediate.leaveTournament(tournamentTryingToLeave.get_id(), GameWare.getInstance().getPlayer().getId()); - //Fjerner alt og legger til alt igjen, aka dårlig måte å gjøre på men fant ingen annen måte stage.clear(); setFeedbackLabelText(leftTournamentText+tournamentTryingToLeave.getName()); makeStage(); @@ -348,7 +339,6 @@ public class CreateJoinTournamentState extends State { } } - private void handleIncludeCheckboxClick(){ if(GameWare.getInstance().isSoundEffectsOn()){ checkBoxSound.play(); } includeFinishedTournaments = !includeFinishedTournaments; @@ -390,7 +380,6 @@ public class CreateJoinTournamentState extends State { setFeedbackLabelText(joinedText+newT.getName()); - //Fjerner alt og legger til alt igjen, aka dårlig måte å gjøre på men fant ingen annen måte stage.clear(); makeStage(); }catch(Exception e){ diff --git a/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java b/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java index ab43f08..7057a0e 100644 --- a/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java +++ b/frontend/core/src/com/gameware/game/states/CreateNewTournamentState.java @@ -151,28 +151,21 @@ public class CreateNewTournamentState extends State { innerTable.add(nameInputField).size(nameFieldWidth, inputFieldHeight); innerTable.row(); removeKeyPadAtTouch(); - innerTable.add(makeRow(timePerRoundLabel, timePerRoundDialog)); innerTable.add(timePerRoundSelectBox); innerTable.row(); - innerTable.add(makeRow(maxPlayersLabel, maxPlayersDialog)); innerTable.add(maxPlayersSelectBox); innerTable.row(); - innerTable.add(makeRow(roundsPerGameLabel, roundsPerGameDialog)); innerTable.add(roundsPerGameSelectBox); innerTable.row(); - innerTable.add(makeRow(startDelayLabel, startDelayDialog)); innerTable.add(startDelaySelectBox); - rootTable.add(innerTable).colspan(2); rootTable.row(); - rootTable.add(errorLabel).colspan(2); rootTable.row(); - rootTable.add(makeBackBtn()).expand().bottom().left(); TextButton nextBtn = makeNextBtn(); diff --git a/frontend/core/src/com/gameware/game/states/FinishedTournamentState.java b/frontend/core/src/com/gameware/game/states/FinishedTournamentState.java index 25b9565..48ccee6 100644 --- a/frontend/core/src/com/gameware/game/states/FinishedTournamentState.java +++ b/frontend/core/src/com/gameware/game/states/FinishedTournamentState.java @@ -36,7 +36,6 @@ public class FinishedTournamentState extends State { private final String leaveBtnText = "Leave"; private final String winnerText = "Winner: "; private final String leaveDialogText = "Are you sure want to\nleave "; - private final String dialogTimeOutText = "Tournament finished because\nplayers timed out or left"; // Variables private final Color scrollPaneBGColor = Color.GOLD; @@ -57,7 +56,6 @@ public class FinishedTournamentState extends State { makeStage(); } - private void makeStage(){ Table rootTable = makeRootTable(backgroundFinTourn); rootTable.defaults().spaceBottom(spacingMedium); @@ -89,7 +87,7 @@ public class FinishedTournamentState extends State { stage.addActor(rootTable); - makeDialog(); + makeLeaveDialog(); } // Make widgets methods @@ -111,7 +109,7 @@ public class FinishedTournamentState extends State { return hsTable; } - private void makeDialog(){ + private void makeLeaveDialog(){ dialog = new Dialog("", skin, "dialog") { public void result(Object obj) { if(obj.equals(true)){ @@ -124,7 +122,7 @@ public class FinishedTournamentState extends State { System.out.println(e); } } else{ - makeDialog(); + makeLeaveDialog(); } } @@ -136,13 +134,6 @@ public class FinishedTournamentState extends State { dialog.button("No", false).pad(padding); //sends "false" as the result } - public void makeDialogTimeOut(){ - dialogTimeOut = new Dialog("", skin, "dialog"); - dialogTimeOut.text(dialogTimeOutText).pad(padding); - dialogTimeOut.button("Okay", false).pad(padding); //sends "false" as the result - dialogTimeOut.show(stage); - } - private TextButton makeBackBtn(){ TextButton backBtn = new TextButton(backBtnText, skin); backBtn.addListener(new ClickListener() { diff --git a/frontend/core/src/com/gameware/game/states/GameStateManager.java b/frontend/core/src/com/gameware/game/states/GameStateManager.java index 6c56681..1cb34db 100644 --- a/frontend/core/src/com/gameware/game/states/GameStateManager.java +++ b/frontend/core/src/com/gameware/game/states/GameStateManager.java @@ -34,10 +34,6 @@ public class GameStateManager { states.push(state); } - public void removeCurrentState(){ - states.remove(0).dispose(); - } - public void update(float dt){ states.peek().update(dt); } diff --git a/frontend/core/src/com/gameware/game/states/OptionsState.java b/frontend/core/src/com/gameware/game/states/OptionsState.java index 35ec887..1a98dad 100644 --- a/frontend/core/src/com/gameware/game/states/OptionsState.java +++ b/frontend/core/src/com/gameware/game/states/OptionsState.java @@ -21,6 +21,9 @@ public class OptionsState extends State { // Texts private final String backBtnText = "Back"; +// Sizes + private final float checkBoxSize = Gdx.graphics.getWidth()/14; + public OptionsState(GameStateManager gsm) { super(gsm); @@ -48,14 +51,11 @@ public class OptionsState extends State { innerTable.add(musicToggleLabel); innerTable.add(makeMusicCheckBox()); innerTable.row(); - innerTable.add(soundEffectToggleLabel); innerTable.add(makeSoundEffectCheckBox()); - rootTable.add(innerTable); rootTable.row(); - rootTable.add(makeBackBtn()).expandX().bottom().left(); stage.addActor(rootTable); @@ -65,7 +65,7 @@ public class OptionsState extends State { private CheckBox makeMusicCheckBox(){ CheckBox musicToggle = new CheckBox("",skin); musicToggle.getImage().setScaling(Scaling.fill); - musicToggle.getImageCell().size(Gdx.graphics.getWidth()/14); + musicToggle.getImageCell().size(checkBoxSize); if((GameWare.getInstance().isMusicOn() && !musicToggle.isChecked()) || (!GameWare.getInstance().isMusicOn() && musicToggle.isChecked())){ musicToggle.toggle(); } @@ -82,7 +82,7 @@ public class OptionsState extends State { private CheckBox makeSoundEffectCheckBox(){ CheckBox soundEffectToggle = new CheckBox("",skin); soundEffectToggle.getImage().setScaling(Scaling.fill); - soundEffectToggle.getImageCell().size(Gdx.graphics.getWidth()/14); + soundEffectToggle.getImageCell().size(checkBoxSize); soundEffectToggle.addListener(new ClickListener() { @Override public void clicked(InputEvent e, float x, float y){ diff --git a/frontend/core/src/com/gameware/game/states/ScoreState.java b/frontend/core/src/com/gameware/game/states/ScoreState.java index 176f2be..34e9a08 100644 --- a/frontend/core/src/com/gameware/game/states/ScoreState.java +++ b/frontend/core/src/com/gameware/game/states/ScoreState.java @@ -23,7 +23,7 @@ public class ScoreState extends State { // Variables private float currentTime = 0f; - private float scoreLabelDifferance = 0f; + private float scoreLabelDifferance; public ScoreState(GameStateManager gsm, int score, State nextState){ diff --git a/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java b/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java index eb7467e..eaca3d4 100644 --- a/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java +++ b/frontend/core/src/com/gameware/game/states/SinglePlayerSelectGameState.java @@ -52,15 +52,12 @@ public class SinglePlayerSelectGameState extends State { titleLabel.setFontScale(titleFontBigScale); rootTable.add(titleLabel).expandY().top(); rootTable.row(); - rootTable.add(subHeadLabel); rootTable.row(); - ScrollPane scrollPane = new ScrollPane(makeInnerTable(), skin); rootTable.add(scrollPane); rootTable.getCell(scrollPane).size(scrollPaneWidth, scrollPaneHeight); rootTable.row(); - rootTable.add(makeBackBtn()).expand().bottom().left(); stage.addActor(rootTable); @@ -107,7 +104,6 @@ public class SinglePlayerSelectGameState extends State { return backBtn; } - private void handleGameBtnClick(State state){ if(GameWare.getInstance().isSoundEffectsOn()){ buttonPressSound.play(); } gsm.set(state); @@ -118,7 +114,6 @@ public class SinglePlayerSelectGameState extends State { gsm.set(new MenuState(gsm)); } - public class MyClickListener extends ClickListener{ private Game game; diff --git a/frontend/core/src/com/gameware/game/states/State.java b/frontend/core/src/com/gameware/game/states/State.java index 3ca5b63..ae7acdc 100644 --- a/frontend/core/src/com/gameware/game/states/State.java +++ b/frontend/core/src/com/gameware/game/states/State.java @@ -43,7 +43,7 @@ public abstract class State { protected final int rootTablePaddingTop = Gdx.graphics.getWidth()/10; protected final int padding = 50; -// Width + Height +// Width & Height protected final int buttonWidth = Gdx.graphics.getWidth()/3; protected final int buttonHeight = Gdx.graphics.getHeight()/12; protected final float questionMarkWidthAndHeight = Gdx.graphics.getWidth()/25; diff --git a/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java b/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java index cb69966..ef7d3b4 100644 --- a/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java +++ b/frontend/core/src/com/gameware/game/states/TournamentHighScoreState.java @@ -43,10 +43,6 @@ public class TournamentHighScoreState extends State{ private Dialog totalDialog; private Dialog lastRoundDialog; -// Variables - private final Color scrollPaneBGColor = Color.SKY; - private final int padding = 50; - public TournamentHighScoreState(GameStateManager gsm, Tournament tournament, Round r){ super(gsm); @@ -72,11 +68,9 @@ public class TournamentHighScoreState extends State{ titleLabel.setFontScale(titleFontBigScale); rootTable.add(titleLabel); rootTable.row(); - subHeadLabel.setFontScale(tinierTitleFontBigScale); rootTable.add(subHeadLabel).expandY().top(); rootTable.row(); - rootTable.add(makeHighScoreTable()).maxHeight(Gdx.graphics.getHeight()/1.75f); rootTable.row(); diff --git a/frontend/core/src/com/gameware/game/states/ViewHighScoreForGameState.java b/frontend/core/src/com/gameware/game/states/ViewHighScoreForGameState.java index f89c8ae..1e6d082 100644 --- a/frontend/core/src/com/gameware/game/states/ViewHighScoreForGameState.java +++ b/frontend/core/src/com/gameware/game/states/ViewHighScoreForGameState.java @@ -47,7 +47,6 @@ public class ViewHighScoreForGameState extends State { private final float playerScoreHeight = Gdx.graphics.getHeight()/10f; - protected ViewHighScoreForGameState(GameStateManager gsm, Game game) { super(gsm); gameNameLabel.setText(game.getName()); @@ -72,15 +71,12 @@ public class ViewHighScoreForGameState extends State { titleLabel.setFontScale(tinierTitleFontBigScale); rootTable.add(titleLabel); rootTable.row(); - gameNameLabel.setFontScale(tinierTitleFontBigScale); rootTable.add(gameNameLabel).top(); rootTable.row(); - ScrollPane hsPane = new ScrollPane(createHighScoreList(), skin); rootTable.add(hsPane); rootTable.getCell(hsPane).size(scrollPaneWidth, scrollPaneHeight); - rootTable.row(); Table secondInnerTable = new Table(); secondInnerTable.pad(padding); diff --git a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java index 964e001..053d3c5 100644 --- a/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java +++ b/frontend/core/src/com/gameware/game/states/ViewHighScoreState.java @@ -38,9 +38,7 @@ public class ViewHighScoreState extends State { // Values private final float scrollPaneWidth = Gdx.graphics.getWidth()/1.15f; private final float scrollPaneHeight = Gdx.graphics.getHeight()/2.3f; - private final Color scrollPaneBGColor = Color.SKY; private final float imageWidthAndHeigh = Gdx.graphics.getWidth()/4; - private final int padding = 50; // Loading text private Game chosenGame = null; @@ -66,22 +64,17 @@ public class ViewHighScoreState extends State { titleLabel.setFontScale(titleFontBigScale); rootTable.add(titleLabel).expandY().top(); rootTable.row(); - rootTable.add(subHeadLabel); rootTable.row(); - ScrollPane scrollPane = new ScrollPane(makeInnerTable(), skin); rootTable.add(scrollPane).spaceBottom(spacingLittle); rootTable.getCell(scrollPane).size(scrollPaneWidth, scrollPaneHeight); rootTable.row(); - rootTable.add(makeBackBtn()).expandY().bottom().left(); stage.addActor(rootTable); - } - // Make widgets methods private Table makeInnerTable(){ Table innerTable = new Table(); @@ -122,29 +115,6 @@ public class ViewHighScoreState extends State { } - @Override - public void update(float dt){ - super.update(dt); - - if(this.chosenGame != null && this.loadingText.textIsRendering()){ - this.handleGameBtnClick(this.chosenGame); - this.chosenGame = null; - } - this.loadingText.update(dt); - } - - - @Override - public void render(SpriteBatch sb) { - super.render(sb); - this.loadingText.draw(sb); - } - - private void setGameBtnClicked(Game game){ - this.chosenGame = game; - this.loadingText.setLoading(); - } - // Handle click methods private void handleBackBtnClick(){ if(GameWare.getInstance().isSoundEffectsOn()){ buttonPressSound.play(); } @@ -170,6 +140,27 @@ public class ViewHighScoreState extends State { } } + private void setGameBtnClicked(Game game){ + this.chosenGame = game; + this.loadingText.setLoading(); + } + + @Override + public void render(SpriteBatch sb) { + super.render(sb); + this.loadingText.draw(sb); + } + + @Override + public void update(float dt){ + super.update(dt); + + if(this.chosenGame != null && this.loadingText.textIsRendering()){ + this.handleGameBtnClick(this.chosenGame); + this.chosenGame = null; + } + this.loadingText.update(dt); + } @Override protected void handleInput() { diff --git a/frontend/core/src/com/gameware/game/states/ViewTournamentState.java b/frontend/core/src/com/gameware/game/states/ViewTournamentState.java index 70da5d3..f86352e 100644 --- a/frontend/core/src/com/gameware/game/states/ViewTournamentState.java +++ b/frontend/core/src/com/gameware/game/states/ViewTournamentState.java @@ -87,20 +87,16 @@ public class ViewTournamentState extends State { titleLabel.setFontScale(titleFontBigScale); rootTable.add(titleLabel).expandY().top().colspan(2); rootTable.row(); - disabledPlayBtnFeedback.getColor().a = 0; rootTable.add(disabledPlayBtnFeedback).colspan(2); rootTable.row(); - rootTable.add(makePlayBtn()).size(playBtnWidth, playBtnHeight).colspan(2); rootTable.row(); Table currentRoundTable = new Table(); currentRoundTable.pad(padding); 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); rootTable.add(currentRoundTable).maxHeight(Gdx.graphics.getHeight()/5).colspan(2); @@ -108,7 +104,6 @@ public class ViewTournamentState extends State { rootTable.add(new Label(nrPlayersText+" "+tournament.getCurrentPlayers(), skin)).colspan(2); rootTable.row(); - rootTable.add(new Label(roundsLeftText+" "+((tournament.getRoundsPerGame()*tournament.getGames().size())-tournament.getCurrentRound()+1), skin)).colspan(2); rootTable.row(); @@ -120,7 +115,6 @@ public class ViewTournamentState extends State { rootTable.add(innerTable).colspan(2); rootTable.row(); - rootTable.add(makeBackBtn()).expand().bottom().left(); roundDeadline.setFontScale(0.8f); rootTable.add(roundDeadline).expand().bottom().right(); -- GitLab