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 @@
+
+
+
+
+
+
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 @@
+
+
+ 6
+ 2
+ 0
+
\ No newline at end of file