diff --git a/src/computerblocks/Game.java b/src/computerblocks/Game.java index 4e2af49..3ba2906 100644 --- a/src/computerblocks/Game.java +++ b/src/computerblocks/Game.java @@ -18,6 +18,7 @@ public class Game { private Display display; private UserInterface ui; private MenuController menuController; + private SnippetTray snippetTray; String demoText = ""; @@ -62,6 +63,7 @@ private void setup() { grid = new Grid(300, 300, 3); player = new Player(display); ui = new UserInterface(); + snippetTray = new SnippetTray(); menuController = new MenuController(display); Fonts.addFont(new Fonts("Paloseco-Medium.ttf")); Fonts.addFont(new Fonts("Roboto-Regular.ttf")); @@ -70,7 +72,7 @@ private void setup() { } private void update() { - player.update(display, grid, menuController); + player.update(display, grid, menuController, snippetTray); if (player.keyboard.down('Q')) { grid = new Grid(new Snippet("../saves/", "save")); } @@ -91,6 +93,7 @@ private synchronized void render() { player.draw(display, grid); ui.draw(display, player, grid); if (player.state == State.MENU) menuController.update(display, player, grid); + if (player.state == State.SNIPPET) snippetTray.update(display, player, grid); display.draw(); } } diff --git a/src/computerblocks/display/ui/menu/SnippetTray.java b/src/computerblocks/display/ui/menu/SnippetTray.java new file mode 100644 index 0000000..2536a33 --- /dev/null +++ b/src/computerblocks/display/ui/menu/SnippetTray.java @@ -0,0 +1,50 @@ +package computerblocks.display.ui.menu; + +import computerblocks.display.*; +import computerblocks.display.ui.menu.elements.*; +import computerblocks.player.*; +import computerblocks.player.io.*; +import computerblocks.Grid; + +import java.util.ArrayList; +import javax.imageio.ImageIO; +import java.io.File; +import java.awt.image.*; +import java.awt.Image; +import java.io.IOException; + +public class SnippetTray { + public int lifeTime = 0; + public int x, y, width, height; + private int border = 8; + + private int animationTime = 10; + + public SnippetTray() { + System.out.println("SnippetTrat Init"); + } + + public void update(Display display, Player player, Grid grid) { + lifeTime += 1; + System.out.println("lifeTime: " + lifeTime); + + height = display.height * 8 / 10; + width = display.width / 6; + + // darken game + display.color(new Color(0f, 0f, 0f, 0.4f)); + display.rect(0, 0, display.width, display.height); + + // draw background box + display.color(Color.UI_BORDER); + display.rect(display.width - (width+border)/2 - width/2 + animX(), display.height/2 - (height+border)/2, width+border, height+border); + display.color(Color.BACKGROUND); + display.rect(display.width - width + animX(), display.height/2 - height/2, width, height); + } + + private int animX() { + if (lifeTime < animationTime) { + return width/animationTime*(animationTime - lifeTime); + } else return 0; + } +} diff --git a/src/computerblocks/player/Player.java b/src/computerblocks/player/Player.java index 7510b06..8675b73 100644 --- a/src/computerblocks/player/Player.java +++ b/src/computerblocks/player/Player.java @@ -39,18 +39,26 @@ public void draw(Display display, Grid grid) { if (state == State.PASTE && snippet != null) snippet.ghost(display, this, grid.mouseOverBlock(this)); } - public void update(Display display, Grid grid, MenuController menuController) { - updateMenu(menuController); + public void update(Display display, Grid grid, MenuController menuController, SnippetTray snippetTray) { + if (state != State.SNIPPET) updateMenu(menuController, snippetTray); updateSelection(grid); updatePaste(grid, display); - + if (state == State.SNIPPET) { + if (keyboard.down(Keyboard.ESC) || keyboard.down('P')) { + state = State.GAME; + } + } if (state.doPlayerTranslate) updateTranslate(grid, display); if (state.doPlayerInteraction) updateInteraction(grid, display); mouse.update(display); } - private void updateMenu(MenuController menuController) { + private void updateMenu(MenuController menuController, SnippetTray snippetTray) { + if (keyboard.down('P')) { + snippetTray.lifeTime = 0; + state = State.SNIPPET; + } if (keyboard.down(Keyboard.ESC)) { if (state == State.GAME) { menuController.currentMenu = menuController.pauseMenu; diff --git a/src/computerblocks/player/io/Keyboard.java b/src/computerblocks/player/io/Keyboard.java index 37c4229..66fe9fa 100644 --- a/src/computerblocks/player/io/Keyboard.java +++ b/src/computerblocks/player/io/Keyboard.java @@ -8,6 +8,7 @@ public class Keyboard implements KeyListener { public static final int SHIFT = 16; public static final int ESC = 27; + public static final int TAB = 9; public boolean[] keys;