diff --git a/core/src/main/java/it/cavallium/warppi/extra/tetris/BlockType.java b/core/src/main/java/it/cavallium/warppi/extra/tetris/BlockType.java index c359f9dd..ce042e1d 100644 --- a/core/src/main/java/it/cavallium/warppi/extra/tetris/BlockType.java +++ b/core/src/main/java/it/cavallium/warppi/extra/tetris/BlockType.java @@ -3,8 +3,8 @@ package it.cavallium.warppi.extra.tetris; public enum BlockType { RED, GREEN, - YELLOW, BLUE, + YELLOW, ORANGE, VIOLET } diff --git a/core/src/main/java/it/cavallium/warppi/extra/tetris/TetrisGame.java b/core/src/main/java/it/cavallium/warppi/extra/tetris/TetrisGame.java index 220c30f8..a53419f4 100644 --- a/core/src/main/java/it/cavallium/warppi/extra/tetris/TetrisGame.java +++ b/core/src/main/java/it/cavallium/warppi/extra/tetris/TetrisGame.java @@ -2,9 +2,10 @@ package it.cavallium.warppi.extra.tetris; public class TetrisGame { - private static final int WIDTH = 10, HEIGHT = 22; + public static final int WIDTH = 10, HEIGHT = 22; private BlockType[] grid; private BlockType[] hovergrid; + private BlockType[] renderedGrid; private GameStatus gameStatus = GameStatus.INITIAL; private int score = 0; private double currentTime = 0; @@ -16,18 +17,33 @@ public class TetrisGame { void playAgain() { grid = new BlockType[WIDTH * HEIGHT]; hovergrid = new BlockType[WIDTH * HEIGHT]; + renderedGrid = new BlockType[WIDTH * HEIGHT]; score = 0; currentTime = 0; gameStatus = GameStatus.PLAYING; } - public void gameTick(float dt, boolean leftPressed, boolean rightPressed, boolean downPressed, boolean okPressed, - boolean backPressed) { + public void gameTick(float dt, boolean leftPressed, boolean rightPressed, boolean downPressed, boolean okPressed, boolean backPressed) { currentTime += dt; if (gameStatus == GameStatus.INITIAL) { playAgain(); } else { } + renderGrid(); + } + + public void renderGrid() { + this.renderedGrid = new BlockType[WIDTH*HEIGHT]; + for (int y = 0; y < HEIGHT; y++) { + for (int x = 0; x < WIDTH; x++) { + final int offset = x+y*WIDTH; + renderedGrid[offset] = hovergrid[offset] != null ? hovergrid[offset] : grid[offset]; + } + } + } + + public BlockType[] getRenderedGrid() { + return renderedGrid; } } diff --git a/core/src/main/java/it/cavallium/warppi/extra/tetris/TetrisScreen.java b/core/src/main/java/it/cavallium/warppi/extra/tetris/TetrisScreen.java index 24a79ea2..3d1ead18 100644 --- a/core/src/main/java/it/cavallium/warppi/extra/tetris/TetrisScreen.java +++ b/core/src/main/java/it/cavallium/warppi/extra/tetris/TetrisScreen.java @@ -2,6 +2,8 @@ package it.cavallium.warppi.extra.tetris; import java.io.IOException; +import org.nevec.rjm.Wigner3j; + import it.cavallium.warppi.Engine; import it.cavallium.warppi.StaticVars; import it.cavallium.warppi.device.Keyboard; @@ -47,6 +49,7 @@ public class TetrisScreen extends Screen { if (TetrisScreen.skin == null) { TetrisScreen.skin = Engine.INSTANCE.getHardwareDevice().getDisplayManager().engine.loadSkin("/tetrisskin.png"); } + StaticVars.windowZoom.onNext(1f); } catch (final IOException e) { e.printStackTrace(); } @@ -68,6 +71,20 @@ public class TetrisScreen extends Screen { if (TetrisScreen.skin != null) { TetrisScreen.skin.use(e); } + r.glColor3f(1, 1, 1); + BlockType[] renderedGrid = g.getRenderedGrid(); + int centerScreen = StaticVars.screenSize[0]/2; + int centerGrid = TetrisGame.WIDTH*5/2-1; + final int leftOffset = centerScreen - centerGrid; + final int topOffset = StaticVars.screenSize[1] - TetrisGame.HEIGHT*5-1; + for (int y = 0; y < TetrisGame.HEIGHT; y++) { + for (int x = 0; x < TetrisGame.WIDTH; x++) { + final int offset = x+y*TetrisGame.WIDTH; + final BlockType type = renderedGrid[offset]; + if (type != null) r.glFillRect(leftOffset + x * 4, y * 4, 4, 4, renderedGrid[offset].ordinal() * 4, 0, 4, 4); + else r.glFillRect(leftOffset + x * 5, topOffset + y * 5, 4, 4, 2 * 4, 0, 4, 4); + } + } } @Override @@ -132,16 +149,4 @@ public class TetrisScreen extends Screen { public String getSessionTitle() { return "Absolutely Not Tetris"; } - - @Override - public boolean onKeyPressed(KeyPressedEvent k) { - System.out.println("pr:"+k.getKey()); - return super.onKeyPressed(k); - } - - @Override - public boolean onKeyReleased(KeyReleasedEvent k) { - System.out.println("re:"+k.getKey()); - return super.onKeyReleased(k); - } } diff --git a/core/src/main/resources/tetrisskin.png b/core/src/main/resources/tetrisskin.png index 11cfd996..7cc22a66 100644 Binary files a/core/src/main/resources/tetrisskin.png and b/core/src/main/resources/tetrisskin.png differ diff --git a/core/src/main/resources/tetrisskin.xcf b/core/src/main/resources/tetrisskin.xcf index 61355708..01512cb3 100644 Binary files a/core/src/main/resources/tetrisskin.xcf and b/core/src/main/resources/tetrisskin.xcf differ