Skip to content
Snippets Groups Projects
Commit 1f0ef87d authored by Petter Selfors Rølvåg's avatar Petter Selfors Rølvåg
Browse files

Merge branch 'Pipe-and-Filter' into 'dev'

pipe and filter done, + cleaner template pattern for transitions

See merge request !11
parents b0fc48d5 718ad975
No related branches found
No related tags found
2 merge requests!13Dev,!11pipe and filter done, + cleaner template pattern for transitions
Showing
with 402 additions and 296 deletions
CheckersClient/android/assets/Menu/1x/LobbyMenu@1x.png

198 KiB | W: | H:

CheckersClient/android/assets/Menu/1x/LobbyMenu@1x.png

204 KiB | W: | H:

CheckersClient/android/assets/Menu/1x/LobbyMenu@1x.png
CheckersClient/android/assets/Menu/1x/LobbyMenu@1x.png
CheckersClient/android/assets/Menu/1x/LobbyMenu@1x.png
CheckersClient/android/assets/Menu/1x/LobbyMenu@1x.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -36,8 +36,6 @@ public class UniCheckersClient extends ApplicationAdapter {
public void create () {
Gdx.gl.glClearColor(1, 1, 1, 1);
viewport = new FitViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
stage = new Stage(viewport);
Gdx.input.setInputProcessor(stage);
......@@ -64,8 +62,12 @@ public class UniCheckersClient extends ApplicationAdapter {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
float dt = Gdx.graphics.getDeltaTime();
gvm.update(dt); //updates view
gvm.handleInput(dt);
gvm.update(dt);
gvm.render(dt);
if(gvm.getStartFadeIn() && !gvm.getStartFadeOut()) gvm.fadeIn(dt);
else if(gvm.getStartFadeOut() && !gvm.getStartFadeIn()) gvm.fadeOut(dt);
}
}
package com.mygdx.game.views;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.scenes.scene2d.Stage;
import java.util.Stack;
public class GameViewManager {
......@@ -27,6 +24,10 @@ public class GameViewManager {
views.push(view);
}
public void handleInput(float dt){
views.peek().handleInput(dt);
}
public void update(float dt){
views.peek().update(dt);
}
......@@ -35,4 +36,20 @@ public class GameViewManager {
views.peek().render(dt);
}
public void fadeIn(float dt){
views.peek().fadeIn(dt);
}
public void fadeOut(float dt){
views.peek().fadeOut(dt);
}
public boolean getStartFadeIn(){
return views.peek().getStartFadeIn();
}
public boolean getStartFadeOut(){
return views.peek().getStartFadeOut();
}
}
package com.mygdx.game.views;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.scenes.scene2d.Stage;
......@@ -18,8 +19,6 @@ public class LoadingView extends View {
private Image loadingBarFillImage = new Image(new Texture("Loading/LoadingBarFill.png"));
private Image loadingBarBorderImage = new Image(new Texture("Loading/LoadingBarBorder.png"));
private Image loadingBarBackgroundImage = new Image(new Texture("Loading/LoadingBarBackground.png"));
private float animationLoopTimer;
private float animationSpeedTimer;
public LoadingView(GameViewManager gvm, PlayerController playerController, AssetManager assetManager, Stage stage, Skin skin) {
super(gvm, playerController, assetManager, stage, skin);
......@@ -45,15 +44,14 @@ public class LoadingView extends View {
}
@Override
protected void handleInput() {
public void handleInput(float dt) {
}
@Override
public void update(float dt) {
if(assetManager.update()){
stage.clear();
gvm.set(new MenuView(gvm, playerController, assetManager, stage, skin));
startFadeout = true;
}
else{
loadingBarFillImage.setWidth(assetManager.getProgress()*loadingBarBackgroundImage.getWidth());
......@@ -65,9 +63,39 @@ public class LoadingView extends View {
stage.draw();
}
@Override
public void fadeIn(float dt) {
stage.getBatch().begin();
Color c = Color.WHITE;
stage.getBatch().setColor(c.r, c.g, c.b, fadeInAlpha);
fadeInAlpha -= dt/fadeInLength;
stage.getBatch().draw(fadeOverlayTexture, 0, 0, col_width*Help_Guides, row_height*Help_Guides);
//stage.getBatch().setColor(c);
stage.getBatch().end();
if(fadeInAlpha <= 0){
startFadeIn = false;
}
}
@Override
public void fadeOut(float dt) {
stage.getBatch().begin();
Color c = Color.WHITE;
stage.getBatch().setColor(c.r, c.g, c.b, fadeOutAlpha);
fadeOutAlpha += dt/fadeOutLength;
stage.getBatch().draw(fadeOverlayTexture, 0, 0, col_width*Help_Guides, row_height*Help_Guides);
stage.getBatch().setColor(c);
stage.getBatch().end();
if(fadeOutAlpha >= 1){
stage.clear();
startFadeout = false;
gvm.set(new MenuView(gvm, playerController, assetManager, stage, skin));
}
}
@Override
public void dispose() {
// background.dispose();
//playBtn.dispose();
stage.dispose();
}
}
......@@ -4,6 +4,7 @@ import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.audio.Sound;
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;
......@@ -26,6 +27,7 @@ public class LobbyPlayTransitionScreen extends View{
private Image whiteImage;
private Image exhaustImage;
private Image backgroundImage;
private ArrayList<PlayerAvatar> availableAvatars;
protected LobbyPlayTransitionScreen(GameViewManager gvm, PlayerController playerController, AssetManager assetManager, Stage stage, Skin skin, ArrayList<PlayerAvatar> availableAvatars) {
super(gvm, playerController, assetManager, stage, skin);
......@@ -33,6 +35,7 @@ public class LobbyPlayTransitionScreen extends View{
rocketTexture = (Texture) assetManager.get(LobbyAssets.ROCKET.path, LobbyAssets.ROCKET.classType);
exhaustTexture = (Texture) assetManager.get(LobbyAssets.ROCKET_EXHAUST.path, LobbyAssets.ROCKET_EXHAUST.classType);
this.availableAvatars = availableAvatars;
backgroundImage = new Image(background);
rocketImage = new Image(rocketTexture);
rocketImage.setSize(200, 270);
......@@ -44,28 +47,19 @@ public class LobbyPlayTransitionScreen extends View{
exhaustImage.setPosition(rocketImage.getX()+rocketImage.getWidth()/2-exhaustImage.getWidth()/2, rocketImage.getY()-exhaustImage.getHeight());
exhaustImage.setColor(1, 1, 1, 0);
setFadeColor(Color.BLACK);
stage.addActor(backgroundImage);
}
@Override
protected void handleInput() {
if(Gdx.input.isKeyPressed(Input.Keys.ESCAPE)){
}
}
@Override
public void handleInput(float dt) {
private void isGameOver(){
boolean someCondition = false;
if (someCondition){
Gdx.app.exit();
}
}
@Override
public void update(float dt) {
stage.act(dt);
isGameOver();
handleInput();
}
......@@ -75,15 +69,41 @@ public class LobbyPlayTransitionScreen extends View{
stage.getBatch().draw(background, 0, 0);
stage.getBatch().end();
stage.draw();
}
private void debugDraw(SpriteBatch sb, String text, int xPos, int yPos){
@Override
public void fadeIn(float dt) {
stage.getBatch().begin();
Color c = stage.getBatch().getColor();
stage.getBatch().setColor(c.r, c.g, c.b, fadeOutAlpha);
fadeInAlpha -= dt/fadeInLength;
stage.getBatch().draw(fadeOverlayTexture, 0, 0, col_width*Help_Guides, row_height*Help_Guides);
stage.getBatch().setColor(c);
stage.getBatch().end();
if(fadeInAlpha <= 0){
startFadeIn = false;
}
}
@Override
public void dispose() {
public void fadeOut(float dt) {
stage.getBatch().begin();
Color c = stage.getBatch().getColor();
stage.getBatch().setColor(c.r, c.g, c.b, fadeOutAlpha);
fadeOutAlpha += dt/fadeOutLength;
stage.getBatch().draw(fadeOverlayTexture, 0, 0, col_width*Help_Guides, row_height*Help_Guides);
stage.getBatch().setColor(c);
stage.getBatch().end();
if(fadeOutAlpha >= 1){
stage.clear();
startFadeout = false;
gvm.set(new PlayView(gvm, playerController, assetManager, stage, skin, availableAvatars));
}
}
@Override
public void dispose() {
stage.dispose();
}
}
This diff is collapsed.
......@@ -4,6 +4,7 @@ import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.audio.Music;
import com.badlogic.gdx.audio.Sound;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
......@@ -46,27 +47,19 @@ public class MenuView extends View{
private Music music;
private ShapeRenderer shapeRenderer;
private Sound buttonClickAudio;
private Sound transitionAudio;
private Texture background;
private Texture form;
private Texture formButtonTex;
private TextField usernameTextField;
private Label outputLabel;
private Image whiteImage;
private float fadeTransitionLength = 1f;
private float alphaFadeValue = 1;
private ImageButton nextAvatarButton;
private ImageButton previousAvatarButton;
private Image avatarPortraitImage;
private String currentAvatar;
private ArrayList<PlayerAvatar> availableAvatars;
......@@ -112,13 +105,6 @@ public class MenuView extends View{
formButton = new TextButton("Enter",skin,"default");
formButton.setPosition(formImage.getX()+formImage.getWidth()/2 -formButton.getWidth()/2,formImage.getHeight()*0.08f);
Pixmap tablePixmap = new Pixmap(1,1, Pixmap.Format.RGB565);
tablePixmap.setColor(1, 1, 1, 1);
tablePixmap.fill();
whiteImage = new Image(new Texture(tablePixmap));
whiteImage.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
whiteImage.setPosition(0,0);
startFadeFromBlankToWhite = false;
startFadeFromWhiteToBlank = true;
......@@ -209,7 +195,6 @@ public class MenuView extends View{
currentIndexAvatar -= 1;
}
updateAvatarPortrait();
outputLabel.setText("PREV AVATAR: current avatar is: " + currentAvatar);
return true;
}
......@@ -232,13 +217,15 @@ public class MenuView extends View{
formButton.addListener(new InputListener(){
@Override
public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
if(!usernameTextField.equals("Your name ..")){
if(!usernameTextField.getText().isEmpty() && usernameTextField.getText().length() >=3 && usernameTextField.getText().length() <= 10){
buttonClickAudio.play(0.70f);
transitionAudio.play(0.50f);
startFadeFromBlankToWhite = true;
whiteImage.setZIndex(stage.getActors().size);
playerController.playerSetName(usernameTextField.getText());
playerController.updateIndexAvatar(currentIndexAvatar);
startFadeout = true;
}
else{
outputLabel.setText("Please enter a valid name. Has to be between 3 and 10 characters.");
}
return true;
}
......@@ -270,7 +257,11 @@ public class MenuView extends View{
stage.addActor(previousAvatarButton);
stage.addActor(avatarPortraitImage);
stage.addActor(logoImage);
stage.addActor(whiteImage);
}
@Override
public void handleInput(float dt) {
}
private void updateAvatarPortrait(){
......@@ -278,67 +269,60 @@ public class MenuView extends View{
avatarPortraitImage.setDrawable(portraitDrawable);
}
@Override
public void handleInput() {
}
@Override
public void update(float dt) {
assetManager.update();
stage.act(dt);
handleInput();
}
@Override
public void render(float dt) {
Gdx.gl.glClearColor(1, 1, 1, 1);
if(startFadeFromWhiteToBlank){
whiteImage.setColor(1, 1, 1, alphaFadeValue);
alphaFadeValue -= dt/(fadeTransitionLength)/0.5;
outputLabel.setText("alphaFadeValue: " +alphaFadeValue);
if(alphaFadeValue <= 0){
startFadeFromWhiteToBlank = false;
whiteImage.setZIndex(0);
}
}
else if(startFadeFromBlankToWhite){
whiteImage.setColor(1, 1, 1, alphaFadeValue);
alphaFadeValue += dt/fadeTransitionLength;
outputLabel.setText("alphaFadeValue: " +alphaFadeValue);
if(alphaFadeValue >= 1){
startFadeFromBlankToWhite = false;
gvm.push(new LobbyView(gvm, playerController, assetManager, stage, skin, availableAvatars));
}
}
if(playerController.getPlayer().getID() != -1){
stage.addActor(connectionBarGreenCircle);
connectionBarRedCircle.remove();
}
stage.draw();
drawGrid();
}
@Override
public void dispose() {
/*
background.dispose();
<<<<<<< HEAD
menuForm.dispose();
sound.dispose();
*/
public void fadeIn(float dt) {
stage.getBatch().begin();
Color c = Color.WHITE;
stage.getBatch().setColor(c.r, c.g, c.b, fadeInAlpha);
fadeInAlpha -= dt/fadeInLength;
stage.getBatch().draw(fadeOverlayTexture, 0, 0, col_width*Help_Guides, row_height*Help_Guides);
stage.getBatch().setColor(c);
stage.getBatch().end();
if(fadeInAlpha <= 0){
startFadeIn = false;
}
}
// For debugging purposes only..
private void drawGrid(){
shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
shapeRenderer.setColor(1, 0, 0, 1); // Red line
for (int i = 0; i < 12; i++) {
shapeRenderer.rect(col_width*i, 0, 1, Gdx.graphics.getHeight());
shapeRenderer.rect(0, row_height*i, Gdx.graphics.getWidth(), 1);
@Override
public void fadeOut(float dt) {
stage.getBatch().begin();
Color c = Color.WHITE;
stage.getBatch().setColor(c.r, c.g, c.b, fadeOutAlpha);
fadeOutAlpha += dt/fadeOutLength;
stage.getBatch().draw(fadeOverlayTexture, 0, 0, col_width*Help_Guides, row_height*Help_Guides);
stage.getBatch().setColor(c);
stage.getBatch().end();
if(fadeOutAlpha >= 1){
stage.clear();
startFadeout = false;
gvm.push(new LobbyView(gvm, playerController, assetManager, stage, skin, availableAvatars));
}
}
shapeRenderer.end();
@Override
public void dispose() {
stage.dispose();
}
}
......@@ -22,7 +22,7 @@ public class PauseView extends View{
}
@Override
protected void handleInput() {
public void handleInput(float dt) {
}
......@@ -39,11 +39,19 @@ public class PauseView extends View{
}
@Override
public void dispose() {
background.dispose();
playBtn.dispose();
public void fadeIn(float dt) {
}
@Override
public void fadeOut(float dt) {
}
@Override
public void dispose() {
background.dispose();
playBtn.dispose();
stage.dispose();
}
}
......@@ -25,13 +25,6 @@ public class PlayView extends View{
}
@Override
protected void handleInput() {
if(Gdx.input.isKeyPressed(Input.Keys.ESCAPE)){
}
}
private void isGameOver(){
boolean someCondition = false;
if (someCondition){
......@@ -39,14 +32,17 @@ public class PlayView extends View{
}
}
@Override
public void handleInput(float dt) {
}
@Override
public void update(float dt) {
stage.act(dt);
isGameOver();
handleInput();
}
@Override
public void render(float dt) {
stage.getBatch().begin();
......@@ -56,6 +52,16 @@ public class PlayView extends View{
}
@Override
public void fadeIn(float dt) {
}
@Override
public void fadeOut(float dt) {
}
private void debugDraw(SpriteBatch sb, String text, int xPos, int yPos){
}
......
......@@ -2,27 +2,47 @@ package com.mygdx.game.views;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.mygdx.game.controllers.PlayerController;
public abstract class View extends ApplicationAdapter {
protected OrthographicCamera cam;
protected Vector3 mouse;
protected float[] lastTouch = new float[2];;
protected final GameViewManager gvm;
protected final PlayerController playerController;
protected final AssetManager assetManager;
protected final Stage stage;
protected Skin skin;
public final int gridStep = 1920/20;
public final int Help_Guides = 12;
public final int row_height = Gdx.graphics.getHeight() / Help_Guides;
public final int col_width = Gdx.graphics.getWidth() / Help_Guides;
protected final int Help_Guides = 12;
protected final int row_height = Gdx.graphics.getHeight() / Help_Guides;
protected final int col_width = Gdx.graphics.getWidth() / Help_Guides;
protected final float xpad = col_width/2;
protected final float ypad = row_height/2;
protected ShapeRenderer shapeRenderer;
protected float fadeInAlpha;
protected float fadeOutAlpha;
protected float fadeInLength;
protected float fadeOutLength;
protected boolean startFadeout;
protected boolean startFadeIn;
protected Texture fadeOverlayTexture;
protected View(GameViewManager gvm, PlayerController playerController, AssetManager assetManager, Stage stage, Skin skin){
this.gvm = gvm;
......@@ -30,27 +50,54 @@ public abstract class View extends ApplicationAdapter {
this.assetManager = assetManager;
this.skin = skin;
cam = new OrthographicCamera();
mouse = new Vector3();
this.playerController = playerController;
this.shapeRenderer = new ShapeRenderer();
fadeInAlpha = 1;
fadeOutAlpha= 0;
startFadeIn = true;
startFadeout = false;
fadeInLength = 1;
fadeOutLength = 1;
Pixmap tablePixmap = new Pixmap(1,1, Pixmap.Format.RGB565);
tablePixmap.setColor(Color.WHITE);
tablePixmap.fill();
fadeOverlayTexture = new Texture(tablePixmap);
}
protected abstract void handleInput();
public abstract void handleInput(float dt);
public abstract void update(float dt);
public abstract void render(float dt);
public abstract void fadeIn(float dt);
public abstract void fadeOut(float dt);
public abstract void dispose();
public Skin getSkin(){
return skin;
public boolean getStartFadeIn(){
return startFadeIn;
}
public Stage getStage(){
return stage;
}
public AssetManager getAssetManager(){
return assetManager;
public boolean getStartFadeOut(){
return startFadeout;
}
public GameViewManager getGameViewManager(){
return gvm;
protected void setFadeColor(Color c){
Pixmap tablePixmap = new Pixmap(1,1, Pixmap.Format.RGB565);
tablePixmap.setColor(c);
tablePixmap.fill();
fadeOverlayTexture = new Texture(tablePixmap);
}
protected void drawGrid(){
if(shapeRenderer == null){
shapeRenderer = new ShapeRenderer();
}
shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
shapeRenderer.setColor(1, 0, 0, 0.75f); // Red line
for (int i = 0; i < 12; i++) {
shapeRenderer.rect(col_width*i, 0, 1, Gdx.graphics.getHeight());
shapeRenderer.rect(0, row_height*i, Gdx.graphics.getWidth(), 1);
}
shapeRenderer.end();
}
}
......@@ -6,7 +6,7 @@ public enum LobbyAssets {
LOBBY_LIST("Menu/1x/LobbyList.png", Texture.class),
BACKGROUND("Menu/1x/LobbyMenu@1x.png", Texture.class),
LOBBY("Menu/1x/MrServer.png", Texture.class),
LOBBY("Menu/1x/Lobby.png", Texture.class),
MR_SERVER_ANIM1("characters/MrServer1@1x.png", Texture.class),
MR_SERVER_ANIM2("characters/MrServer2@1x.png", Texture.class),
MR_SERVER_ANIM3("characters/MrServer3@1x.png", Texture.class),
......
......@@ -82,8 +82,6 @@ public class Lobby {
System.out.println("This should many times.");
return false;
}
}
@Override
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment