improved menu graphics

This commit is contained in:
musilto9 2020-06-07 04:16:18 +02:00
parent 583cab479d
commit 6c7f9cdef2
14 changed files with 270 additions and 38 deletions

View File

@ -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);

View File

@ -177,6 +177,7 @@ public class WindowOfFreeMove extends JLayeredPane {
public void start(boolean newGame) {
centerContent();
mapLinkedList = new LinkedList<>();
mapManager = new MapManager(mapLinkedList, canvas, this);

View File

@ -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; }
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 797 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 556 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

View 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>

View File

@ -0,0 +1,6 @@
<item>
<name>cup-o'-coffee</name>
<multiplicity>1</multiplicity>
<image>295</image>
<action>heal</action>
</item>

View File

@ -0,0 +1,6 @@
<location>
<map>storageroom</map>
<x>6</x>
<y>2</y>
<direction>0</direction>
</location>