You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
216 lines
8.0 KiB
216 lines
8.0 KiB
package com.dungeoncrawler.view;
|
|
|
|
import com.badlogic.gdx.Gdx;
|
|
import com.badlogic.gdx.audio.Music;
|
|
import com.badlogic.gdx.graphics.GL20;
|
|
import com.badlogic.gdx.graphics.OrthographicCamera;
|
|
import com.badlogic.gdx.graphics.Pixmap;
|
|
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.g2d.Sprite;
|
|
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
|
import com.badlogic.gdx.math.Intersector;
|
|
import com.badlogic.gdx.math.Rectangle;
|
|
import com.badlogic.gdx.utils.Timer;
|
|
|
|
public class MainMenuScreen{
|
|
|
|
|
|
|
|
//MENU-SCREEN
|
|
|
|
Sprite startButtonSprite;
|
|
Sprite quitButtonSprite;
|
|
Sprite backgroundSprite;
|
|
Sprite settingsButtonSprite;
|
|
|
|
boolean hidden;
|
|
|
|
|
|
//CAMERA
|
|
float w = Gdx.graphics.getWidth();
|
|
float h = Gdx.graphics.getHeight();
|
|
OrthographicCamera camera;
|
|
|
|
|
|
// Sound
|
|
public Music music;
|
|
|
|
//PLAYER PREVIEW
|
|
Sprite playerSprite;
|
|
TextureRegion[][][] playerRegion;
|
|
int shownPlayer;
|
|
Timer preview;
|
|
int animationState;
|
|
|
|
Sprite skinContainer;
|
|
Sprite buttonRight;
|
|
Sprite buttonLeft;
|
|
|
|
|
|
public MainMenuScreen(float volume) {
|
|
|
|
//MENU-SCREEN
|
|
w = Gdx.graphics.getWidth();
|
|
h = Gdx.graphics.getHeight();
|
|
float wc = w/2;
|
|
|
|
hidden = false;
|
|
|
|
Texture backgroundTexture = new Texture("sprites/MAINSCREEN.png");
|
|
Texture startButtonTexture = new Texture("sprites/startButton.png");
|
|
Texture quitButtonTexture = new Texture("sprites/quitButton.png");
|
|
Texture settingsButtonTexture = new Texture("sprites/settingsButton.png");
|
|
|
|
backgroundSprite = new Sprite(backgroundTexture);
|
|
startButtonSprite = new Sprite(startButtonTexture);
|
|
quitButtonSprite = new Sprite(quitButtonTexture);
|
|
settingsButtonSprite = new Sprite(settingsButtonTexture);
|
|
|
|
backgroundSprite.setX(0);
|
|
backgroundSprite.setY(0);
|
|
startButtonSprite.setX(backgroundSprite.getX() + 100);
|
|
startButtonSprite.setY(backgroundSprite.getY() + 350);
|
|
quitButtonSprite.setX(backgroundSprite.getX() + 100);
|
|
quitButtonSprite.setY(backgroundSprite.getY() + 50);
|
|
|
|
settingsButtonSprite.setX(backgroundSprite.getX() + 100);
|
|
settingsButtonSprite.setY(backgroundSprite.getY() + 250);
|
|
|
|
|
|
//camera = new OrthographicCamera(1, h/w);
|
|
//camera.translate(backgroundSprite.getWidth()/2, backgroundSprite.getHeight()/2);
|
|
//camera.zoom = 1150f;
|
|
//camera.update();
|
|
|
|
Pixmap pm = new Pixmap(Gdx.files.internal("sprites/cursor.png"));
|
|
Gdx.graphics.setCursor(Gdx.graphics.newCursor(pm, 0, 0));
|
|
pm.dispose();
|
|
|
|
//ENTITIES
|
|
|
|
//PLAYER PREVIEW
|
|
|
|
playerRegion = new TextureRegion[7][][];
|
|
shownPlayer = 0;
|
|
animationState = 0;
|
|
|
|
playerRegion[0] = TextureRegion.split(new Texture("sprites/player.png"), 64, 64);
|
|
playerRegion[1] = TextureRegion.split(new Texture("sprites/playerblue.png"), 64, 64);
|
|
playerRegion[2] = TextureRegion.split(new Texture("sprites/playerpurple.png"), 64, 64);
|
|
playerRegion[3] = TextureRegion.split(new Texture("sprites/playergreen.png"), 64, 64);
|
|
playerRegion[4] = TextureRegion.split(new Texture("sprites/playerorange.png"), 64, 64);
|
|
playerRegion[5] = TextureRegion.split(new Texture("sprites/playerblack.png"), 64, 64);
|
|
playerRegion[6] = TextureRegion.split(new Texture("sprites/playerred.png"), 64, 64);
|
|
playerSprite = new Sprite(playerRegion[shownPlayer][0][animationState]);
|
|
|
|
|
|
skinContainer = new Sprite(new Texture("sprites/skinContainer.png"));
|
|
buttonLeft = new Sprite(new Texture("sprites/left.png"));
|
|
buttonRight = new Sprite(new Texture("sprites/right.png"));
|
|
|
|
skinContainer.setPosition(backgroundSprite.getX() + 100, backgroundSprite.getX() + 150);
|
|
buttonLeft.setPosition(skinContainer.getX() + 7, skinContainer.getY()+25);
|
|
buttonRight.setPosition(skinContainer.getX() + 106, skinContainer.getY()+25);
|
|
playerSprite.setPosition(skinContainer.getX() + 50, skinContainer.getY() + 15);
|
|
|
|
preview = new Timer();
|
|
preview.scheduleTask(new Timer.Task() {
|
|
@Override
|
|
public void run() {
|
|
if(animationState >= 9){
|
|
animationState = 0;
|
|
}
|
|
else{
|
|
animationState++;
|
|
}
|
|
playerSprite.setRegion(playerRegion[shownPlayer][0][animationState]);
|
|
}
|
|
},0, 0.1f);
|
|
|
|
|
|
// Sound
|
|
music = Gdx.audio.newMusic(Gdx.files.internal("music/mainmenu.mp3"));
|
|
music.setVolume(volume);
|
|
music.play();
|
|
|
|
}
|
|
|
|
|
|
public void render (SpriteBatch batch) {
|
|
|
|
|
|
batch.begin();
|
|
//batch.setProjectionMatrix(camera.combined);
|
|
if(hidden == false){
|
|
|
|
backgroundSprite.draw(batch);
|
|
startButtonSprite.draw(batch);
|
|
quitButtonSprite.draw(batch);
|
|
settingsButtonSprite.draw(batch);
|
|
skinContainer.draw(batch);
|
|
buttonLeft.draw(batch);
|
|
buttonRight.draw(batch);
|
|
playerSprite.draw(batch);
|
|
}
|
|
batch.end();
|
|
}
|
|
|
|
|
|
public int click(int x, int y){ // prueft ob cursor mit button (START) ueberlappt
|
|
if(hidden == false){
|
|
|
|
Rectangle r = new Rectangle();
|
|
r.set(x, h-y, 1, 1);
|
|
if(Intersector.overlaps(r, startButtonSprite.getBoundingRectangle())){
|
|
return 0; //go ingame
|
|
}
|
|
if(Intersector.overlaps(r, quitButtonSprite.getBoundingRectangle())){
|
|
return 1; //Exit Game
|
|
}
|
|
if(Intersector.overlaps(r, settingsButtonSprite.getBoundingRectangle())){
|
|
return 2; //Settings
|
|
}
|
|
if(Intersector.overlaps(r, buttonLeft.getBoundingRectangle())){
|
|
if(shownPlayer > 0){
|
|
shownPlayer--;
|
|
return 6;
|
|
}
|
|
return -1;
|
|
}
|
|
if(Intersector.overlaps(r, buttonRight.getBoundingRectangle())){
|
|
if(shownPlayer < playerRegion.length - 1){
|
|
shownPlayer++;
|
|
return 6;
|
|
}
|
|
return -1;
|
|
}
|
|
}
|
|
return -1;
|
|
|
|
}
|
|
|
|
public void cleanUp(){
|
|
music.dispose();
|
|
}
|
|
|
|
public void hide(){
|
|
hidden = true;
|
|
}
|
|
|
|
public void show(){
|
|
hidden = false;
|
|
}
|
|
|
|
public boolean getHidden(){
|
|
return hidden;
|
|
}
|
|
|
|
public int getSkin(){
|
|
return shownPlayer;
|
|
}
|
|
|
|
|
|
}
|