From 74e08654a580faee6cd6ec7008679c85c361c23e Mon Sep 17 00:00:00 2001
From: Tor Martin Wang <tmwang@stud.ntnu.no>
Date: Mon, 23 Mar 2020 14:31:30 +0100
Subject: [PATCH] completes issue #15 and almost completes issue #41

---
 .../android/assets/glassy/raw/BlueSquare.png  | Bin 804 -> 4165 bytes
 .../assets/glassy/raw/PauseBackground.jpg     | Bin 0 -> 23838 bytes
 .../android/assets/glassy/raw/PauseButton.png | Bin 0 -> 23360 bytes
 .../game/sprites/ColorRushButton.java         |  94 ++++++++++
 .../game/sprites/ColorRushTarget.java         | 128 +++++++++++++
 .../gameware/game/sprites/PauseButton.java    |  61 ++++++
 .../gameware/game/sprites/PauseCircle.java    |  78 ++++++++
 .../game/sprites/RectangleColorRush.java      | 151 ---------------
 .../gameware/game/states/ColorRushState.java  | 173 ++++++++++++------
 .../com/gameware/game/states/PauseState.java  |  74 ++++++++
 10 files changed, 547 insertions(+), 212 deletions(-)
 create mode 100644 frontend/android/assets/glassy/raw/PauseBackground.jpg
 create mode 100644 frontend/android/assets/glassy/raw/PauseButton.png
 create mode 100644 frontend/core/src/com/gameware/game/sprites/ColorRushButton.java
 create mode 100644 frontend/core/src/com/gameware/game/sprites/ColorRushTarget.java
 create mode 100644 frontend/core/src/com/gameware/game/sprites/PauseButton.java
 create mode 100644 frontend/core/src/com/gameware/game/sprites/PauseCircle.java
 delete mode 100644 frontend/core/src/com/gameware/game/sprites/RectangleColorRush.java
 create mode 100644 frontend/core/src/com/gameware/game/states/PauseState.java

