From 7aefbb3ca0c737957f33d0f37e8cedb88ee200d6 Mon Sep 17 00:00:00 2001 From: Andreas Jakobsson Date: Sat, 10 Jan 2009 18:29:40 +0100 Subject: [PATCH] Added function restart level. Also, player has now 10000 credits per level --- src/se/umu/cs/dit06ajnajs/ATDController.java | 14 ++++++++++++++ src/se/umu/cs/dit06ajnajs/ATDModel.java | 17 +++++++++++++++++ src/se/umu/cs/dit06ajnajs/ATDView.java | 11 +++++++++++ src/se/umu/cs/dit06ajnajs/Player.java | 23 ++++++++++++++++++++++- 4 files changed, 64 insertions(+), 1 deletion(-) diff --git a/src/se/umu/cs/dit06ajnajs/ATDController.java b/src/se/umu/cs/dit06ajnajs/ATDController.java index d9e4528..a487500 100644 --- a/src/se/umu/cs/dit06ajnajs/ATDController.java +++ b/src/se/umu/cs/dit06ajnajs/ATDController.java @@ -78,6 +78,12 @@ public class ATDController { view.updateScoreboard(); view.updateBackgroundImage(); } + + public void restartLevel() { + model.restartLevel(); + view.updateScoreboard(); + view.updateBackgroundImage(); + } public void winGame() { try { @@ -261,6 +267,7 @@ public class ATDController { // Goal check if (model.isGoalReached()) { System.out.println("Victory!"); + model.saveScore(); view.showLevelCompleteDialog(); advanceLevel(); } @@ -302,6 +309,7 @@ public class ATDController { this.view.addNewGameMenuItemListener(new NewGameListener()); this.view.addAboutMenuItemListener(new AboutListener()); this.view.addHelpMenuItemListener(new HelpListener()); + this.view.addRestartLevelMenuItemListener(new RestartLevelListener()); } /* Inner Listener classes ****************************************/ @@ -363,6 +371,12 @@ public class ATDController { } } + private class RestartLevelListener implements ActionListener { + public void actionPerformed(ActionEvent ae) { + ATDController.this.restartLevel(); + } + } + private class AboutListener implements ActionListener { public void actionPerformed(ActionEvent ae) { if (!paused) { diff --git a/src/se/umu/cs/dit06ajnajs/ATDModel.java b/src/se/umu/cs/dit06ajnajs/ATDModel.java index 47e0873..9ebea3c 100644 --- a/src/se/umu/cs/dit06ajnajs/ATDModel.java +++ b/src/se/umu/cs/dit06ajnajs/ATDModel.java @@ -36,6 +36,14 @@ public class ATDModel { // TODO: ...reset stuff } + /** + * Restart the current level + */ + public void restartLevel() { + player.loadSavedScore(); + initLevel(); + } + public boolean advanceLevel() { if (player.getCurrentLevel() + 1 < levels.size()) { player.setCurrentLevel(player.getCurrentLevel() + 1); @@ -61,6 +69,7 @@ public class ATDModel { for (Tower tower : currentLevel.getTowers()) { agents.add(tower); } + player.initCredit(); } else { //TODO vad händer om det är slut på banor? } @@ -152,6 +161,14 @@ public class ATDModel { return player.getScore(); } + public int getSavedScore() { + return this.player.getSavedScore(); + } + + public void saveScore() { + player.saveScore(); + } + public int getNumOfClearedUnits() { return currentLevel.getNumOfClearedUnits(); } diff --git a/src/se/umu/cs/dit06ajnajs/ATDView.java b/src/se/umu/cs/dit06ajnajs/ATDView.java index ae97b8a..1258763 100644 --- a/src/se/umu/cs/dit06ajnajs/ATDView.java +++ b/src/se/umu/cs/dit06ajnajs/ATDView.java @@ -27,6 +27,7 @@ import javax.swing.JTextArea; import java.util.EventListener; import javax.swing.JButton; import javax.swing.DefaultListModel; + import se.umu.cs.dit06ajnajs.agent.AgentPrototypeFactory; import javax.swing.JList; import javax.swing.ListSelectionModel; @@ -51,6 +52,7 @@ public class ATDView { // Menu private JMenuItem newGameMenuItem; + private JMenuItem restartLevelMenuItem; private JMenuItem pausMenuItem; private JMenuItem quitMenuItem; private JMenuItem helpMenuItem; @@ -141,6 +143,9 @@ public class ATDView { this.newGameMenuItem = new JMenuItem("New Game"); antiTDMenu.add(newGameMenuItem); + this.restartLevelMenuItem = new JMenuItem("Restart level"); + antiTDMenu.add(restartLevelMenuItem); + this.pausMenuItem = new JMenuItem("Pause"); antiTDMenu.add(pausMenuItem); @@ -355,6 +360,10 @@ public class ATDView { public void addNewGameMenuItemListener(ActionListener al) { this.newGameMenuItem.addActionListener(al); } + + public void addRestartLevelMenuItemListener(ActionListener al) { + this.restartLevelMenuItem.addActionListener(al); + } public void addPauseMenuItemListener(ActionListener al) { this.pausMenuItem.addActionListener(al); @@ -381,4 +390,6 @@ public class ATDView { + + } diff --git a/src/se/umu/cs/dit06ajnajs/Player.java b/src/se/umu/cs/dit06ajnajs/Player.java index 1aa389b..ec7ba40 100644 --- a/src/se/umu/cs/dit06ajnajs/Player.java +++ b/src/se/umu/cs/dit06ajnajs/Player.java @@ -6,12 +6,14 @@ public class Player { private int credit; private int score; private int currentLevel; + private int savedScore; public Player() { this.name = "Unnamed player"; - this.credit = 10000; this.score = 0; + this.savedScore = 0; this.currentLevel = 0; + initCredit(); } public void setName(String name) { @@ -31,10 +33,29 @@ public class Player { this.credit -= credit; } + public void initCredit() { + this.credit = 10000; + } + public void setCurrentLevel(int num) { this.currentLevel = num; } + public void saveScore() { + this.savedScore = score; + } + + /** + * Resets the current score to the last saved score + */ + public void loadSavedScore() { + this.score = this.savedScore; + } + + public int getSavedScore() { + return this.savedScore; + } + public int getCredit() { return this.credit; } -- 2.11.4.GIT