Selaa lähdekoodia

- Scorebalk kleur krijgt geen Alpha meer mee
- Scorebalk renderde niet opnieuw wanneer speler score verliest.
- Boot Animatie toegevoegd.
- Nog wat kleine verbeteringen.

Bilel Bghiel 10 vuotta sitten
vanhempi
commit
d0a91023b3

+ 12 - 10
model/drawObjects/CoinAnimation.java

@@ -6,6 +6,10 @@ import java.awt.geom.Point2D;
 
 /**
  * Created by Bilel on 4-6-2015.
+ *
+ * CoinAnimation klasse: Weergeeft een balletje (resembleerd een muntje) dat omlaag valt.
+ *      Je hoeft alleen achter elkaar de paint(Graphics2D) methode aan te roepen, deze roep automatisch een 'reposition' aan,
+ *      waardoor je het balletje alleen snel achter elkaar hoeft te repainten.
  */
 public class CoinAnimation extends DrawObject {
 
@@ -27,41 +31,39 @@ public class CoinAnimation extends DrawObject {
 
     public void draw(Graphics2D g2) {
 
+        update(timerLoops);                                             // UPDATE
         g2.setColor(new Color(255, 255, 0, (255 - timerLoops * 5)));    // GEEL
         g2.draw(coinShape);                                             // MUNTJE TEKENEN
         g2.fill(coinShape);
-        update(timerLoops);                                             // UPDATE
+
     }
 
     // Wordt na elke paint aangeroepen
     public void update(float factor) {
 
+        // Alleen tekenen wanner de animatie ingesteld is om te tekenen (zie: areWeDoneYet()), anders doei.
         if (areWeDoneYet()) {
             System.out.println("Call initCoin(int startX, startY) first!");
             return;
         }
 
-        // Coin omlaag verschuiven doordat Y * loops omlaag gaat
+        // Coin omlaag verschuiven doordat Y * loops omlaag gaat.
+        // Per frame verschuift het balletje delta 10 op Y-as.
         coinShape.setFrame(coinSetPoint.getX(), coinSetPoint.getY() + 10 * timerLoops,
                 coinShape.getWidth(), coinShape.getHeight());
-
         timerLoops++;
     }
 
     // Zijn we al begonnen/klaar?
     public boolean areWeDoneYet() {
-        if (timerLoops > 50 || timerLoops == 0) {
+        if (timerLoops > 49 || timerLoops == 0) {
             timerLoops = 0;
             return true;
         }
         return false;
     }
 
-    public boolean isLastLoop() {
-        if (timerLoops == 49)
-            return true;
-
-        return false;
-    }
+    // Zitten we in de laatste loop?
+    public boolean isLastLoop() { return (timerLoops == 49) ? true : false;  }
 
 }

+ 1 - 2
model/gameState/PlayState.java

@@ -181,12 +181,11 @@ public class PlayState extends GameState {
 					area.hit();
 					enemysInPath.remove();
 					notHit = false;
-					infoPanel.throwACoin();
+					infoPanel.throwACoin();		// Coin Animatie starten bij hit
 					break;
 				}
 			}
 		}
-		
 
 		player.setBeat();
 

+ 75 - 43
model/gameState/TitleState.java

@@ -9,6 +9,8 @@ import java.awt.GradientPaint;
 import java.awt.Graphics2D;
 import java.awt.RenderingHints;
 import java.awt.Transparency;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
 import java.awt.image.BufferedImage;
 import java.awt.image.VolatileImage;
 
@@ -18,7 +20,9 @@ import control.GameStateManager.State;
 import control.button.ButtonEvent;
 import control.joystick.JoystickEvent;
 
