Android Open Source - libgdx-demo-pax-britannica Main Menu






From Project

Back to project page libgdx-demo-pax-britannica.

License

The source code is released under:

Copyright (c) 2010 Ben Abraham, Renaud B?dard, Henk Boom, Daniel Burton, Matthew Gallant Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated ...

If you think the Android project libgdx-demo-pax-britannica listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package de.swagner.paxbritannica.mainmenu;
/*w w w  .j a  va 2 s .co m*/
import com.badlogic.gdx.Application.ApplicationType;
import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.Preferences;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Intersector;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.math.collision.BoundingBox;
import com.badlogic.gdx.math.collision.Ray;
import com.badlogic.gdx.utils.Array;

import de.swagner.paxbritannica.DefaultScreen;
import de.swagner.paxbritannica.GameInstance;
import de.swagner.paxbritannica.GameScreen;
import de.swagner.paxbritannica.Resources;
import de.swagner.paxbritannica.background.BackgroundFXRenderer;
import de.swagner.paxbritannica.help.Help;
import de.swagner.paxbritannica.settings.Settings;

public class MainMenu extends DefaultScreen implements InputProcessor {
  Sprite title;
  Sprite credits;
  Sprite settings;
  FactorySelector p1;
  FactorySelector p2;
  FactorySelector p3;
  FactorySelector p4;
  Countdown countdown;
  
  OrthographicCamera cam;
  
  Sprite help;
  Sprite musicOnOff;
  BoundingBox collisionHelp = new BoundingBox();
  BoundingBox collisionMusic = new BoundingBox();
  BoundingBox collisionSettings = new BoundingBox();

  BackgroundFXRenderer backgroundFX = new BackgroundFXRenderer();
  Sprite blackFade;

  SpriteBatch titleBatch;
  SpriteBatch fadeBatch;

  float time = 0;
  float fade = 1.0f;

  int idP1 = -1;
  int idP2 = -1;
  int cnt = 0;
  int oldCnt = 0;
  int changeToScreen = -1;
  
  Ray collisionRay;
  
  private int width = 800;
  private int height = 480;

  public MainMenu(Game game) {
    super(game);
    Gdx.input.setInputProcessor(this);
  }
  
