improved menu graphics
@ -236,7 +236,7 @@ public class WindowOfBattle extends JPanel {
|
|||||||
g.drawImage(
|
g.drawImage(
|
||||||
battlePerson.getImage(),
|
battlePerson.getImage(),
|
||||||
CELL_SIZE * 2 + battlePerson.getEffectedCoords()[0],
|
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().getWidth() * 2,
|
||||||
battlePerson.getImage().getHeight() * 2,
|
battlePerson.getImage().getHeight() * 2,
|
||||||
this);
|
this);
|
||||||
@ -245,7 +245,7 @@ public class WindowOfBattle extends JPanel {
|
|||||||
g.drawImage(
|
g.drawImage(
|
||||||
battlePerson.getImage(),
|
battlePerson.getImage(),
|
||||||
CELL_SIZE * 12 + battlePerson.getEffectedCoords()[0],
|
CELL_SIZE * 12 + battlePerson.getEffectedCoords()[0],
|
||||||
CELL_SIZE * 4 + battlePerson.getEffectedCoords()[1],
|
CELL_SIZE * 5 + battlePerson.getEffectedCoords()[1],
|
||||||
battlePerson.getImage().getWidth() * 2,
|
battlePerson.getImage().getWidth() * 2,
|
||||||
battlePerson.getImage().getHeight() * 2,
|
battlePerson.getImage().getHeight() * 2,
|
||||||
this);
|
this);
|
||||||
|
|||||||
@ -177,6 +177,7 @@ public class WindowOfFreeMove extends JLayeredPane {
|
|||||||
|
|
||||||
public void start(boolean newGame) {
|
public void start(boolean newGame) {
|
||||||
centerContent();
|
centerContent();
|
||||||
|
|
||||||
mapLinkedList = new LinkedList<>();
|
mapLinkedList = new LinkedList<>();
|
||||||
mapManager = new MapManager(mapLinkedList, canvas, this);
|
mapManager = new MapManager(mapLinkedList, canvas, this);
|
||||||
|
|
||||||
|
|||||||
@ -3,11 +3,19 @@ package ruscz.game.gameOfProd.Windows;
|
|||||||
import ruscz.game.gameOfProd.Game;
|
import ruscz.game.gameOfProd.Game;
|
||||||
import ruscz.game.gameOfProd.LevelEditor.LevelEditor;
|
import ruscz.game.gameOfProd.LevelEditor.LevelEditor;
|
||||||
import ruscz.game.gameOfProd.Save.LoadManager;
|
import ruscz.game.gameOfProd.Save.LoadManager;
|
||||||
|
import ruscz.game.gameOfProd.Sounds.MusicManager;
|
||||||
|
|
||||||
|
import javax.imageio.ImageIO;
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
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.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 class WindowOfMenu extends JPanel {
|
||||||
public static final int WINDOW_WIDTH = 13;
|
public static final int WINDOW_WIDTH = 13;
|
||||||
@ -21,61 +29,192 @@ public class WindowOfMenu extends JPanel {
|
|||||||
private JButton startLevelEditor;
|
private JButton startLevelEditor;
|
||||||
private JButton exitGame;
|
private JButton exitGame;
|
||||||
private Dimension screenSize;
|
private Dimension screenSize;
|
||||||
|
private boolean showMenu;
|
||||||
|
private MusicManager musicManager;
|
||||||
|
|
||||||
public WindowOfMenu(Game game) {
|
public WindowOfMenu(Game game) {
|
||||||
this.game = game;
|
this.game = game;
|
||||||
this.freeMove = game.getFreeMove();
|
this.freeMove = game.getFreeMove();
|
||||||
screenSize = Toolkit.getDefaultToolkit().getScreenSize();
|
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 = new JButton(new ImageIcon(newImg.getScaledInstance(150, 50, Image.SCALE_DEFAULT)));
|
||||||
startNewGame.setBounds((screenSize.width - 200) / 2,(screenSize.height - 30) / 2 -150,200,30);
|
startNewGame.setMargin(new Insets(0, 0, 0, 0));
|
||||||
startNewGame.addActionListener(actionEvent -> {
|
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();
|
cleanUp();
|
||||||
game.add(freeMove);
|
game.add(freeMove);
|
||||||
freeMove.requestFocus();
|
freeMove.requestFocus();
|
||||||
freeMove.start(true);
|
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 = new JButton(new ImageIcon(loadImg.getScaledInstance(150, 50, Image.SCALE_DEFAULT)));
|
||||||
loadSavedGame.setBounds((screenSize.width - 200) / 2,(screenSize.height - 30) / 2 - 70,200,30);
|
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);
|
if (LoadManager.isSaveEmpty()) loadSavedGame.setEnabled(false);
|
||||||
loadSavedGame.addActionListener(actionEvent -> {
|
loadSavedGame.addMouseListener(new MouseListener() {
|
||||||
|
@Override
|
||||||
|
public void mouseClicked(MouseEvent e) {
|
||||||
|
if (!LoadManager.isSaveEmpty()) {
|
||||||
|
loadSavedGame.setLocation(loadSavedGame.getX(), loadSavedGame.getY() + 6);
|
||||||
cleanUp();
|
cleanUp();
|
||||||
game.add(freeMove);
|
game.add(freeMove);
|
||||||
freeMove.requestFocus();
|
freeMove.requestFocus();
|
||||||
freeMove.start(false);
|
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 = new JButton(new ImageIcon(editorImg.getScaledInstance(150, 100, Image.SCALE_DEFAULT)));
|
||||||
startLevelEditor.setBounds((screenSize.width - 200) / 2,(screenSize.height - 30) / 2,200,30);
|
startLevelEditor.setMargin(new Insets(0, 0, 0, 0));
|
||||||
startLevelEditor.addActionListener(actionEvent -> {
|
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();
|
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 = new JButton(new ImageIcon(exitImg.getScaledInstance(150, 50, Image.SCALE_DEFAULT)));
|
||||||
exitGame.setBounds((screenSize.width - 200) / 2,(screenSize.height - 30) / 2 + 70,200,30);
|
exitGame.setMargin(new Insets(0, 0, 0, 0));
|
||||||
exitGame.addActionListener(actionEvent -> game.dispatchEvent(new WindowEvent(game, WindowEvent.WINDOW_CLOSING)));
|
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));
|
||||||
|
}
|
||||||
|
|
||||||
|
@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(startNewGame);
|
||||||
add(loadSavedGame);
|
add(loadSavedGame);
|
||||||
add(startLevelEditor);
|
add(startLevelEditor);
|
||||||
add(exitGame);
|
add(exitGame);
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Timer timer = new Timer("Timer");
|
||||||
|
|
||||||
setLayout(null);
|
long delay = 3000L;
|
||||||
setBackground(Color.BLACK);
|
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() {
|
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);
|
setVisible(false);
|
||||||
startNewGame.removeActionListener(startNewGame.getActionListeners()[0]);
|
startNewGame.removeMouseListener(startNewGame.getMouseListeners()[0]);
|
||||||
loadSavedGame.removeActionListener(loadSavedGame.getActionListeners()[0]);
|
loadSavedGame.removeMouseListener(loadSavedGame.getMouseListeners()[0]);
|
||||||
exitGame.removeActionListener(exitGame.getActionListeners()[0]);
|
exitGame.removeMouseListener(exitGame.getMouseListeners()[0]);
|
||||||
menu().removeAll();
|
game.setCursor(game.getToolkit().createCustomCursor(new BufferedImage( 1, 1, BufferedImage.TYPE_INT_ARGB ), new Point(), null ));
|
||||||
game.remove(this);
|
|
||||||
menu().revalidate();
|
|
||||||
menu().repaint();
|
|
||||||
freeMove.setCursor(freeMove.getToolkit().createCustomCursor(new BufferedImage( 1, 1, BufferedImage.TYPE_INT_ARGB ), new Point(), null ));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public WindowOfMenu menu() { return this; }
|
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
src/main/resources/buttons/editor.png
Normal file
|
After Width: | Height: | Size: 797 B |
BIN
src/main/resources/buttons/exit.png
Normal file
|
After Width: | Height: | Size: 561 B |
BIN
src/main/resources/buttons/load-disabled.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
src/main/resources/buttons/load.png
Normal file
|
After Width: | Height: | Size: 534 B |
BIN
src/main/resources/buttons/new.png
Normal file
|
After Width: | Height: | Size: 556 B |
BIN
src/main/resources/foregrounds/menu.png
Normal file
|
After Width: | Height: | Size: 132 KiB |
BIN
src/main/resources/foregrounds/poweredByCellEngine.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
src/main/resources/music/Town2.wav
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
<map>
|
||||||
|
<mapName>tutorial</mapName>
|
||||||
|
<events>
|
||||||
|
<trigger>
|
||||||
|
<x>11</x>
|
||||||
|
<y>6</y>
|
||||||
|
<active>false</active>
|
||||||
|
</trigger>
|
||||||
|
</events>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<mapName>openspace</mapName>
|
||||||
|
<events>
|
||||||
|
<trigger>
|
||||||
|
<x>6</x>
|
||||||
|
<y>4</y>
|
||||||
|
<active>false</active>
|
||||||
|
</trigger>
|
||||||
|
<trigger>
|
||||||
|
<x>14</x>
|
||||||
|
<y>16</y>
|
||||||
|
<active>false</active>
|
||||||
|
</trigger>
|
||||||
|
<chest>
|
||||||
|
<x>1</x>
|
||||||
|
<y>2</y>
|
||||||
|
<active>false</active>
|
||||||
|
</chest>
|
||||||
|
<chest>
|
||||||
|
<x>15</x>
|
||||||
|
<y>7</y>
|
||||||
|
<active>true</active>
|
||||||
|
</chest>
|
||||||
|
</events>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<mapName>office</mapName>
|
||||||
|
<events>
|
||||||
|
<trigger>
|
||||||
|
<x>4</x>
|
||||||
|
<y>2</y>
|
||||||
|
<active>false</active>
|
||||||
|
</trigger>
|
||||||
|
<chest>
|
||||||
|
<x>1</x>
|
||||||
|
<y>9</y>
|
||||||
|
<active>true</active>
|
||||||
|
</chest>
|
||||||
|
</events>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<mapName>boss</mapName>
|
||||||
|
<events>
|
||||||
|
<trigger>
|
||||||
|
<x>4</x>
|
||||||
|
<y>18</y>
|
||||||
|
<active>true</active>
|
||||||
|
</trigger>
|
||||||
|
</events>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<mapName>treasure</mapName>
|
||||||
|
<events>
|
||||||
|
<trigger>
|
||||||
|
<x>6</x>
|
||||||
|
<y>1</y>
|
||||||
|
<active>true</active>
|
||||||
|
</trigger>
|
||||||
|
</events>
|
||||||
|
</map>
|
||||||
|
<map>
|
||||||
|
<mapName>storageroom</mapName>
|
||||||
|
<events>
|
||||||
|
<trigger>
|
||||||
|
<x>6</x>
|
||||||
|
<y>2</y>
|
||||||
|
<active>true</active>
|
||||||
|
</trigger>
|
||||||
|
</events>
|
||||||
|
</map>
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
<item>
|
||||||
|
<name>cup-o'-coffee</name>
|
||||||
|
<multiplicity>1</multiplicity>
|
||||||
|
<image>295</image>
|
||||||
|
<action>heal</action>
|
||||||
|
</item>
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
<location>
|
||||||
|
<map>storageroom</map>
|
||||||
|
<x>6</x>
|
||||||
|
<y>2</y>
|
||||||
|
<direction>0</direction>
|
||||||
|
</location>
|
||||||