diff game/Engine.java @ 54:cc7943cd7f2d

Moar work.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 23 Feb 2011 19:54:48 +0200
parents 6bf4675e2d96
children 974ec36c562e
line wrap: on
line diff
--- a/game/Engine.java	Wed Feb 23 16:58:21 2011 +0200
+++ b/game/Engine.java	Wed Feb 23 19:54:48 2011 +0200
@@ -63,8 +63,8 @@
     Piece[][] board;
 
     public boolean flagGameOver;
-    
-    Piece currPiece;
+
+    public Piece currPiece, nextPiece;
     int currX, currY, currPoint;
 
     int score;
@@ -82,6 +82,7 @@
         currY = boardMiddle;
         currPoint = 0;
         
+        nextPiece = new Piece(PieceType.ACTIVE);
         pieceFinishTurn();        
         
         flagGameOver = false;
@@ -142,6 +143,20 @@
         }
     }
 
+    public void pieceCreateNew()
+    {
+        currPiece = nextPiece;
+        nextPiece = new Piece(PieceType.ACTIVE);
+    }
+    
+    public void pieceSwapCurrent()
+    {
+        Piece tmp = currPiece;
+        currPiece = nextPiece;
+        nextPiece = tmp;
+        board[currX][currY] = currPiece;
+    }
+    
     public boolean pieceCheck(Piece piece)
     {
         if (piece == null)
@@ -164,7 +179,7 @@
             {
                 // Start piece as first piece means game is starting
                 pieceMoveTo(currPoint);
-                currPiece = new Piece(PieceType.ACTIVE);
+                pieceCreateNew();
                 board[currX][currY] = currPiece;
                 return true;
             }
@@ -213,6 +228,9 @@
 
     public boolean keyPressed(KeyEvent e)
     {
+        if (flagGameOver)
+            return false;
+
         switch (e.getKeyCode())
         {
             case KeyEvent.VK_LEFT:
@@ -356,6 +374,7 @@
         // Background image, pieces
         g2.drawImage(lautaBGScaled, 0, 0, null);
         lauta.paint(g2, 90, 140, 65);
+        lauta.nextPiece.paint(g2, 830, 325, 90);
         widgets.paint(g2);
         
         // Scores, etc
@@ -442,6 +461,7 @@
 
             // Animate components
             lauta.animate(gameClock);
+            lauta.nextPiece.animate(gameClock);
             
             // Repaint with a frame limiter
             if (gameClock % 3 == 1)
@@ -481,6 +501,7 @@
 
         public void clicked()
         {
+            lauta.pieceSwapCurrent();
         }
     }
 }