  @Override
  public void show() {  
    Resources.getInstance().reInit();

    GameInstance.getInstance().resetGame();
    
    changeToScreen = -1;
    
    backgroundFX = new BackgroundFXRenderer();
    
    title = Resources.getInstance().title;
    credits = Resources.getInstance().credits;
    settings = Resources.getInstance().settings;
    blackFade = Resources.getInstance().blackFade;
    
    musicOnOff = Resources.getInstance().musicOnOff;
    musicOnOff.setPosition(20, 10);
    musicOnOff.setColor(1,1,1,0.5f);
    collisionMusic.set(new Vector3(musicOnOff.getVertices()[0], musicOnOff.getVertices()[1], -10),new Vector3(musicOnOff.getVertices()[10], musicOnOff.getVertices()[11], 10));
    
    help = Resources.getInstance().help;
    help.setPosition(75, 10);
    help.setColor(1,1,1,0.5f);
    collisionHelp.set(new Vector3(help.getVertices()[0], help.getVertices()[1], -10),new Vector3(help.getVertices()[10], help.getVertices()[11], 10));
    
    settings = Resources.getInstance().settings;
    settings.setPosition(135, 8);
    settings.setColor(1,1,1,0.5f);
    collisionSettings.set(new Vector3(settings.getVertices()[0], settings.getVertices()[1], -10),new Vector3(settings.getVertices()[10], settings.getVertices()[11], 10));
    
    p1 = new FactorySelector(new Vector2(055f, 150f), 1);
    p2 = new FactorySelector(new Vector2(180f, 150f), 2);
    p3 = new FactorySelector(new Vector2(305f, 150f), 3);
    p4 = new FactorySelector(new Vector2(430f, 150f), 4);

    countdown = new Countdown(new Vector2(380f, 7f));

    titleBatch = new SpriteBatch();
    titleBatch.getProjectionMatrix().setToOrtho2D(0, 0, 800, 480);
    fadeBatch = new SpriteBatch();
    fadeBatch.getProjectionMatrix().setToOrtho2D(0, 0, 2, 2);
    
    Preferences prefs = Gdx.app.getPreferences("paxbritannica");
    if(prefs.getBoolean("music") == true) { 
      if(Resources.getInstance().music == null) Resources.getInstance().reInit();
      if(!Resources.getInstance().music.isPlaying()) { 
        Resources.getInstance().music.play();
        Resources.getInstance().music.setLooping(true);
      }
      musicOnOff.setColor(1,1,1,0.5f);
    } else {
      Resources.getInstance().music.stop();      
      musicOnOff.setColor(1,1,1,0.1f);
    }
    
  }
  
  
  @Override
  public void resize(int width, int height) {
    this.width = width;
    this.height = height;
    if (width == 480 && height == 320) {
      cam = new OrthographicCamera(700, 466);
      this.width = 700;
      this.height = 466;
    } else if (width == 320 && height == 240) {
      cam = new OrthographicCamera(700, 525);
      this.width = 700;
      this.height = 525;
    } else if (width == 400 && height == 240) {
      cam = new OrthographicCamera(800, 480);
      this.width = 800;
      this.height = 480;
    } else if (width == 432 && height == 240) {
      cam = new OrthographicCamera(700, 389);
      this.width = 700;
      this.height = 389;
    } else if (width == 960 && height == 640) {
      cam = new OrthographicCamera(800, 533);
      this.width = 800;
      this.height = 533;
    }  else if (width == 1366 && height == 768) {
      cam = new OrthographicCamera(1280, 720);
      this.width = 1280;
      this.height = 720;
    } else if (width == 1366 && height == 720) {
      cam = new OrthographicCamera(1280, 675);
      this.width = 1280;
      this.height = 675;
    } else if (width == 1536 && height == 1152) {
      cam = new OrthographicCamera(1366, 1024);
      this.width = 1366;
      this.height = 1024;
    } else if (width == 1920 && height == 1152) {
      cam = new OrthographicCamera(1366, 854);
      this.width = 1366;
      this.height = 854;
    } else if (width == 1920 && height == 1200) {
      cam = new OrthographicCamera(1366, 800);
      this.width = 1280;
      this.height = 800;
    } else if (width > 1280) {
      cam = new OrthographicCamera(1280, 768);
      this.width = 1280;
      this.height = 768;
    } else if (width < 800) {
      cam = new OrthographicCamera(800, 480);
      this.width = 800;
      this.height = 480;
    } else {
      cam = new OrthographicCamera(width, height);
    }
    cam.position.x = 400;
    cam.position.y = 240;
    cam.update();  
    backgroundFX.resize(width, height);
    titleBatch.getProjectionMatrix().set(cam.combined);
    
    musicOnOff.setPosition(20 - ((this.width-800)/2), 10- ((this.height-480)/2));
    help.setPosition(75- ((this.width-800)/2), 10- ((this.height-480)/2));
    settings.setPosition(135 - ((this.width-800)/2), 8- ((this.height-480)/2));
    
    collisionMusic.set(new Vector3(musicOnOff.getVertices()[0], musicOnOff.getVertices()[1], -10),new Vector3(musicOnOff.getVertices()[10], musicOnOff.getVertices()[11], 10));
    collisionHelp.set(new Vector3(help.getVertices()[0], help.getVertices()[1], -10),new Vector3(help.getVertices()[10], help.getVertices()[11], 10));
    collisionSettings.set(new Vector3(settings.getVertices()[0], settings.getVertices()[1], -10),new Vector3(settings.getVertices()[10], settings.getVertices()[11], 10));
  
  }