-public class TitleState extends GameState {
+import javax.swing.*;
+
+public class TitleState extends GameState implements ActionListener {
 
     BufferedImage pressStart = Images.getImage(ImageType.pressstart);
     BufferedImage colorStrike = Images.getImage(ImageType.colorstrike);
@@ -28,18 +32,21 @@ public class TitleState extends GameState {
 	Font textFont2 = new Font("OCR A Extended", Font.BOLD, 130);
 	GradientPaint gp = new GradientPaint(300, 0, new Color(0, 0, 1, 0.6f), 980, 1024, new Color(0, 0, 1, 0.2f));
 
-	
     int index = 0;
     int varx = 0;
     int frame;
 
+	private Timer timer;
+
+	int showInLoops = 1;
     
     int indexKast = 0;
     int xKast=0;
     
 	public TitleState(GameStateManager gsm, SongHandler sh){
 		super(gsm, sh);
-		createBackground();
+		// Logica zit in ActionListener (dus actionPerformed())
+		(timer = new Timer(1000/3, this)).start();
 	}
 
 	@Override
@@ -49,23 +56,26 @@ public class TitleState extends GameState {
 
 	@Override
 	public void update(float factor) {
-
         frame++;
         indexKast++;
 	}
 
 	@Override
 	public void draw(Graphics2D g2) {
-		g2.drawImage(background, 0, 0, 1280, 1024, null);
-		int image_x = ((frame / 6) % 6) * 49;
-		g2.drawImage(pressStart.getSubimage(image_x, 0, 49, 26),  640-122, 512, 245, 130, null);
-		
-		
-		
-		xKast = indexKast/10;
-		xKast%=4;
-		//g2.drawImage(kast.getSubimage(xKast*300,0,300,400), 640-122,650,300,400,null);
-		g2.drawImage(kast.getSubimage(xKast*300,0,300,400), 100,300,300,400,null);
+		// Scherm beelt wat kleurrijke rectangles op het scherm.
+		if (showInLoops > 0) {
+			g2.drawImage(background, 0, 0, 1280, 1024, null);
+			createBackground();
+		}
+		if (showInLoops > 18) {
+			// Code die de arcadekast en 'Press Start' toont.
+			int image_x = ((frame / 6) % 6) * 49;
+			g2.drawImage(pressStart.getSubimage(image_x, 0, 49, 26), 640 - 122, 512, 245, 130, null);
+
+			xKast = indexKast / 10;
+			xKast %= 4;
+			g2.drawImage(kast.getSubimage(xKast * 300, 0, 300, 400), 100, 300, 300, 400, null);
+		}
 	}
 
 	@Override
@@ -91,36 +101,58 @@ public class TitleState extends GameState {
 	public void createBackground() {
 		background = Images.initVolatileImage(1280, 1024, Transparency.OPAQUE);
 		Graphics2D g2 = background.createGraphics();
-		RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
-		g2.setRenderingHints(rh);
-		g2.setColor(new Color(1, 1, 1, 0.3f));
-		g2.fillRect(0, 0, 1280, 1024);
-
-		g2.setColor(new Color(0, 1, 0, 0.7f));
-		g2.fillRect(0, 0, 100, 1024);
-		g2.fillRect(1180, 0, 100, 1024);
-
-		g2.setColor(new Color(1, 1, 0, 0.7f));
-		g2.fillRect(100, 0, 100, 1024);
-		g2.fillRect(1080, 0, 100, 1024);
-
-		g2.setColor(new Color(1, 0, 0, 0.7f));
-		g2.fillRect(200, 0, 100, 1024);
-		g2.fillRect(980, 0, 100, 1024);
-
-		g2.setPaint(gp);
-		g2.fillRect(300, 0, 680, 1024);
-
-		g2.setFont(textFont);
-		g2.setColor(Color.WHITE);
-		g2.drawString("©2015 Team Hamtaro", 550, 1012);
-
-		g2.setColor(Color.RED);
-		g2.setFont(textFont2);
-		g2.drawString("Color", 385, 212);
-		g2.drawString("Strike", 390, 342);
-		g2.dispose();
+
+		if (showInLoops > 0) {
+			RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+			g2.setRenderingHints(rh);
+		}
+		if (showInLoops > 2) {
+			g2.setColor(new Color(1, 1, 1, 0.3f));
+			g2.fillRect(0, 0, 1280, 1024);
+		}
+		if (showInLoops > 4) {
+			g2.setColor(new Color(0, 1, 0, 0.7f));
+			g2.fillRect(0, 0, 100, 1024);
+			g2.fillRect(1180, 0, 100, 1024);
+		}
+		if (showInLoops > 6) {
+			g2.setColor(new Color(1, 1, 0, 0.7f));
+			g2.fillRect(100, 0, 100, 1024);
+			g2.fillRect(1080, 0, 100, 1024);
+		}
+		if (showInLoops > 8) {
+			g2.setColor(new Color(1, 0, 0, 0.7f));
+			g2.fillRect(200, 0, 100, 1024);
+			g2.fillRect(980, 0, 100, 1024);
+		}
+		if (showInLoops > 12) {
+			g2.setPaint(gp);
+			g2.fillRect(300, 0, 680, 1024);
+		}
+		if (showInLoops > 14) {
+			g2.setFont(textFont);
+			g2.setColor(Color.WHITE);
+			g2.drawString("©2015 Team Hamtaro", 550, 1012);
+		}
+		if (showInLoops > 16) {
+			g2.setColor(Color.RED);
+			g2.setFont(textFont2);
+			g2.drawString("Color", 385, 212);
+			g2.drawString("Strike", 390, 342);
+			g2.dispose();
+		}
+		if (showInLoops > 18) {
+			timer.stop();
+		}
+
 		background.createGraphics();
 	}
 
+	@Override
+	public void actionPerformed(ActionEvent e) {
+
+		createBackground();
+		showInLoops++;
+	}
+
 }

+ 4 - 3
model/objects/InfoPanel.java

@@ -84,13 +84,14 @@ public class InfoPanel {
 
 		if (!coinAnimation.areWeDoneYet()) {
 			coinAnimation.draw(g2);
-
+			// Score pas updaten wanneer coin klaar is met afspelen
 			if (coinAnimation.isLastLoop())
 				tempComboScore = PlayState.comboScore;
-		}
+		} else
+			tempComboScore = PlayState.comboScore;
 
+		g2.setColor(Color.YELLOW);
 		g2.fillRect(25, 1000 - 7 * tempComboScore, 200, 7 * tempComboScore);
-		g2.setColor(Color.YELLOW);		
 
 		g2.dispose();
 		infoPanel.createGraphics();