diff --git a/assets/parachute.png b/assets/parachute.png new file mode 100644 index 0000000..6bcaf4a Binary files /dev/null and b/assets/parachute.png differ diff --git a/assets/rocket_bottom.png b/assets/rocket_bottom.png new file mode 100644 index 0000000..209f514 Binary files /dev/null and b/assets/rocket_bottom.png differ diff --git a/assets/rocket_top.png b/assets/rocket_top.png new file mode 100644 index 0000000..34afb49 Binary files /dev/null and b/assets/rocket_top.png differ diff --git a/src/main/java/dev/dvorakmortonxd/Game.java b/src/main/java/dev/dvorakmortonxd/Game.java index 9ab0908..6f7081b 100644 --- a/src/main/java/dev/dvorakmortonxd/Game.java +++ b/src/main/java/dev/dvorakmortonxd/Game.java @@ -59,11 +59,16 @@ public class Game extends JPanel implements ActionListener, KeyListener { private boolean hoveringOverQuitButton = false; private BufferedImage rocket; + private BufferedImage rocketTop; + private BufferedImage rocketBottom; private BufferedImage rocketExhaust; private int rocketYPre = windowHeight/2-125; private int rocketY = windowHeight/2-125; private int rocketExhaustY = rocketY; - private float opacityAnimation = 0.05f; + private int rocketBottomX; + private int rocketBottomY; + private float opacityAnimation = 0.03f; + private int detachTimer = 0; public Game() { // sets the window size @@ -90,6 +95,8 @@ public class Game extends JPanel implements ActionListener, KeyListener { buttonH = ImageIO.read(new File("assets/button_highlighted.png")); rocket = ImageIO.read(new File("assets/rocket.png")); rocketExhaust = ImageIO.read(new File("assets/rocket_exhaust.png")); + rocketTop = ImageIO.read(new File("assets/rocket_top.png")); + rocketBottom = ImageIO.read(new File("assets/rocket_bottom.png")); } catch (IOException e) { e.printStackTrace(); } @@ -126,7 +133,7 @@ public class Game extends JPanel implements ActionListener, KeyListener { } } if (level == 1) { planetY = planetYPre + hoverYOffset / 6; } - if (level == 2) { rocketY = rocketYPre + hoverYOffset / 3; rocketExhaustY = rocketYPre + 150 + hoverYOffset / 2;} + if (level == 2) { rocketY = rocketYPre + hoverYOffset / 3; rocketExhaustY = rocketYPre + 150 + hoverYOffset / 2; detachTimer++;} repaint(); // triggers render } @@ -188,12 +195,22 @@ public class Game extends JPanel implements ActionListener, KeyListener { for (int i = 0; i < MENU_STAR_COUNT; i++) { // drawing the stars g.fillOval(starX[i]-starSize, starY[i]-starSize, starSize, starSize); } - Graphics2D g2 = (Graphics2D) g; - g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, opacityAnimation)); - g2.drawImage(rocketExhaust, windowWidth/2-25, rocketExhaustY, 50, 100, this); - g2.setComposite(AlphaComposite.SrcOver); // reset so nothing else is transparent - g.drawImage(rocket, windowWidth/2-73, rocketY, 147, 234, this); + if (detachTimer < 240) { + Graphics2D g2 = (Graphics2D) g; + g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, opacityAnimation)); + g2.drawImage(rocketExhaust, windowWidth / 2 - 25, rocketExhaustY, 50, 100, this); + g2.setComposite(AlphaComposite.SrcOver); // reset so nothing else is transparent + g.drawImage(rocket, windowWidth / 2 - 73, rocketY, 147, 234, this); + } else { + g.drawImage(rocketTop, windowWidth / 2 - 73, rocketY - hoverYOffset / 3, 147, 84, this); + + Graphics2D g2 = (Graphics2D) g; + rocketBottomX = windowWidth / 2 - 73; + rocketBottomY = rocketY - hoverYOffset / 3 + 64 + (detachTimer - 240) * 2; + g2.rotate(Math.toRadians((detachTimer-240)/3), rocketBottomX + 147 / 2, rocketBottomY + 171 / 2); + g2.drawImage(rocketBottom, rocketBottomX, rocketBottomY, 147, 171, this); + } if (levelProgress) { g.setColor(Color.BLACK); @@ -223,40 +240,42 @@ public class Game extends JPanel implements ActionListener, KeyListener { addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { - if (e.getButton() == MouseEvent.BUTTON1 && hoveringOverQuitButton) { - quitButtonX = quitButtonX - 5; - quitButtonY = quitButtonY + 5; + if (level == 1) { + if (e.getButton() == MouseEvent.BUTTON1 && hoveringOverQuitButton) { + quitButtonX = quitButtonX - 5; + quitButtonY = quitButtonY + 5; + } + if (e.getButton() == MouseEvent.BUTTON1 && hoveringOverPlayButton) { + playButtonX = playButtonX - 5; + playButtonY = playButtonY + 5; + } + if (e.getButton() == MouseEvent.BUTTON1 && hoveringOverPlanet) { + planetX = planetX - 2; + planetYPre = planetYPre + 2; + } } - if (e.getButton() == MouseEvent.BUTTON1 && hoveringOverPlayButton) { - playButtonX = playButtonX - 5; - playButtonY = playButtonY + 5; - } - if (e.getButton() == MouseEvent.BUTTON1 && hoveringOverPlanet) { - planetX = planetX-5; - planetYPre = planetYPre+5; - } - } }); addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { - if (e.getButton() == MouseEvent.BUTTON1 && hoveringOverQuitButton) { - quitButtonX = quitButtonX + 5; - quitButtonY = quitButtonY - 5; - System.exit(0); + if (level == 1) { + if (e.getButton() == MouseEvent.BUTTON1 && hoveringOverQuitButton) { + quitButtonX = quitButtonX + 5; + quitButtonY = quitButtonY - 5; + System.exit(0); + } + if (e.getButton() == MouseEvent.BUTTON1 && hoveringOverPlayButton) { + playButtonX = playButtonX + 5; + playButtonY = playButtonY - 5; + levelProgress = true; + } + if (e.getButton() == MouseEvent.BUTTON1 && hoveringOverPlanet) { + planetX = planetX + 2; + planetYPre = planetYPre - 2; + } } - if (e.getButton() == MouseEvent.BUTTON1 && hoveringOverPlayButton) { - playButtonX = playButtonX + 5; - playButtonY = playButtonY - 5; - levelProgress = true; - } - if (e.getButton() == MouseEvent.BUTTON1 && hoveringOverPlanet) { - planetX = planetX+5; - planetYPre = planetYPre-5; - } - } }); }