  @Override
  public void render(float delta) {
    delta = Math.min(0.06f, Gdx.graphics.getDeltaTime());
    
    time += delta;

    if (time < 1f)
      return;

    backgroundFX.render();

    titleBatch.begin();
    
    musicOnOff.draw(titleBatch);
    help.draw(titleBatch);
    settings.draw(titleBatch);
    
    titleBatch.draw(title, 85f, 320f, 0, 0, 512, 64f, 1.24f, 1.24f, 0);
    titleBatch.draw(credits, 595f, 50f);
    p1.draw(titleBatch);
    p2.draw(titleBatch);
    p3.draw(titleBatch);
    p4.draw(titleBatch);

    cnt = 0;
    if (p1.playerSelect || p1.cpuSelect)
      cnt++;
    if (p2.playerSelect || p2.cpuSelect)
      cnt++;
    if (p3.playerSelect || p3.cpuSelect)
      cnt++;
    if (p4.playerSelect || p4.cpuSelect)
      cnt++;
    if (cnt > 1) {
      countdown.draw(titleBatch);
    }
    if( cnt != oldCnt) {
      countdown.reset();
      oldCnt = cnt;
    }
    if ((p1.picked && !(p1.playerSelect || p1.cpuSelect)) || (p2.picked && !(p2.playerSelect || p2.cpuSelect)) || (p3.picked
        && !(p3.playerSelect || p3.cpuSelect)) || (p4.picked && !(p4.playerSelect || p4.cpuSelect))) {
      countdown.reset();
    }

    titleBatch.end();

    if (!countdown.finished && fade > 0) {
      fade = Math.max(fade - delta / 2.f, 0);
      fadeBatch.begin();
      blackFade.setColor(blackFade.getColor().r, blackFade.getColor().g, blackFade.getColor().b, fade);
      blackFade.draw(fadeBatch);
      fadeBatch.end();
    }

    if (countdown.finished) {
      fade = Math.min(fade + delta / 2.f, 1);
      fadeBatch.begin();
      blackFade.setColor(blackFade.getColor().r, blackFade.getColor().g, blackFade.getColor().b, fade);
      blackFade.draw(fadeBatch);
      fadeBatch.end();
      if (fade >= 1 && cnt>=2) {
        Array<Integer> playerList = new Array<Integer>();
        if(p1.playerSelect == true) {
          playerList.add(1);
        }
        if(p2.playerSelect == true) {
          playerList.add(2);
        }
        if(p3.playerSelect == true) {
          playerList.add(3);
        }
        if(p4.playerSelect == true) {
          playerList.add(4);
        }
        Array<Integer> cpuList = new Array<Integer>();
        if(p1.cpuSelect == true) {
          cpuList.add(1);
        }
        if(p2.cpuSelect == true) {
          cpuList.add(2);
        }
        if(p3.cpuSelect == true) {
          cpuList.add(3);
        }
        if(p4.cpuSelect == true) {
          cpuList.add(4);
        }
        game.setScreen(new GameScreen(game, playerList, cpuList));
      } else if(fade >= 1 && cnt<1)   {
        if(changeToScreen==1) {
          game.setScreen(new Settings(game));
        } else {
          game.setScreen(new Help(game));
        }
      }
    }

  }

  @Override
  public void hide() {
  }

  @Override
  public boolean keyDown(int keycode) {
    if(keycode == Input.Keys.BACK || keycode == Input.Keys.ESCAPE) {
      boolean exit = true;
      if(p1.picked) {
        p1.reset();
        exit = false;
      }
      if(p2.picked) {
        p2.reset();
        exit = false;
      }      
      if(p3.picked) {
        p3.reset();
        exit = false;
      }      
      if(p4.picked) {
        p4.reset();
        exit = false;
      }
      
      if(exit) {
        if(!(Gdx.app.getType() == ApplicationType.Applet)) {
          Gdx.app.exit();
        }
      }
    }
    
    if(keycode == Input.Keys.A) {
      if (!p1.picked) {
        p1.picked = true;
      } else {
        p1.playerSelect = true;
        p1.cpuSelect = false;
      }      
    }    
    if(keycode == Input.Keys.F) {
      if (!p2.picked) {
        p2.picked = true;
      }  else {
        p2.playerSelect = true;
        p2.cpuSelect = false;
      }  
    }    
    if(keycode == Input.Keys.H) {
      if (!p3.picked) {
        p3.picked = true;
      }  else {
        p3.playerSelect = true;
        p3.cpuSelect = false;
      }  
    }
    if(keycode == Input.Keys.L) {
      if (!p4.picked) {
        p4.picked = true;
      }  else {
        p4.playerSelect = true;
        p4.cpuSelect = false;
      }  
    }
    
    if(keycode == Input.Keys.M) {
      if (cnt >= 1)
        return false;
      Preferences prefs = Gdx.app.getPreferences("paxbritannica");
      prefs.putBoolean("music", !prefs.getBoolean("music"));
      prefs.flush();
      if(prefs.getBoolean("music")) {
        if(Resources.getInstance().music == null) Resources.getInstance().reInit();
        if(!Resources.getInstance().music.isPlaying()) { 
          Resources.getInstance().music.play();
          Resources.getInstance().music.setLooping(true);
        }
        musicOnOff.setColor(1,1,1,0.5f);        
      } else {
        Resources.getInstance().music.stop();
        musicOnOff.setColor(1,1,1,0.1f);
      }      
    }
    
    if(keycode == Input.Keys.F1) {
      if (cnt >= 1)
        return false;
      countdown.finished = true;
      changeToScreen = 0;
    }
    
    if(keycode == Input.Keys.S) {
      if (cnt >= 1)
        return false;
      countdown.finished = true;
      changeToScreen = 1;
    }
        

    return false;
  }

