diff --git a/src/main/java/ruscz/game/gameOfProd/Windows/WindowOfBattle.java b/src/main/java/ruscz/game/gameOfProd/Windows/WindowOfBattle.java index 0a0d185..edf42e9 100644 --- a/src/main/java/ruscz/game/gameOfProd/Windows/WindowOfBattle.java +++ b/src/main/java/ruscz/game/gameOfProd/Windows/WindowOfBattle.java @@ -236,7 +236,7 @@ public class WindowOfBattle extends JPanel { g.drawImage( battlePerson.getImage(), CELL_SIZE * 2 + battlePerson.getEffectedCoords()[0], - CELL_SIZE * 4 * battlePerson.getId() + battlePerson.getEffectedCoords()[1], + CELL_SIZE * 5 * battlePerson.getId() + battlePerson.getEffectedCoords()[1], battlePerson.getImage().getWidth() * 2, battlePerson.getImage().getHeight() * 2, this); @@ -245,7 +245,7 @@ public class WindowOfBattle extends JPanel { g.drawImage( battlePerson.getImage(), CELL_SIZE * 12 + battlePerson.getEffectedCoords()[0], - CELL_SIZE * 4 + battlePerson.getEffectedCoords()[1], + CELL_SIZE * 5 + battlePerson.getEffectedCoords()[1], battlePerson.getImage().getWidth() * 2, battlePerson.getImage().getHeight() * 2, this); diff --git a/src/main/java/ruscz/game/gameOfProd/Windows/WindowOfFreeMove.java b/src/main/java/ruscz/game/gameOfProd/Windows/WindowOfFreeMove.java index ef1ee04..f8bb66c 100644 --- a/src/main/java/ruscz/game/gameOfProd/Windows/WindowOfFreeMove.java +++ b/src/main/java/ruscz/game/gameOfProd/Windows/WindowOfFreeMove.java @@ -177,6 +177,7 @@ public class WindowOfFreeMove extends JLayeredPane { public void start(boolean newGame) { centerContent(); + mapLinkedList = new LinkedList<>(); mapManager = new MapManager(mapLinkedList, canvas, this); diff --git a/src/main/java/ruscz/game/gameOfProd/Windows/WindowOfMenu.java b/src/main/java/ruscz/game/gameOfProd/Windows/WindowOfMenu.java index 4cab1fe..fa4575e 100644 --- a/src/main/java/ruscz/game/gameOfProd/Windows/WindowOfMenu.java +++ b/src/main/java/ruscz/game/gameOfProd/Windows/WindowOfMenu.java @@ -3,11 +3,19 @@ package ruscz.game.gameOfProd.Windows; import ruscz.game.gameOfProd.Game; import ruscz.game.gameOfProd.LevelEditor.LevelEditor; import ruscz.game.gameOfProd.Save.LoadManager; +import ruscz.game.gameOfProd.Sounds.MusicManager; +import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; -import java.awt.event.*; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.util.Timer; +import java.util.TimerTask; public class WindowOfMenu extends JPanel { public static final int WINDOW_WIDTH = 13; @@ -21,61 +29,192 @@ public class WindowOfMenu extends JPanel { private JButton startLevelEditor; private JButton exitGame; private Dimension screenSize; + private boolean showMenu; + private MusicManager musicManager; public WindowOfMenu(Game game) { this.game = game; this.freeMove = game.getFreeMove(); screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + Image newImg = null; + Image loadImg = null; + Image loadImgDisabled = null; + Image editorImg = null; + Image exitImg = null; + try { + newImg = ImageIO.read(new File("src/main/resources/buttons/new.png")); + loadImg = ImageIO.read(new File("src/main/resources/buttons/load.png")); + loadImgDisabled = ImageIO.read(new File("src/main/resources/buttons/load-disabled.png")); + editorImg = ImageIO.read(new File("src/main/resources/buttons/editor.png")); + exitImg = ImageIO.read(new File("src/main/resources/buttons/exit.png")); + } catch (IOException e) { + e.printStackTrace(); + } - startNewGame = new JButton("START NEW GAME"); - startNewGame.setBounds((screenSize.width - 200) / 2,(screenSize.height - 30) / 2 -150,200,30); - startNewGame.addActionListener(actionEvent -> { - cleanUp(); - game.add(freeMove); - freeMove.requestFocus(); - freeMove.start(true); + startNewGame = new JButton(new ImageIcon(newImg.getScaledInstance(150, 50, Image.SCALE_DEFAULT))); + startNewGame.setMargin(new Insets(0, 0, 0, 0)); + startNewGame.setBackground(Color.BLACK); + startNewGame.setBorder(null); + startNewGame.setContentAreaFilled(false); + startNewGame.setBounds((screenSize.width - 100) / 2,(screenSize.height - 30) / 2, 150, 50); + startNewGame.addMouseListener(new MouseListener() { + @Override + public void mouseClicked(MouseEvent e) { + startNewGame.setLocation(startNewGame.getX(), startNewGame.getY() + 6); + cleanUp(); + game.add(freeMove); + freeMove.requestFocus(); + freeMove.start(true); + } + + @Override + public void mousePressed(MouseEvent e) { startNewGame.setLocation(startNewGame.getX(), startNewGame.getY() + 6); } + + @Override + public void mouseReleased(MouseEvent e) { startNewGame.setLocation(startNewGame.getX(), startNewGame.getY() - 6); } + + @Override + public void mouseEntered(MouseEvent e) { startNewGame.setLocation(startNewGame.getX(), startNewGame.getY() - 3); } + + @Override + public void mouseExited(MouseEvent e) { startNewGame.setLocation(startNewGame.getX(), startNewGame.getY() + 3); } }); - loadSavedGame = new JButton("LOAD SAVED GAME"); - loadSavedGame.setBounds((screenSize.width - 200) / 2,(screenSize.height - 30) / 2 - 70,200,30); + loadSavedGame = new JButton(new ImageIcon(loadImg.getScaledInstance(150, 50, Image.SCALE_DEFAULT))); + loadSavedGame.setDisabledIcon(new ImageIcon(loadImgDisabled.getScaledInstance(150, 50, Image.SCALE_DEFAULT))); + loadSavedGame.setMargin(new Insets(0, 0, 0, 0)); + loadSavedGame.setBackground(Color.BLACK); + loadSavedGame.setBorder(null); + loadSavedGame.setContentAreaFilled(false); + loadSavedGame.setBounds((screenSize.width - 100) / 2,(screenSize.height - 30) / 2 + 100, 150, 50); if (LoadManager.isSaveEmpty()) loadSavedGame.setEnabled(false); - loadSavedGame.addActionListener(actionEvent -> { - cleanUp(); - game.add(freeMove); - freeMove.requestFocus(); - freeMove.start(false); + loadSavedGame.addMouseListener(new MouseListener() { + @Override + public void mouseClicked(MouseEvent e) { + if (!LoadManager.isSaveEmpty()) { + loadSavedGame.setLocation(loadSavedGame.getX(), loadSavedGame.getY() + 6); + cleanUp(); + game.add(freeMove); + freeMove.requestFocus(); + freeMove.start(false); + } + } + + @Override + public void mousePressed(MouseEvent e) { if (!LoadManager.isSaveEmpty()) loadSavedGame.setLocation(loadSavedGame.getX(), loadSavedGame.getY() + 6); } + + @Override + public void mouseReleased(MouseEvent e) { if (!LoadManager.isSaveEmpty()) loadSavedGame.setLocation(loadSavedGame.getX(), loadSavedGame.getY() - 6); } + + @Override + public void mouseEntered(MouseEvent e) { if (!LoadManager.isSaveEmpty()) loadSavedGame.setLocation(loadSavedGame.getX(), loadSavedGame.getY() - 3); } + + @Override + public void mouseExited(MouseEvent e) { if (!LoadManager.isSaveEmpty()) loadSavedGame.setLocation(loadSavedGame.getX(), loadSavedGame.getY() + 3); } }); - startLevelEditor = new JButton("START LEVEL EDITOR"); - startLevelEditor.setBounds((screenSize.width - 200) / 2,(screenSize.height - 30) / 2,200,30); - startLevelEditor.addActionListener(actionEvent -> { - new LevelEditor(); + startLevelEditor = new JButton(new ImageIcon(editorImg.getScaledInstance(150, 100, Image.SCALE_DEFAULT))); + startLevelEditor.setMargin(new Insets(0, 0, 0, 0)); + startLevelEditor.setBackground(Color.BLACK); + startLevelEditor.setBorder(null); + startLevelEditor.setContentAreaFilled(false); + startLevelEditor.setBounds((screenSize.width - 100) / 2,(screenSize.height - 30) / 2 + 200, 150, 100); + startLevelEditor.addMouseListener(new MouseListener() { + @Override + public void mouseClicked(MouseEvent e) { + startLevelEditor.setLocation(startLevelEditor.getX(), startLevelEditor.getY() + 6); + new LevelEditor(); + } + + @Override + public void mousePressed(MouseEvent e) { startLevelEditor.setLocation(startLevelEditor.getX(), startLevelEditor.getY() + 6); } + + @Override + public void mouseReleased(MouseEvent e) { startLevelEditor.setLocation(startLevelEditor.getX(), startLevelEditor.getY() - 6); } + + @Override + public void mouseEntered(MouseEvent e) { startLevelEditor.setLocation(startLevelEditor.getX(), startLevelEditor.getY() - 3); } + + @Override + public void mouseExited(MouseEvent e) { startLevelEditor.setLocation(startLevelEditor.getX(), startLevelEditor.getY() + 3); } }); - exitGame = new JButton("EXIT GAME"); - exitGame.setBounds((screenSize.width - 200) / 2,(screenSize.height - 30) / 2 + 70,200,30); - exitGame.addActionListener(actionEvent -> game.dispatchEvent(new WindowEvent(game, WindowEvent.WINDOW_CLOSING))); + exitGame = new JButton(new ImageIcon(exitImg.getScaledInstance(150, 50, Image.SCALE_DEFAULT))); + exitGame.setMargin(new Insets(0, 0, 0, 0)); + exitGame.setBackground(Color.BLACK); + exitGame.setBorder(null); + exitGame.setContentAreaFilled(false); + exitGame.setBounds((screenSize.width - 100) / 2,(screenSize.height - 30) / 2 + 350, 150, 50); + exitGame.addMouseListener(new MouseListener() { + @Override + public void mouseClicked(MouseEvent e) { + exitGame.setLocation(exitGame.getX(), exitGame.getY() + 6); + game.dispatchEvent(new WindowEvent(game, WindowEvent.WINDOW_CLOSING)); + } - add(startNewGame); - add(loadSavedGame); - add(startLevelEditor); - add(exitGame); + @Override + public void mousePressed(MouseEvent e) { exitGame.setLocation(exitGame.getX(), exitGame.getY() + 6); } + + @Override + public void mouseReleased(MouseEvent e) { exitGame.setLocation(exitGame.getX(), exitGame.getY() - 6); } + + @Override + public void mouseEntered(MouseEvent e) { exitGame.setLocation(exitGame.getX(), exitGame.getY() - 3); } + + @Override + public void mouseExited(MouseEvent e) { exitGame.setLocation(exitGame.getX(), exitGame.getY() + 3); } + }); + + musicManager = new MusicManager("Town2.wav", -25.0f); + musicManager.playMusic(); + musicManager.fadeIn(10); setLayout(null); setBackground(Color.BLACK); + + TimerTask task = new TimerTask() { + public void run() { + showMenu = true; + add(startNewGame); + add(loadSavedGame); + add(startLevelEditor); + add(exitGame); + repaint(); + } + }; + Timer timer = new Timer("Timer"); + + long delay = 3000L; + timer.schedule(task, delay); + } + + @Override + protected void paintComponent(Graphics g) { + Image powered = null; + Image menu = null; + try { + powered = ImageIO.read(new File("src/main/resources/foregrounds/poweredByCellEngine.png")); + menu = ImageIO.read(new File("src/main/resources/foregrounds/menu.png")); + } catch (IOException e) { + e.printStackTrace(); + } + g.setColor(Color.BLACK); + g.fillRect(0, 0, screenSize.width, screenSize.height); + if (!showMenu) g.drawImage(powered, (screenSize.width - (powered.getWidth(null)/2)) / 2, (screenSize.height - (powered.getHeight(null)/2)) / 2, + (powered.getWidth(null)/2), (powered.getHeight(null)/2), null); + else g.drawImage(menu,0, 0, screenSize.width, screenSize.height,null); } private void cleanUp() { + showMenu = false; + musicManager.fadeOut(5); + Graphics g = this.getGraphics(); + g.setColor(Color.BLACK); + g.fillRect(0, 0, screenSize.width, screenSize.height); setVisible(false); - startNewGame.removeActionListener(startNewGame.getActionListeners()[0]); - loadSavedGame.removeActionListener(loadSavedGame.getActionListeners()[0]); - exitGame.removeActionListener(exitGame.getActionListeners()[0]); - menu().removeAll(); - game.remove(this); - menu().revalidate(); - menu().repaint(); - freeMove.setCursor(freeMove.getToolkit().createCustomCursor(new BufferedImage( 1, 1, BufferedImage.TYPE_INT_ARGB ), new Point(), null )); + startNewGame.removeMouseListener(startNewGame.getMouseListeners()[0]); + loadSavedGame.removeMouseListener(loadSavedGame.getMouseListeners()[0]); + exitGame.removeMouseListener(exitGame.getMouseListeners()[0]); + game.setCursor(game.getToolkit().createCustomCursor(new BufferedImage( 1, 1, BufferedImage.TYPE_INT_ARGB ), new Point(), null )); } - - public WindowOfMenu menu() { return this; } } diff --git a/src/main/resources/buttons/editor.png b/src/main/resources/buttons/editor.png new file mode 100644 index 0000000..72abe7f Binary files /dev/null and b/src/main/resources/buttons/editor.png differ diff --git a/src/main/resources/buttons/exit.png b/src/main/resources/buttons/exit.png new file mode 100644 index 0000000..d39879d Binary files /dev/null and b/src/main/resources/buttons/exit.png differ diff --git a/src/main/resources/buttons/load-disabled.png b/src/main/resources/buttons/load-disabled.png new file mode 100644 index 0000000..aa149b5 Binary files /dev/null and b/src/main/resources/buttons/load-disabled.png differ diff --git a/src/main/resources/buttons/load.png b/src/main/resources/buttons/load.png new file mode 100644 index 0000000..15cd3dd Binary files /dev/null and b/src/main/resources/buttons/load.png differ diff --git a/src/main/resources/buttons/new.png b/src/main/resources/buttons/new.png new file mode 100644 index 0000000..4379602 Binary files /dev/null and b/src/main/resources/buttons/new.png differ diff --git a/src/main/resources/foregrounds/menu.png b/src/main/resources/foregrounds/menu.png new file mode 100644 index 0000000..4c183d5 Binary files /dev/null and b/src/main/resources/foregrounds/menu.png differ diff --git a/src/main/resources/foregrounds/poweredByCellEngine.png b/src/main/resources/foregrounds/poweredByCellEngine.png new file mode 100644 index 0000000..1e6a79b Binary files /dev/null and b/src/main/resources/foregrounds/poweredByCellEngine.png differ diff --git a/src/main/resources/music/Town2.wav b/src/main/resources/music/Town2.wav new file mode 100644 index 0000000..530f32e Binary files /dev/null and b/src/main/resources/music/Town2.wav differ diff --git a/src/main/resources/save/savedGame/events.txt b/src/main/resources/save/savedGame/events.txt index e69de29..3c83611 100644 --- a/src/main/resources/save/savedGame/events.txt +++ b/src/main/resources/save/savedGame/events.txt @@ -0,0 +1,80 @@ + + tutorial + + + 11 + 6 + false + + + + + openspace + + + 6 + 4 + false + + + 14 + 16 + false + + + 1 + 2 + false + + + 15 + 7 + true + + + + + office + + + 4 + 2 + false + + + 1 + 9 + true + + + + + boss + + + 4 + 18 + true + + + + + treasure + + + 6 + 1 + true + + + + + storageroom + + + 6 + 2 + true + + + diff --git a/src/main/resources/save/savedGame/inventory.txt b/src/main/resources/save/savedGame/inventory.txt index e69de29..02de760 100644 --- a/src/main/resources/save/savedGame/inventory.txt +++ b/src/main/resources/save/savedGame/inventory.txt @@ -0,0 +1,6 @@ + + cup-o'-coffee + 1 + 295 + heal + diff --git a/src/main/resources/save/savedGame/person.txt b/src/main/resources/save/savedGame/person.txt index e69de29..ec0fcae 100644 --- a/src/main/resources/save/savedGame/person.txt +++ b/src/main/resources/save/savedGame/person.txt @@ -0,0 +1,6 @@ + + storageroom + 6 + 2 + 0 + \ No newline at end of file