improved menu graphics
@ -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);
|
||||
|
||||
@ -177,6 +177,7 @@ public class WindowOfFreeMove extends JLayeredPane {
|
||||
|
||||
public void start(boolean newGame) {
|
||||
centerContent();
|
||||
|
||||
mapLinkedList = new LinkedList<>();
|
||||
mapManager = new MapManager(mapLinkedList, canvas, this);
|
||||
|
||||
|
||||
@ -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 -> {
|
||||
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 -> {
|
||||
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 -> {
|
||||
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));
|
||||
}
|
||||
|
||||
@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");
|
||||
|
||||
setLayout(null);
|
||||
setBackground(Color.BLACK);
|
||||
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; }
|
||||
}
|
||||
|
||||
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>
|
||||