  @Override
  public boolean keyUp(int keycode) {
    // TODO Auto-generated method stub
    return false;
  }

  @Override
  public boolean keyTyped(char character) {
    // TODO Auto-generated method stub
    return false;
  }

  @Override
  public boolean touchDown(int x, int y, int pointer, int button) {
  
    collisionRay = cam.getPickRay(x, y);
    
    if (cnt > 4 || countdown.finished)
      return false;  
    
    // check if ship is activated
    if (Intersector.intersectRayBoundsFast(collisionRay, p1.collision) && !p1.picked) {
      p1.picked = true;
    } else if (Intersector.intersectRayBoundsFast(collisionRay, p2.collision) && !p2.picked) {
      p2.picked = true;
    } else if (Intersector.intersectRayBoundsFast(collisionRay, p3.collision) && !p3.picked) {
      p3.picked = true;
    } else if (Intersector.intersectRayBoundsFast(collisionRay, p4.collision) && !p4.picked) {
      p4.picked = true;
    } else if (Intersector.intersectRayBoundsFast(collisionRay, p1.collisionPlayerSelect) && p1.picked && !p1.cpuSelect) {
      p1.playerSelect = true;
      p1.cpuSelect = false;
    } else if (Intersector.intersectRayBoundsFast(collisionRay, p2.collisionPlayerSelect) && p2.picked && !p2.cpuSelect) {
      p2.playerSelect = true;
      p2.cpuSelect = false;
    } else if (Intersector.intersectRayBoundsFast(collisionRay, p3.collisionPlayerSelect) && p3.picked && !p3.cpuSelect) {
      p3.playerSelect = true;
      p3.cpuSelect = false;
    } else if (Intersector.intersectRayBoundsFast(collisionRay, p4.collisionPlayerSelect) && p4.picked && !p4.cpuSelect) {
      p4.playerSelect = true;
      p4.cpuSelect = false;
    } else if (Intersector.intersectRayBoundsFast(collisionRay, p1.collisionCPUSelect) && p1.picked && !p1.playerSelect) {
      p1.cpuSelect = true;
      p1.playerSelect = false;
    } else if (Intersector.intersectRayBoundsFast(collisionRay, p2.collisionCPUSelect) && p2.picked && !p2.playerSelect) {
      p2.cpuSelect = true;
      p2.playerSelect = false;
    } else if (Intersector.intersectRayBoundsFast(collisionRay, p3.collisionCPUSelect) && p3.picked && !p3.playerSelect) {
      p3.cpuSelect = true;
      p3.playerSelect = false;
    } else if (Intersector.intersectRayBoundsFast(collisionRay, p4.collisionCPUSelect) && p4.picked && !p4.playerSelect) {
      p4.cpuSelect = true;
      p4.playerSelect = false;
    }
    
    if (Intersector.intersectRayBoundsFast(collisionRay, collisionMusic)) {
      if (cnt >= 1)
        return false;
      Preferences prefs = Gdx.app.getPreferences("paxbritannica");
      prefs.putBoolean("music", !prefs.getBoolean("music"));
      prefs.flush();
      if(prefs.getBoolean("music")) {
        if(Resources.getInstance().music == null) Resources.getInstance().reInit();
        if(!Resources.getInstance().music.isPlaying()) { 
          Resources.getInstance().music.play();
          Resources.getInstance().music.setLooping(true);
        }
        musicOnOff.setColor(1,1,1,0.5f);        
      } else {
        Resources.getInstance().music.stop();
        musicOnOff.setColor(1,1,1,0.1f);
      }      
    }
    
    if (Intersector.intersectRayBoundsFast(collisionRay, collisionHelp)) {
      if (cnt >= 1)
        return false;
      countdown.finished = true;
      changeToScreen = 0;
    }
    
    if (Intersector.intersectRayBoundsFast(collisionRay, collisionSettings)) {
      if (cnt >= 1)
        return false;
      countdown.finished = true;
      changeToScreen = 1;
    }
    
    return false;
  }

