// TODO: package import java.awt.Dimension; import java.awt.GridLayout; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JButton; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class GameWindow implements ActionListener { public static final Dimension WINDOW_SIZE = new Dimension(600, 400); private JFrame frame; private JPanel menu; // TODO: remove map editor, start directly on Battle mode public GameWindow() { this.frame = new JFrame("Subconscious"); this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.frame.setSize(WINDOW_SIZE); this.frame.setPreferredSize(WINDOW_SIZE); this.frame.setLocationRelativeTo(null); JPanel menu = new JPanel(); menu.setLayout(new GridLayout(3, 1)); JButton editor = new JButton("Editor"); editor.setActionCommand("editor"); JButton battle = new JButton("Battle"); battle.setActionCommand("battle"); JButton exit = new JButton("Exit"); exit.setActionCommand("exit"); editor.addActionListener(this); battle.addActionListener(this); exit.addActionListener(this); menu.add(editor); menu.add(battle); menu.add(exit); this.menu = menu; this.frame.add(this.menu); this.frame.pack(); this.frame.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if ("editor".equals(e.getActionCommand())) { MapEditor mapEditor = new MapEditor(frame); this.frame.getContentPane().removeAll(); this.frame.getContentPane().invalidate(); this.frame.getContentPane().add(mapEditor); this.frame.getContentPane().revalidate(); Thread mapEditorThread = new Thread(mapEditor); mapEditorThread.start(); } else if ("battle".equals(e.getActionCommand())) { BattleScene battleScene = new BattleScene(frame); this.frame.getContentPane().removeAll(); this.frame.getContentPane().invalidate(); this.frame.getContentPane().add(battleScene); this.frame.getContentPane().revalidate(); Thread battleThread = new Thread(battleScene); battleThread.start(); } else if ("exit".equals(e.getActionCommand())) { this.frame.setVisible(false); this.frame.dispose(); } } public void backToMenu() { this.frame.getContentPane().removeAll(); this.frame.getContentPane().invalidate(); this.frame.getContentPane().add(this.menu); this.frame.getContentPane().revalidate(); } }