From fc845ea8f4ae86bdeeac150628a668a781885e02 Mon Sep 17 00:00:00 2001 From: shebang Date: Wed, 14 Jan 2015 08:00:53 +0100 Subject: [PATCH] added new state of highscore implementation. problems are some NULLP. Exceptions of the MapEngine while getting the Scores --- HeatUp/src/de/heatup/testing/Main.java | 3 +- .../src/de/heatup/ui/menu/HighscorePanel.java | 41 +++++++++++++++---- HeatUp/src/de/heatup/ui/menu/MenuPanel.java | 13 +++++- 3 files changed, 46 insertions(+), 11 deletions(-) diff --git a/HeatUp/src/de/heatup/testing/Main.java b/HeatUp/src/de/heatup/testing/Main.java index ddaa030..429b7a0 100644 --- a/HeatUp/src/de/heatup/testing/Main.java +++ b/HeatUp/src/de/heatup/testing/Main.java @@ -16,8 +16,7 @@ public class Main extends JFrame { this.setSize(800, 600); this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); - this.add(HighscorePanel.getHighscorePanel(), BorderLayout.CENTER); - + this.add(HighscorePanel.getHighscorePanel(), BorderLayout.CENTER); this.setVisible(true); } diff --git a/HeatUp/src/de/heatup/ui/menu/HighscorePanel.java b/HeatUp/src/de/heatup/ui/menu/HighscorePanel.java index 050fa5c..825b751 100644 --- a/HeatUp/src/de/heatup/ui/menu/HighscorePanel.java +++ b/HeatUp/src/de/heatup/ui/menu/HighscorePanel.java @@ -12,6 +12,7 @@ import de.heatup.highscore.ScoreEntry; import de.heatup.logging.Logger; import de.heatup.mapengine.MapEngine; import de.heatup.ui.FontLoader; +import de.heatup.ui.PanelBuilder; public class HighscorePanel { @@ -31,6 +32,7 @@ public class HighscorePanel { // MapEngine used to get and set the Highscore private static MapEngine me; + private static int scoreEntries = 0; public HighscorePanel() { @@ -39,15 +41,18 @@ public class HighscorePanel { } private static void getHighscores() { - // default map - me = new MapEngine(1); - // set some default values - me.getHighscoreHandler().setHighscore(me.getMapHash(), "Daniel", 3134); - me.getHighscoreHandler().setHighscore(me.getMapHash(), "Tim", 2010); - me.getHighscoreHandler().saveHighscores(); + // TODO : Init the MapEngine before a new game is started for getting highscores + me = PanelBuilder.getMapEngine(); - for (ScoreEntry score : me.getHighscoreHandler().getHighscores(me.getMapHash())) { + // only for testing purposes +// me.getHighscoreHandler().setHighscore(me.getMapHash(), "Daniel", 3134); +// me.getHighscoreHandler().setHighscore(me.getMapHash(), "Tim", 2010); +// me.getHighscoreHandler().saveHighscores(); + + // count Score entries for building the GridLayout + for(ScoreEntry score : me.getHighscoreHandler().getHighscores(me.getMapHash())) { + scoreEntries++; Logger.write(score.getName()+" "+score.getScore()); } } @@ -77,6 +82,7 @@ public class HighscorePanel { ttfbase = FontLoader.getFont(); emulogicHeading = ttfbase.deriveFont(Font.PLAIN, 20); emulogicDivider = ttfbase.deriveFont(Font.PLAIN, 10); + emulogicSmall = ttfbase.deriveFont(Font.PLAIN, 12); headingLabel = new JLabel(); headingLabel.setText("HeatUP! - Highscores"); @@ -98,9 +104,30 @@ public class HighscorePanel { contentPanel.setSize(new Dimension(800, 550)); contentPanel.setBackground(Color.BLACK); contentPanel.setFocusable(false); + contentPanel.setVisible(true); // GridLayout for Scores + JPanel scores = new JPanel(); + scores.setBackground(Color.BLACK); + scores.setFocusable(false); + scores.setVisible(true); + + getHighscores(); + + scores.setLayout(new GridLayout(0, scoreEntries)); + for(ScoreEntry score : me.getHighscoreHandler().getHighscores(me.getMapHash())) { + JLabel l = new JLabel(); + l.setBackground(Color.BLACK); + l.setForeground(Color.YELLOW); + l.setFont(emulogicSmall); + l.setVisible(true); + + l.setText(score.getName() + " ---> " + score.getScore()); + scores.add(l); + } + + contentPanel.add(scores); } diff --git a/HeatUp/src/de/heatup/ui/menu/MenuPanel.java b/HeatUp/src/de/heatup/ui/menu/MenuPanel.java index 156d57b..f22402d 100644 --- a/HeatUp/src/de/heatup/ui/menu/MenuPanel.java +++ b/HeatUp/src/de/heatup/ui/menu/MenuPanel.java @@ -165,8 +165,17 @@ public class MenuPanel { showHighscore.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { - // @TODO: implement show highscore - Logger.write("show highscore"); + + if(gameExists == 1) { + + menuPanel.setVisible(false); + + HighscorePanel p = new HighscorePanel(); + PanelBuilder.getOuterPanel().add(HighscorePanel.getHighscorePanel(), BorderLayout.CENTER); + Logger.write("show highscore"); + } else if (gameExists == 2) { + Logger.write("cant show scores while game is running"); + } } });