  @Override
  public boolean touchUp(int x, int y, int pointer, int button) {
    // TODO Auto-generated method stub
    return false;
  }

  @Override
  public boolean touchDragged(int x, int y, int pointer) {
    // TODO Auto-generated method stub
    return false;
  }

  @Override
  public boolean scrolled(int amount) {
    // TODO Auto-generated method stub
    return false;
  }

  @Override
  public boolean mouseMoved(int screenX, int screenY) {
    // TODO Auto-generated method stub
    return false;
  }
}




Java Source Code List

de.swagner.paxbritannica.Bullet.java
de.swagner.paxbritannica.Collision.java
de.swagner.paxbritannica.Constants.java
de.swagner.paxbritannica.DefaultScreen.java
de.swagner.paxbritannica.GameInstance.java
de.swagner.paxbritannica.GameScreen.java
de.swagner.paxbritannica.IOSLauncher.java
de.swagner.paxbritannica.PaxBritannica.java
de.swagner.paxbritannica.Resources.java
de.swagner.paxbritannica.Ship.java
de.swagner.paxbritannica.Targeting.java
de.swagner.paxbritannica.android.AndroidLauncher.java
de.swagner.paxbritannica.background.BackgroundFXRenderer.java
de.swagner.paxbritannica.background.Debris.java
de.swagner.paxbritannica.background.Fish.java
de.swagner.paxbritannica.bomber.Bomb.java
de.swagner.paxbritannica.bomber.BomberAI.java
de.swagner.paxbritannica.bomber.Bomber.java
de.swagner.paxbritannica.client.HtmlLauncher.java
de.swagner.paxbritannica.desktop.DesktopLauncher.java
de.swagner.paxbritannica.factory.EasyEnemyProduction.java
de.swagner.paxbritannica.factory.FactoryProduction.java
de.swagner.paxbritannica.factory.HardEnemyProduction.java
de.swagner.paxbritannica.factory.MediumEnemyProduction.java
de.swagner.paxbritannica.factory.PlayerProduction.java
de.swagner.paxbritannica.factory.Production.java
de.swagner.paxbritannica.fighter.FighterAI.java
de.swagner.paxbritannica.fighter.Fighter.java
de.swagner.paxbritannica.fighter.Laser.java
de.swagner.paxbritannica.frigate.FrigateAI.java
de.swagner.paxbritannica.frigate.Frigate.java
de.swagner.paxbritannica.frigate.MissileAI.java
de.swagner.paxbritannica.frigate.Missile.java
de.swagner.paxbritannica.help.Help.java
de.swagner.paxbritannica.mainmenu.Countdown.java
de.swagner.paxbritannica.mainmenu.FactorySelector.java
de.swagner.paxbritannica.mainmenu.MainMenu.java
de.swagner.paxbritannica.particlesystem.BigBubbleParticleEmitter.java
de.swagner.paxbritannica.particlesystem.BubbleParticleEmitter.java
de.swagner.paxbritannica.particlesystem.ExplosionParticleEmitter.java
de.swagner.paxbritannica.particlesystem.ParticleEmitter.java
de.swagner.paxbritannica.particlesystem.Particle.java
de.swagner.paxbritannica.particlesystem.SparkParticleEmitter.java
de.swagner.paxbritannica.settings.Settings.java