120 lines
3.5 KiB
Java
120 lines
3.5 KiB
Java
package de.teamteamteam.spacescooter.screen;
|
|
|
|
import java.awt.Color;
|
|
import java.awt.Font;
|
|
import java.awt.Graphics2D;
|
|
import java.awt.event.KeyEvent;
|
|
import java.awt.RenderingHints;
|
|
|
|
import de.teamteamteam.spacescooter.background.StarBackground;
|
|
import de.teamteamteam.spacescooter.control.Keyboard;
|
|
import de.teamteamteam.spacescooter.entity.Player;
|
|
import de.teamteamteam.spacescooter.gui.Button;
|
|
import de.teamteamteam.spacescooter.utility.GameConfig;
|
|
|
|
/**
|
|
* This Screen show the games main menu.
|
|
*/
|
|
public class MainMenuScreen extends Screen {
|
|
|
|
private Player player;
|
|
private float playerMoveSpeed = 0;
|
|
private int colorValue = 0;
|
|
private boolean colorValueIncrease = true;
|
|
private int menuPoint = 0;
|
|
private boolean keyPressed = false;
|
|
private int animationStatus = 0; //0 = Animation noch nicht gestartet, 1 = Animation laeuft, 2 = Animation beendet
|
|
|
|
public MainMenuScreen(Screen parent) {
|
|
super(parent);
|
|
new StarBackground(0, 0);
|
|
new Button(GameConfig.windowWidth/2-125, 200);
|
|
new Button(GameConfig.windowWidth/2-125, 275);
|
|
new Button(GameConfig.windowWidth/2-125, 350);
|
|
new Button(GameConfig.windowWidth/2-125, 425);
|
|
new Button(GameConfig.windowWidth/2-125, 500);
|
|
player = new Player(GameConfig.windowWidth/2-170, 209);
|
|
player.setCanMove(false);
|
|
player.setCanShoot(false);
|
|
}
|
|
|
|
@Override
|
|
public void paint(Graphics2D g) {
|
|
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
|
|
RenderingHints.VALUE_ANTIALIAS_ON);
|
|
this.entityPaintIterator.reset();
|
|
while (this.entityPaintIterator.hasNext()) {
|
|
this.entityPaintIterator.next().paint(g);
|
|
}
|
|
g.setFont(new Font("Monospace", 0, 70));
|
|
g.setColor(new Color(75 + colorValue, 175 + colorValue, 175 + colorValue));
|
|
g.drawString("SpaceScooter", GameConfig.windowWidth/2-225, 125);
|
|
g.setFont(new Font("Monospace", 0, 20));
|
|
g.setColor(new Color(0, 0, 0));
|
|
g.drawString("Neues Spiel", GameConfig.windowWidth/2-50, 232);
|
|
g.drawString("Hilfe", GameConfig.windowWidth/2-20, 308);
|
|
g.drawString("Highscore", GameConfig.windowWidth/2-45, 382);
|
|
g.drawString("Credits", GameConfig.windowWidth/2-33, 458);
|
|
g.drawString("Beenden", GameConfig.windowWidth/2-38, 532);
|
|
}
|
|
|
|
@Override
|
|
public void update() {
|
|
this.entityUpdateIterator.reset();
|
|
while (this.entityUpdateIterator.hasNext()) {
|
|
this.entityUpdateIterator.next().update();
|
|
}
|
|
|
|
if(colorValueIncrease) {
|
|
colorValue += 2;
|
|
if(colorValue > 70) colorValueIncrease = false;
|
|
} else {
|
|
colorValue -= 2;
|
|
if(colorValue < -70) colorValueIncrease = true;
|
|
}
|
|
|
|
if(Keyboard.isKeyDown(KeyEvent.VK_DOWN) && !keyPressed && animationStatus == 0) {
|
|
keyPressed = true;
|
|
if(menuPoint<4){
|
|
menuPoint++;
|
|
player.setPosition(player.getX(), 209+(menuPoint*75));
|
|
}
|
|
} else if(Keyboard.isKeyDown(KeyEvent.VK_UP) && !keyPressed && animationStatus == 0) {
|
|
keyPressed = true;
|
|
if(menuPoint>0) {
|
|
menuPoint--;
|
|
player.setPosition(player.getX(), 209+(menuPoint*75));
|
|
}
|
|
} else if(!Keyboard.isKeyDown(KeyEvent.VK_DOWN) && !Keyboard.isKeyDown(KeyEvent.VK_UP)) {
|
|
keyPressed = false;
|
|
}
|
|
|
|
if(Keyboard.isKeyDown(KeyEvent.VK_ENTER)) {
|
|
animationStatus = 1;
|
|
}
|
|
|
|
if(animationStatus == 1) {
|
|
if(player.getX() <= GameConfig.windowWidth) {
|
|
player.setPosition(player.getX() + (int) playerMoveSpeed, player.getY());
|
|
playerMoveSpeed += 0.1;
|
|
} else animationStatus = 2;
|
|
} else if(animationStatus == 2) {
|
|
switch (menuPoint) {
|
|
case 0:
|
|
this.parent.setOverlay(new GameScreen(this.parent));
|
|
break;
|
|
case 1:
|
|
break;
|
|
case 2:
|
|
break;
|
|
case 3:
|
|
break;
|
|
case 4:
|
|
System.exit(0);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|