2020-06-10 16:20:04 +02:00

116 lines
3.7 KiB
Java

package ruscz.game.gameOfProd.BattleUI;
import ruscz.game.gameOfProd.Windows.WindowOfBattle;
import javax.swing.*;
import java.awt.*;
import java.util.Random;
import static ruscz.game.gameOfProd.Windows.WindowOfBattle.*;
/**
* JPanel with menu of Action, that User can do
*/
public class MenuOfActions extends JPanel {
private final JButton attack;
private final JButton console;
private final JButton inventory;
private final JButton escape;
public MenuOfActions(WindowOfBattle window) {
setLayout(new GridLayout(4,1));
setSize(CELL_SIZE * CANVAS_WIDTH / 3, CELL_SIZE * CANVAS_HEIGHT / 4);
setLocation(CELL_SIZE * CANVAS_WIDTH * 2 / 3, CELL_SIZE * CANVAS_HEIGHT * 3 / 4);
setVisible(false);
setBorder(BorderFactory.createLineBorder(new Color(213, 108, 18), 2));
attack = window.style(new JButton("Attack"));
console = window.style(new JButton("Console"));
inventory = window.style(new JButton("Items"));
escape = window.style(new JButton("Run Away"));
attack.addActionListener(e -> {
attack.setEnabled(false);
console.setEnabled(false);
inventory.setEnabled(false);
escape.setEnabled(false);
window.getBattle().setPlayerAttack(true);
window.getBattle().getTimer().start();
});
console.addActionListener(e -> {
attack.setEnabled(false);
console.setEnabled(false);
inventory.setEnabled(false);
escape.setEnabled(false);
window.getConsoleInput().setVisible(true);
});
inventory.addActionListener(e -> {
attack.setEnabled(false);
console.setEnabled(false);
inventory.setEnabled(false);
escape.setEnabled(false);
window.getItemsInventory().refreshItemsInField();
window.getItemsInventory().setVisible(true);
});
escape.addActionListener(e -> {
attack.setEnabled(false);
console.setEnabled(false);
inventory.setEnabled(false);
escape.setEnabled(false);
if (window.isRunAwayPossible()) {
Random r = new Random();
if (r.nextBoolean()) window.getBattle().endBattle(true);
else {
window.getMenuOfActions().setVisible(false);
window.getEnemyDescription().setVisible(false);
window.getSituationText().setVisible(true);
window.writeToOutput("Runaway was not successful.");
window.getBattle().addToTurnOrder(window.getBattle().getHeroes().getFirst());
window.getBattle().setTurnBelongTo(null);
window.getBattle().setDelay(2);
window.getBattle().getTimer().start();
}
}
else {
window.getMenuOfActions().setVisible(false);
window.getEnemyDescription().setVisible(false);
window.getSituationText().setVisible(true);
window.writeToOutput("Runaway is not possible.");
window.getBattle().addToTurnOrder(window.getBattle().getHeroes().getFirst());
window.getBattle().setTurnBelongTo(null);
window.getBattle().setDelay(2);
window.getBattle().getTimer().start();
}
});
add(attack);
add(console);
add(inventory);
add(escape);
}
public JButton getAttack() {
return attack;
}
public JButton getConsole() {
return console;
}
public JButton getInventory() {
return inventory;
}
public JButton getEscape() {
return escape;
}
}