diff --git a/frontend/android/assets/glassy/raw/BlueSquare.png b/frontend/android/assets/glassy/raw/BlueSquare.png
index 954f7ad891a7f800076c7d70f74e821caa5dbcd9..47aa4929374bb493a5511e443716d95db0eb607f 100644
GIT binary patch
literal 4165
zcmeAS@N?(olHy`uVBq!ia0y~yV3q)34mJh`29H|D6b1$c&H|6fVg?4G5)fv*mnL7q
zz`+0A)5S5QBJS;VLq-M#1{OtcsdHQMJEbK#4(`lnW?;|&88AVRhk-#sS%QJV!Oehy
zp`j;%fq_BtAOiz~Q4=ErLkbHs1H*|?g`>eUnkYuI!e~h`T0V}}3JeURmF8$uVYGoX
t+AJJxHIMccMtex39mv7dZFbqlZ+-Y%r|{O4L<R;122WQ%mvv4FO#pddY6k!S

literal 804
zcmeAS@N?(olHy`uVBq!ia0y~yU}OMc4mJh`hM1xiX$%ZZuRUEHLn>~)y>W0AW1+;c
zhu2L`CKdS>CF`9Id+rr;=%oth$wMn5Z^&jI`)*^}+WO_%pC7YTPga$CPD-7mcXCht
zohOMue*COiQTg$fcK5$u{d%6#lb-0G%w017?UnfCa_=IEkA2R^Rj!-we_prkUTm1>
zw)`EIjhQ!X_V2y>Cm<l1Nq}KN27{Hc!(E0S;j%J}42%pc3<3-eAa|lL5|kJP7&T-X
zmP#HF#Hs*O3$Y>%uNX7VGL$l3n8}F80mPby>V8bG{Fufd1G25ajM;*Tfr){GL4l!x
zfjSIqCLMUf{2`m|12>fe4LPFrSuwDKVld_`Lm$=r0u2**@Pu$2ILQ-W&X8{0piF#_
m$zNByseW??)2W|3nWynf9oqWfMF|4~1B0ilpUXO@geCxp6Oc~;

diff --git a/frontend/android/assets/glassy/raw/PauseBackground.jpg b/frontend/android/assets/glassy/raw/PauseBackground.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..0b6369540e6c00d01ab3e7d8072bc517cdb3c70f
GIT binary patch
literal 23838
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

literal 0
HcmV?d00001

diff --git a/frontend/android/assets/glassy/raw/PauseButton.png b/frontend/android/assets/glassy/raw/PauseButton.png
new file mode 100644
index 0000000000000000000000000000000000000000..4dd21e886fb3e020df9baed66438a53759823cb6
GIT binary patch
literal 23360
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

literal 0
HcmV?d00001

diff --git a/frontend/core/src/com/gameware/game/sprites/ColorRushButton.java b/frontend/core/src/com/gameware/game/sprites/ColorRushButton.java
new file mode 100644
index 0000000..0a0f61e
--- /dev/null
+++ b/frontend/core/src/com/gameware/game/sprites/ColorRushButton.java
@@ -0,0 +1,94 @@
+package com.gameware.game.sprites;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
+import com.badlogic.gdx.math.Vector3;
+
+public class ColorRushButton extends Sprite{
+    private int width;
+    private int height;
+    private Vector3 position;
+    private Texture mainTexture;
+    private Texture disabledTexture;
+    private int colorNum;
+    private boolean disabled;
+
+    public ColorRushButton(int x, int y, int width, int height, Texture mainTexture, Texture disabledTexture, int colorNum){
+        this.position = new Vector3(x, y, 0);
+        this.width = width;
+        this.height = height;
+        this.mainTexture = mainTexture;
+        this.disabledTexture = disabledTexture;
+        this.colorNum = colorNum;
+        this.disabled = false;
+    }
+
+    @Override
+    public void reset() {
+
+    }
+
+    @Override
+    public Object report() {
+        return null;
+    }
+
+    @Override
+    public void draw(SpriteBatch sb) {
+
+        Texture drawnTexture = this.mainTexture;
+
+        sb.begin();
+
+        if(this.disabled){
+            drawnTexture = this.disabledTexture;
+        }
+
+        sb.draw(drawnTexture, this.position.x, this.position.y, this.width, this.height);
+
+        sb.end();
+    }
+
+    @Override
+    public void update(float dt) {
+       position.x = (int) Math.round(position.x);
+       position.y = (int) Math.round(position.y);
+    }
+
+    @Override
+    public void dispose() {
+        // Textures are shared so they should not be disposed
+    }
+
+    public boolean isPressed(int x, int y){
+        return x > this.position.x && x < (this.position.x + this.width) && (Gdx.graphics.getHeight() - y) > this.position.y && (Gdx.graphics.getHeight() - y) < (this.position.y + this.height);
+    }
+
+    public int getColorNum(){
+        return this.colorNum;
+    }
+
+    // Effectively sets the color to grey
+    public void setDisabledColor(){
+        this.disabled = true;
+    }
+
+    // Effectively removes the grey color and sets the color to the main color
+    public void setEnabledColor(){
+        this.disabled = false;
+    }
+
+    public Vector3 getPosition(){
+        return this.position;
+    }
+
+    public int getHeight(){
+        return this.height;
+    }
+
+    public int getWidth(){
+        return this.width;
+    }
+}
diff --git a/frontend/core/src/com/gameware/game/sprites/ColorRushTarget.java b/frontend/core/src/com/gameware/game/sprites/ColorRushTarget.java
new file mode 100644
index 0000000..bc145c6
--- /dev/null
+++ b/frontend/core/src/com/gameware/game/sprites/ColorRushTarget.java
@@ -0,0 +1,128 @@
+package com.gameware.game.sprites;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.math.Vector3;
+
+public class ColorRushTarget extends Sprite{
+    private int width;
+    private int height;
+    private int nextHeight;
+    private Vector3 position;
+    private Vector3 velocity;
+    private Texture mainTexture;
+    private int colorNum;
+    private float disposeOffsetTime;
+    private boolean disposalStarted;
+    private boolean disposeAnimLeft;
+
+    public ColorRushTarget(int x, int y, int width, int height, Texture mainTexture, int colorNum, boolean disposeAnimLeft){
+        this.position = new Vector3(x, y, 0);
+        this.nextHeight = y + height;
+        this.velocity = new Vector3(0, (int) (-Gdx.graphics.getHeight()*0.2), 0);
+        this.width = width;
+        this.height = height;
+        this.mainTexture = mainTexture;
+        this.colorNum = colorNum;
+        this.disposeOffsetTime = 0f;
+        this.disposalStarted = false;
+        this.disposeAnimLeft = disposeAnimLeft;
+    }
+
+    @Override
+    public void reset() {
+
+    }
+
+    @Override
+    public Object report() {
+        return null;
+    }
+
+    @Override
+    public void draw(SpriteBatch sb) {
+        sb.begin();
+
+        sb.draw(this.mainTexture, this.position.x, this.position.y, this.width, this.height);
+
+        sb.end();
+    }
+
+    @Override
+    public void update(float dt) {
+
+        // moves the target-rectangles downwards if the user successfully hit a target
+       if((this.nextHeight - this.position.y) <= this.height) {
+            this.velocity.scl(dt);
+            this.position.add(0, velocity.y, 0);
+            this.velocity.scl(1 / dt);
+       }
+
+
+       // Moves the targets to the side if it has been hit (i.e. disposalStarted = true)
+        if(this.disposalStarted){
+            this.velocity.scl(dt);
+            this.position.add(velocity.x, velocity.y, 0);
+            this.velocity.scl(1 / dt);
+
+            // Increments the dispose offset time
+            this.disposeOffsetTime += dt;
+        }
+
+
+       // Rounds the position to an integer
+       position.x = (int) Math.floor(position.x);
+       position.y = (int) Math.floor(position.y);
+    }
+
+    @Override
+    public void dispose() {
+        // Textures are shared so they should not be disposed
+    }
+
+    // Moves the target downwards, used for when the user hits a target and all other targets
+    // should move down
+    public void makeMove(){
+
+        // Effectively sets where the target "should" be one target-height down
+        this.nextHeight -= this.height;
+    }
+
+    public boolean isPressed(int x, int y){
+        return x > this.position.x && x < (this.position.x + this.width) && (Gdx.graphics.getHeight() - y) > this.position.y && (Gdx.graphics.getHeight() - y) < (this.position.y + this.height);
+    }
+
+    public void startDisposal(){
+        this.velocity.x = this.disposeAnimLeft ? -Gdx.graphics.getWidth()*2 : Gdx.graphics.getWidth()*2;
+        this.disposalStarted = true;
+    }
+
+    public int getColorNum(){
+        return this.colorNum;
+    }
+
+    public Vector3 getPosition(){
+        return this.position;
+    }
+
+    public int getHeight(){
+        return this.height;
+    }
+
+    public int getWidth(){
+        return this.width;
+    }
+
+    public void setNextHeight(int nextHeight){
+        this.nextHeight = nextHeight;
+    }
+
+    public int getNextHeight(){
+        return this.nextHeight;
+    }
+
+    public boolean shouldDispose(){
+        return this.disposeOffsetTime > 1;
+    }
+}
diff --git a/frontend/core/src/com/gameware/game/sprites/PauseButton.java b/frontend/core/src/com/gameware/game/sprites/PauseButton.java
new file mode 100644
index 0000000..1d8991b
--- /dev/null
+++ b/frontend/core/src/com/gameware/game/sprites/PauseButton.java
@@ -0,0 +1,61 @@
+package com.gameware.game.sprites;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.math.Vector3;
+
+public class PauseButton extends Sprite {
+    private int width;
+    private int height;
+    private Vector3 position;
+    private Texture mainTexture;
+
+
+    // Customizable constructor
+    public PauseButton(int x, int y, int width, int height){
+        this.position = new Vector3(x, y, 0);
+        this.width = width;
+        this.height = height;
+
+        this.mainTexture = new Texture(Gdx.files.internal("glassy/raw/PauseButton.png"));
+    }
+
+    // Constructor with default settings
+    public PauseButton(){
+        this(Gdx.graphics.getWidth() - Gdx.graphics.getWidth()/8,Gdx.graphics.getHeight() - Gdx.graphics.getHeight()/13,50,50);
+    }
+
+
+    @Override
+    public void reset() {
+
+    }
+
+    @Override
+    public Object report() {
+        return null;
+    }
+
+    @Override
+    public void draw(SpriteBatch sb) {
+        sb.begin();
+
+        sb.draw(this.mainTexture, this.position.x, this.position.y, this.width, this.height);
+
+        sb.end();
+    }
+
+    @Override
+    public void update(float dt) {
+    }
+
+    @Override
+    public void dispose() {
+        this.mainTexture.dispose();
+    }
+
+    public boolean isPressed(int x, int y){
+        return x > this.position.x && x < (this.position.x + this.width) && (Gdx.graphics.getHeight() - y) > this.position.y && (Gdx.graphics.getHeight() - y) < (this.position.y + this.height);
+    }
+}
diff --git a/frontend/core/src/com/gameware/game/sprites/PauseCircle.java b/frontend/core/src/com/gameware/game/sprites/PauseCircle.java
new file mode 100644
index 0000000..0b982ab
--- /dev/null
+++ b/frontend/core/src/com/gameware/game/sprites/PauseCircle.java
@@ -0,0 +1,78 @@
+package com.gameware.game.sprites;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
+import com.badlogic.gdx.math.Vector3;
+
+public class PauseCircle extends Sprite {
+    private int radius;
+    private Vector3 position;
+    private Vector3 velocity;
+    private ShapeRenderer sr;
+
+    public PauseCircle(){
+        this.position = new Vector3();
+        this.velocity = new Vector3();
+
+        this.sr = new ShapeRenderer();
+        this.sr.setColor(new Color().set((float) (Math.random()), (float)(Math.random()), (float) (Math.random()),1));
+
+        this.radius = (int) (Math.random() * Gdx.graphics.getWidth() * 0.1);
+
+        this.velocity.x = (int) ((0.5 - Math.random()) * Gdx.graphics.getWidth() * 0.3);
+        this.velocity.y = (int) ((0.5 - Math.random()) * Gdx.graphics.getHeight() * 0.3);
+        this.position.x = (int) (Math.random() * (Gdx.graphics.getWidth() - this.radius*2) + this.radius);
+        this.position.y = (int) (Math.random() * (Gdx.graphics.getHeight() - this.radius*2) + this.radius);
+    }
+
+    @Override
+    public void reset() {
+
+    }
+
+    @Override
+    public Object report() {
+        return null;
+    }
+
+    @Override
+    public void draw(SpriteBatch sb) {
+        this.sr.begin(ShapeRenderer.ShapeType.Filled);
+
+        this.sr.circle(this.position.x, this.position.y, this.radius);
+
+        this.sr.end();
+    }
+
+    @Override
+    public void update(float dt) {
+        this.velocity.scl(dt);
+        this.position.add(velocity.x, velocity.y, 0);
+        this.velocity.scl(1 / dt);
+
+
+        // Bounces off the edges
+        if((this.position.x + this.radius) > Gdx.graphics.getWidth()){
+            this.velocity.x = -Math.abs(this.velocity.x);
+        }
+
+        if((this.position.x - this.radius) < 0){
+            this.velocity.x = Math.abs(this.velocity.x);
+        }
+
+        if((this.position.y + this.radius) > Gdx.graphics.getHeight()){
+            this.velocity.y = -Math.abs(this.velocity.y);
+        }
+
+        if((this.position.y - this.radius) < 0){
+            this.velocity.y = Math.abs(this.velocity.y);
+        }
+    }
+
+    @Override
+    public void dispose() {
+        this.sr.dispose();
+    }
+}
diff --git a/frontend/core/src/com/gameware/game/sprites/RectangleColorRush.java b/frontend/core/src/com/gameware/game/sprites/RectangleColorRush.java
deleted file mode 100644
index ffc078c..0000000
--- a/frontend/core/src/com/gameware/game/sprites/RectangleColorRush.java
+++ /dev/null
@@ -1,151 +0,0 @@
-package com.gameware.game.sprites;
-
-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.badlogic.gdx.math.Vector3;
-
-public class RectangleColorRush extends Sprite{
-    private int width;
-    private int height;
-    private int prevHeight;
-    private Vector3 position;
-    private Vector3 velocity;
-    private ShapeRenderer shapeRenderer;
-    private boolean move;
-    //private Color mainColor;
-    //private Color disabledColor;
-    private Texture mainTexture;
-    private Texture disabledTexture;
-    private int colorNum;
-    private boolean disabled;
-
-    public RectangleColorRush(int x, int y, int width, int height, Texture mainTexture, Texture disabledTexture, int colorNum){
-        this.position = new Vector3(x, y, 0);
-        this.prevHeight = y + height;
-        this.velocity = new Vector3(0, -150, 0);
-        this.width = width;
-        this.height = height;
-        this.shapeRenderer = new ShapeRenderer();
-        this.move = false;
-        //this.mainColor = mainColor;
-        this.mainTexture = mainTexture;
-        this.colorNum = colorNum;
-        //this.disabledColor = new Color().set(128/255f,128/255f,128/255f,1);
-        this.disabledTexture = disabledTexture;
-        this.disabled = false;
-    }
-
-    @Override
-    public void reset() {
-
-    }
-
-    @Override
-    public Object report() {
-        return null;
-    }
-
-    @Override
-    public void draw(SpriteBatch sb) {
-
-        // Renders the object on the screen
-
-        /*shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
-
-        if(this.disabled){
-            shapeRenderer.setColor(this.disabledColor);
-        }
-        else{
-            shapeRenderer.setColor(this.mainColor);
-        }
-
-        shapeRenderer.rect(this.position.x,this.position.y, this.width,this.height);
-
-        shapeRenderer.end();*/
-
-        Texture drawnTexture = this.mainTexture;
-
-        sb.begin();
-
-        if(this.disabled){
-            drawnTexture = this.disabledTexture;
-        }
-
-        sb.draw(drawnTexture, this.position.x, this.position.y, this.width, this.height);
-
-        sb.end();
-    }
-
-    @Override
-    public void update(float dt) {
-
-        // moves the target-rectangles downwards if the user successfully hit a target
-       if(this.move) {
-            this.velocity.scl(dt);
-            this.position.add(0, velocity.y, 0);
-            this.velocity.scl(1 / dt);
-
-            if((this.prevHeight - this.position.y) >= this.height){
-                this.move = false;
-            }
-        }
-        position.x = (float) Math.round(position.x);
-        position.y = (float) Math.round(position.y);
-    }
-
-    @Override
-    public void dispose() {
-        //this.shapeRenderer.dispose();
-    }
-
-    // Moves the rectangle downwards, used for when the user hits a target and all other targets
-    // should move down
-    public void makeMove(){
-
-        // Effectively sets where the target "should" be one target-height down
-        this.prevHeight -= this.height;
-
-        this.move = true;
-    }
-
-    public boolean isPressed(int x, int y){
-        return x > this.position.x && x < (this.position.x + this.width) && (Gdx.graphics.getHeight() - y) > this.position.y && (Gdx.graphics.getHeight() - y) < (this.position.y + this.height);
-    }
-
-    public int getColorNum(){
-        return this.colorNum;
-    }
-
-    // Effectively sets the color to grey
-    public void setDisabledColor(){
-        this.disabled = true;
-    }
-
-    // Effectively removes the grey color and sets the color to the main color
-    public void setEnabledColor(){
-        this.disabled = false;
-    }
-
-    public Vector3 getPosition(){
-        return this.position;
-    }
-
-    public int getHeight(){
-        return this.height;
-    }
-
-    public int getWidth(){
-        return this.width;
-    }
-
-    public void setPrevHeight(int prevHeight){
-        this.prevHeight = prevHeight;
-    }
-
-    public int getPrevHeight(){
-        return this.prevHeight;
-    }
-}
diff --git a/frontend/core/src/com/gameware/game/states/ColorRushState.java b/frontend/core/src/com/gameware/game/states/ColorRushState.java
index 4c5cb6e..22601cb 100644
--- a/frontend/core/src/com/gameware/game/states/ColorRushState.java
+++ b/frontend/core/src/com/gameware/game/states/ColorRushState.java
@@ -2,62 +2,72 @@ package com.gameware.game.states;
 import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.graphics.Color;
 import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.BitmapFont;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
-import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
-import com.gameware.game.sprites.RectangleColorRush;
+import com.badlogic.gdx.math.Vector3;
+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;
 import java.util.List;
 
 public class ColorRushState extends PlayStateTemplate {
-    private ShapeRenderer shapeRenderer;
-    private RectangleColorRush buttonLowerLeft;
-    private RectangleColorRush buttonLowerRight;
-    private RectangleColorRush buttonUpperLeft;
-    private RectangleColorRush buttonUpperRight;
-    private List<RectangleColorRush> targets;
-    private List<RectangleColorRush> buttons;
-    private List<Color> colors;
+    private List<ColorRushTarget> activeTargets;
+    private List<ColorRushTarget> previousTargets;
+    private List<ColorRushButton> buttons;
     private List<Texture> colorTextures;
     private Texture disabledColorTexture;
+    private Texture background;
+    private BitmapFont font;
     private float disabledDuration = 0f;
+    private float currentDuration = 0f;
+    private float totalGameDuration = 30f;
+    private float penaltyDuration = 1f;
+    private int targetsHit = 0;
     private boolean buttonsEnabled = true;
-    private float totalDuration = 0f;
-    private Texture background;
+    private boolean disposeTargetLeft = true;
+
+
+    private PauseButton pauseButton;
 
     public ColorRushState(GameStateManager gsm){
         super(gsm);
-        this.shapeRenderer = new ShapeRenderer();
+
+        // Creates the background
         this.background = new Texture(Gdx.files.internal("glassy/raw/ColorRushBackground.jpg"));
 
+        // Creates the pause button
+        this.pauseButton = new PauseButton();
 
-        // The colors used
-//        this.colors = new ArrayList<Color>();
-//        this.colors.add(new Color().set(255/255f,0/255f,0/255f,1f));
-//        this.colors.add(new Color().set(0/255f,255/255f,0/255f,1f));
-//        this.colors.add(new Color().set(0/255f,0/255f,255/255f,1f));
-//        this.colors.add(new Color().set(128/255f,0/255f,128/255f,1f));
+        // Creates the bitmapfont
+        font = new BitmapFont();
+        font.setColor(Color.BLACK);
+        font.getData().setScale(1f);
 
+
+        // Creates the color textures
         this.colorTextures = new ArrayList<Texture>();
         this.colorTextures.add(new Texture(Gdx.files.internal("glassy/raw/RedSquare.png")));
         this.colorTextures.add(new Texture(Gdx.files.internal("glassy/raw/BlueSquare.png")));
         this.colorTextures.add(new Texture(Gdx.files.internal("glassy/raw/GreenSquare.png")));
         this.colorTextures.add(new Texture(Gdx.files.internal("glassy/raw/VioletSquare.png")));
 
+        this.disabledColorTexture = new Texture(Gdx.files.internal("glassy/raw/GreySquare.png"));
+
         // Randomizes the button arrangement
         Collections.shuffle(this.colorTextures);
 
-        this.disabledColorTexture = new Texture(Gdx.files.internal("glassy/raw/GreySquare.png"));
-
-        targets = new ArrayList<RectangleColorRush>();
-        buttons = new ArrayList<RectangleColorRush>();
+        activeTargets = new ArrayList<ColorRushTarget>();
+        previousTargets = new ArrayList<ColorRushTarget>();
+        buttons = new ArrayList<ColorRushButton>();
 
         // The four buttons used
-        buttons.add(new RectangleColorRush(0, 0,Gdx.graphics.getWidth()/2,Gdx.graphics.getHeight()/8, this.colorTextures.get(0), this.disabledColorTexture, 0));
-        buttons.add(new RectangleColorRush(Gdx.graphics.getWidth()/2, 0,Gdx.graphics.getWidth()/2,Gdx.graphics.getHeight()/8, this.colorTextures.get(1), this.disabledColorTexture, 1));
-        buttons.add(new RectangleColorRush(0, Gdx.graphics.getHeight()/8,Gdx.graphics.getWidth()/2,Gdx.graphics.getHeight()/8, this.colorTextures.get(2), this.disabledColorTexture, 2));
-        buttons.add(new RectangleColorRush(Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/8,Gdx.graphics.getWidth()/2,Gdx.graphics.getHeight()/8, this.colorTextures.get(3), this.disabledColorTexture, 3));
+        buttons.add(new ColorRushButton(0, 0,Gdx.graphics.getWidth()/2,Gdx.graphics.getHeight()/8, this.colorTextures.get(0), this.disabledColorTexture, 0));
+        buttons.add(new ColorRushButton(Gdx.graphics.getWidth()/2, 0,Gdx.graphics.getWidth()/2,Gdx.graphics.getHeight()/8, this.colorTextures.get(1), this.disabledColorTexture, 1));
+        buttons.add(new ColorRushButton(0, Gdx.graphics.getHeight()/8,Gdx.graphics.getWidth()/2,Gdx.graphics.getHeight()/8, this.colorTextures.get(2), this.disabledColorTexture, 2));
+        buttons.add(new ColorRushButton(Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/8,Gdx.graphics.getWidth()/2,Gdx.graphics.getHeight()/8, this.colorTextures.get(3), this.disabledColorTexture, 3));
 
 
         int targetWidth = Gdx.graphics.getWidth()/8;
@@ -78,7 +88,8 @@ public class ColorRushState extends PlayStateTemplate {
 
             prevColor = color;
 
-            targets.add(new RectangleColorRush(targetX, targetY, targetWidth, targetHeight, this.colorTextures.get(color), this.disabledColorTexture, color));
+            activeTargets.add(new ColorRushTarget(targetX, targetY, targetWidth, targetHeight, this.colorTextures.get(color), color, this.disposeTargetLeft));
+            this.disposeTargetLeft = !this.disposeTargetLeft;
             targetY += targetHeight;
         }
     }
@@ -86,39 +97,55 @@ public class ColorRushState extends PlayStateTemplate {
     @Override
     protected void handleInput() {
         if(Gdx.input.justTouched()){
-
-            //Checks if any of the buttons were pressed
-            for(RectangleColorRush button : this.buttons){
+            // Checks if any of the color buttons were pressed
+            for(ColorRushButton button : this.buttons){
                 if(button.isPressed(Gdx.input.getX(), Gdx.input.getY())){
                     this.colorChanged(button.getColorNum());
                 }
             }
+
+            // Checks if the pause button was pressed
+            if(this.pauseButton.isPressed(Gdx.input.getX(), Gdx.input.getY())){
+                this.gsm.push(new PauseState(this.gsm));
+            }
         }
     }
 
     @Override
     public void update(float dt) {
 
-        // Increases the total time spent on this minigame, will be used for score calculation
-        if(!this.isFinished()){
-            this.totalDuration += 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 here perhaps
-        else{
+        // Post score and exit if the game is over
+        if(this.currentDuration > this.totalGameDuration){
+            this.setFinished();
+            this.setScore(this.targetsHit);
+            //this.postScore();
 
+            // Exits game and updates the current state
+            this.gsm.set(new CreateJoinTournamentState(this.gsm));
         }
 
         // Updates targets
-        for(RectangleColorRush target : this.targets){
+        for(ColorRushTarget target : this.activeTargets){
+            target.update(dt);
+        }
+
+        for(ColorRushTarget target : this.previousTargets){
             target.update(dt);
         }
 
         // Updates buttons
-        for(RectangleColorRush button : this.buttons){
+        for(ColorRushButton button : this.buttons){
             button.update(dt);
         }
 
+        if(this.previousTargets.size() > 0 && this.previousTargets.get(0).shouldDispose()){
+            this.previousTargets.remove(0).dispose();
+        }
+
         // Accepts input if the buttons are enabled
         if(this.buttonsEnabled) {
             this.handleInput();
@@ -129,11 +156,11 @@ public class ColorRushState extends PlayStateTemplate {
             // Increases the counter for how long the buttons have been disabled so far
             this.disabledDuration += dt;
 
-            // The buttons get enabled after being disabled for 1.5 seconds
-            if(this.disabledDuration >= 1.5){
+            // The buttons get enabled after being disabled for 1 second
+            if(this.disabledDuration >= this.penaltyDuration){
                 this.disabledDuration = 0f;
                 this.buttonsEnabled = true;
-                for(RectangleColorRush button : this.buttons){
+                for(ColorRushButton button : this.buttons){
                     button.setEnabledColor();
                 }
             }
@@ -144,25 +171,44 @@ public class ColorRushState extends PlayStateTemplate {
     @Override
     public void render(SpriteBatch sb) {
         sb.begin();
-        sb.draw(this.background, 0, Gdx.graphics.getHeight()/5);
+
+        // Background
+        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);
+
         sb.end();
 
-        for (RectangleColorRush button : this.buttons) {
+
+        this.pauseButton.draw(sb);
+
+        for (ColorRushButton button : this.buttons) {
             button.draw(sb);
         }
 
-        for (RectangleColorRush target : this.targets) {
+        for (ColorRushTarget target : this.activeTargets) {
             target.draw(sb);
         }
+
+        for (ColorRushTarget target : this.previousTargets) {
+            target.draw(sb);
+        }
+
+
     }
 
     @Override
     public void dispose() {
-        for (RectangleColorRush button : this.buttons) {
+        for (ColorRushButton button : this.buttons) {
             button.dispose();
         }
 
-        for (RectangleColorRush target : this.targets) {
+        for (ColorRushTarget target : this.activeTargets) {
+            target.dispose();
+        }
+
+        for (ColorRushTarget target : this.previousTargets) {
             target.dispose();
         }
 
@@ -170,6 +216,7 @@ public class ColorRushState extends PlayStateTemplate {
             tex.dispose();
         }
 
+        this.font.dispose();
         this.background.dispose();
         this.disabledColorTexture.dispose();
     }
@@ -188,13 +235,19 @@ public class ColorRushState extends PlayStateTemplate {
     public void colorChanged(int color){
 
         // If the user pressed the correct button
-        if(targets.get(0).getColorNum() == color){
+        if(activeTargets.get(0).getColorNum() == color){
+
+            // increases targets hit, used for score
+            this.targetsHit++;
 
             // Removes the bottom target
-            this.targets.remove(0).dispose();
+            ColorRushTarget targetHit = this.activeTargets.remove(0);
+            targetHit.startDisposal();
+            this.previousTargets.add(targetHit);
+
 
             // ------> Creates new target and places it at the top to keep the game going <-------
-            RectangleColorRush topTarget = this.targets.get(targets.size() - 1);
+            ColorRushTarget topTarget = this.activeTargets.get(activeTargets.size() - 1);
 
             int newColor = (int) (Math.floor(Math.random()*this.colorTextures.size()));
 
@@ -203,27 +256,25 @@ public class ColorRushState extends PlayStateTemplate {
                 newColor = (int) (Math.floor(Math.random()*this.colorTextures.size()));
             }
 
-            RectangleColorRush newTarget = new RectangleColorRush((int) (topTarget.getPosition().x), Gdx.graphics.getHeight(), topTarget.getWidth(), topTarget.getHeight(), this.colorTextures.get(newColor), this.disabledColorTexture, newColor);
-            newTarget.setPrevHeight(topTarget.getPrevHeight() + topTarget.getHeight());
-            targets.add(newTarget);
+            ColorRushTarget newTarget = new ColorRushTarget((int) (topTarget.getPosition().x), Gdx.graphics.getHeight(), topTarget.getWidth(), topTarget.getHeight(), this.colorTextures.get(newColor), newColor, this.disposeTargetLeft);
+            newTarget.setNextHeight(topTarget.getNextHeight() + topTarget.getHeight());
+            activeTargets.add(newTarget);
+
+            // Changes the direction the next target will be "disposed"
+            this.disposeTargetLeft = !this.disposeTargetLeft;
 
             // <------ Creates new target and places it at the top to keep the game going ------->
 
-            // Moves the remaining targets down
-            for(RectangleColorRush target : this.targets){
+            // Moves all the targets downward
+            for(ColorRushTarget target : this.activeTargets){
                 target.makeMove();
             }
-
-            // If all targets have been hit, the game is completed
-            if(this.targets.size() == 0){
-                this.setFinished();
-            }
         }
 
         //If the user pressed the incorrect button all the buttons get disabled
         else{
             this.buttonsEnabled = false;
-            for(RectangleColorRush button : this.buttons){
+            for(ColorRushButton button : this.buttons){
                 button.setDisabledColor();
             }
         }
diff --git a/frontend/core/src/com/gameware/game/states/PauseState.java b/frontend/core/src/com/gameware/game/states/PauseState.java
new file mode 100644
index 0000000..bed940e
--- /dev/null
+++ b/frontend/core/src/com/gameware/game/states/PauseState.java
@@ -0,0 +1,74 @@
+package com.gameware.game.states;
+
+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.sprites.PauseCircle;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PauseState extends State {
+    private ShapeRenderer sr;
+    private List<PauseCircle> pauseCircles;
+    private Texture background;
+
+    protected PauseState(GameStateManager gsm) {
+        super(gsm);
+
+        this.background = new Texture(Gdx.files.internal("glassy/raw/PauseBackground.jpg"));
+
+        this.pauseCircles = new ArrayList<PauseCircle>();
+
+        for(int i = 0; i<20; i++){
+            this.pauseCircles.add(new PauseCircle());
+        }
+    }
+
+    @Override
+    protected void handleInput() {
+        if(Gdx.input.justTouched()){
+            this.gsm.pop();
+        }
+    }
+
+    @Override
+    public void update(float dt) {
+        this.handleInput();
+
+        for(PauseCircle pc : this.pauseCircles){
+            pc.update(dt);
+        }
+    }
+
+    @Override
+    public void render(SpriteBatch sb) {
+        sb.begin();
+
+        // Background
+        sb.draw(this.background, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
+
+        sb.end();
+
+        for(PauseCircle pc : pauseCircles){
+            pc.draw(sb);
+        }
+    }
+
+    @Override
+    public void dispose() {
+
+    }
+
+    @Override
+    public void reset() {
+
+    }
+
+    @Override
+    public Object report() {
+        return null;
+    }
+}
-- 
GitLab