diff --git a/src/main/java/de/tims/gameexplorer/GameExplorer.java b/src/main/java/de/tims/gameexplorer/GameExplorer.java index 6f67e58..2eb997f 100644 --- a/src/main/java/de/tims/gameexplorer/GameExplorer.java +++ b/src/main/java/de/tims/gameexplorer/GameExplorer.java @@ -25,22 +25,30 @@ public class GameExplorer { private JPanel border4; private JPanel border5; private JPanel border6; + private JPanel border7; private JButton loginBtn; private JButton fleetstormBtn; private JButton fourwinsBtn; private JButton tictactoeBtn; private JButton leaderboardBtn; + private JButton logoutBtn; + private JButton exitBtn; private JButton backBtn; private JLabel username; private JLabel loginWarning; + private JLabel playerName; + private JLabel playerPoints; + private JLabel actualPlayerName; + private JLabel actualPlayerPoints; private JLabel chosenGame; private JTextField usernameInput; private Dimension minSize; private Dimension loginBtnSize; private Dimension btnSize; + private Dimension smallBtnSize; private GridBagConstraints gbc; - private static final String playerFile = "src/main/java/resources/player_data.csv"; + private static final String PLAYER_FILE = "src/main/java/resources/player_data.csv"; private enum Game { FLEETSTORM, FOURWINS, TICTACTOE, LEADERBOARD }; private Game actualGame; @@ -52,12 +60,12 @@ public class GameExplorer { frame = new JFrame("1000 infomagische Spiele"); - minSize = new Dimension(400, 300); + minSize = new Dimension(480, 360); loginBtnSize = new Dimension(91, 20); btnSize = new Dimension(160, 40); + smallBtnSize = new Dimension(75, 30); gbc = new GridBagConstraints(); - buildExplorerPanel(); buildLoginPanel(); buildNavigationPanel(); buildGamePanels(); @@ -75,6 +83,11 @@ public class GameExplorer { explorerPanel = new JPanel(); explorerPanel.setLayout(new GridBagLayout()); + playerName = new JLabel("Spieler:"); + playerPoints = new JLabel("Punkte:"); + actualPlayerName = new JLabel(actualPlayer.getName()); + actualPlayerPoints = new JLabel("" + actualPlayer.getPoints()); + fleetstormBtn = new JButton("Schiffe versenken"); fleetstormBtn.setPreferredSize(btnSize); fleetstormBtn.addActionListener(new GameAction()); @@ -87,6 +100,12 @@ public class GameExplorer { leaderboardBtn = new JButton("Leaderboard"); leaderboardBtn.setPreferredSize(btnSize); leaderboardBtn.addActionListener(new GameAction()); + logoutBtn = new JButton("Logout"); + logoutBtn.setPreferredSize(smallBtnSize); + logoutBtn.addActionListener(new LogoutAction()); + exitBtn = new JButton("Exit"); + exitBtn.setPreferredSize(smallBtnSize); + exitBtn.addActionListener(new ExitAction()); border1 = new JPanel(); border1.setOpaque(false); @@ -98,51 +117,119 @@ public class GameExplorer { border4.setOpaque(false); border5 = new JPanel(); border5.setOpaque(false); + border7 = new JPanel(); + border7.setOpaque(false); + gbc.weightx = 0.0; + gbc.anchor = GridBagConstraints.CENTER; + gbc.insets = new Insets(0, 0, 0, 0); gbc.gridx = 0; gbc.gridy = 0; - gbc.weighty = 0.2; + gbc.gridwidth = 3; + gbc.weighty = 1.0 / 6; explorerPanel.add(border1, gbc); gbc.gridx = 0; gbc.gridy = 1; + gbc.gridwidth = 3; gbc.weighty = 0.0; explorerPanel.add(fleetstormBtn, gbc); gbc.gridx = 0; gbc.gridy = 2; - gbc.weighty = 0.2; + gbc.gridwidth = 3; + gbc.weighty = 1.0 / 6; explorerPanel.add(border2, gbc); gbc.gridx = 0; gbc.gridy = 3; + gbc.gridwidth = 3; gbc.weighty = 0.0; explorerPanel.add(fourwinsBtn, gbc); gbc.gridx = 0; gbc.gridy = 4; - gbc.weighty = 0.2; + gbc.gridwidth = 3; + gbc.weighty = 1.0 / 6; explorerPanel.add(border3, gbc); gbc.gridx = 0; gbc.gridy = 5; + gbc.gridwidth = 3; gbc.weighty = 0.0; explorerPanel.add(tictactoeBtn, gbc); gbc.gridx = 0; gbc.gridy = 6; - gbc.weighty = 0.2; + gbc.gridwidth = 3; + gbc.weighty = 1.0 / 6; explorerPanel.add(border4, gbc); gbc.gridx = 0; gbc.gridy = 7; + gbc.gridwidth = 3; gbc.weighty = 0.0; explorerPanel.add(leaderboardBtn, gbc); - + gbc.gridx = 0; gbc.gridy = 8; - gbc.weighty = 0.2; + gbc.gridwidth = 3; + gbc.weighty = 1.0 / 6; explorerPanel.add(border5, gbc); + + gbc.gridx = 0; + gbc.gridy = 9; + gbc.gridwidth = 1; + gbc.weighty = 0.0; + gbc.anchor = GridBagConstraints.LINE_END; + gbc.insets = new Insets(0, 0, 0, 5); + explorerPanel.add(logoutBtn, gbc); + + gbc.gridx = 2; + gbc.gridy = 9; + gbc.gridwidth = 1; + gbc.weighty = 0.0; + gbc.anchor = GridBagConstraints.LINE_START; + gbc.insets = new Insets(0, 5, 0, 0); + explorerPanel.add(exitBtn, gbc); + + gbc.anchor = GridBagConstraints.CENTER; + gbc.insets = new Insets(0, 0, 0, 0); + gbc.gridx = 0; + gbc.gridy = 10; + gbc.gridwidth = 3; + gbc.weighty = 1.0 / 6; + explorerPanel.add(border7, gbc); + + gbc.gridx = 0; + gbc.gridy = 11; + gbc.gridwidth = 1; + gbc.weighty = 0.0; + gbc.anchor = GridBagConstraints.LINE_END; + explorerPanel.add(playerName, gbc); + + gbc.gridx = 2; + gbc.gridy = 11; + gbc.gridwidth = 1; + gbc.weighty = 0.0; + gbc.insets = new Insets(0, 5, 0, 0); + gbc.anchor = GridBagConstraints.LINE_START; + explorerPanel.add(actualPlayerName, gbc); + + gbc.gridx = 0; + gbc.gridy = 12; + gbc.gridwidth = 1; + gbc.weighty = 0.0; + gbc.anchor = GridBagConstraints.LINE_END; + explorerPanel.add(playerPoints, gbc); + + gbc.gridx = 2; + gbc.gridy = 12; + gbc.gridwidth = 1; + gbc.weighty = 0.0; + gbc.insets = new Insets(0, 5, 0, 0); + gbc.anchor = GridBagConstraints.LINE_START; + explorerPanel.add(actualPlayerPoints, gbc); } private void buildLoginPanel() { @@ -156,7 +243,10 @@ public class GameExplorer { loginWarning = new JLabel(); usernameInput = new JTextField(8); - gbc.weighty = 0; + gbc.gridwidth = 1; + gbc.weightx = 0.0; + gbc.weighty = 0.0; + gbc.anchor = GridBagConstraints.CENTER; gbc.gridx = 0; gbc.gridy = 0; gbc.insets = new Insets(0, 0, 5, 0); @@ -190,7 +280,9 @@ public class GameExplorer { border6 = new JPanel(); border6.setOpaque(false); + gbc.gridwidth = 1; gbc.weighty = 0.0; + gbc.anchor = GridBagConstraints.CENTER; gbc.gridx = 0; gbc.gridy = 0; gbc.weightx = 0.0; @@ -238,15 +330,16 @@ public class GameExplorer { if (!userInput.equals("")) { loginWarning.setText(""); - manager.loadPlayers(playerFile); + manager.loadPlayers(PLAYER_FILE); actualPlayer = manager.selectPlayer(userInput); + buildExplorerPanel(); + + frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); frame.remove(loginPanel); frame.add(explorerPanel); frame.revalidate(); frame.repaint(); - - System.out.println("Actual Player: " + actualPlayer.getName() + ", Points: " + actualPlayer.getPoints()); } else { loginWarning.setText("Kein Name eingegeben!"); } @@ -283,6 +376,30 @@ public class GameExplorer { } } + private class LogoutAction implements ActionListener { + @Override + public void actionPerformed(ActionEvent e) { + manager.savePlayers(PLAYER_FILE); + + buildLoginPanel(); + + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.remove(explorerPanel); + frame.add(loginPanel); + frame.revalidate(); + frame.repaint(); + } + } + + private class ExitAction implements ActionListener { + @Override + public void actionPerformed(ActionEvent e) { + manager.savePlayers(PLAYER_FILE); + + System.exit(0); + } + } + private class BackAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { @@ -300,6 +417,8 @@ public class GameExplorer { gamePanel.remove(leaderboardPanel); } + actualPlayerPoints.setText("" + actualPlayer.getPoints()); + frame.remove(gamePanel); frame.add(explorerPanel); frame.revalidate();