changeset 63:364ff3479ef2

Remove duplicate point tracking. Rename classes for future refactoring
author Neil Muller <drnlmuller@gmail.com>
date Tue, 08 May 2012 20:51:53 +0200
parents 38f41d046c6f
children 24f0707695b4
files gamelib/gamegui.py gamelib/gamestate.py gamelib/mainmenu.py
diffstat 3 files changed, 13 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/gamelib/gamegui.py	Tue May 08 17:29:02 2012 +0200
+++ b/gamelib/gamegui.py	Tue May 08 20:51:53 2012 +0200
@@ -57,29 +57,27 @@
             science.points), font_small)
 
     def on_click(self):
-        if (self.parent.available_points > 0 and
+        if (self.parent.game.get_available_points() > 0 and
                 self.science.can_spend(self.parent.game.lab, self.points + 1)):
             self.points += 1
             self.text = '%s: %d + %d' % (self.science.NAME,
                     self.science.points, self.points)
-            self.parent.available_points -= 1
             self._draw_text()
+            self.parent.game.cur_allocation.append(self.science)
 
     def reset(self):
-        self.parent.available_points += self.points
-        self.points = 0
+        while self.points > 0:
+            self.parent.game.cur_allocation.remove(self.science)
+            self.points -= 1
         self.text = '%s: %d' % (self.science.NAME, self.science.points)
         self._draw_text()
 
-    def get_spend(self):
-        return [self.science] * self.points
 
-
-class GameWindow(Window):
-    """Main window for the game"""
+class LabWindow(Window):
+    """Window for the research lab"""
 
     def __init__(self, screen):
-        super(GameWindow, self).__init__(screen)
+        super(LabWindow, self).__init__(screen)
         self.game = Game()
         exit = ExitGameButton()
         self.add_child(exit)
@@ -90,8 +88,6 @@
 
         self.game.start_turn()
 
-        self.available_points = self.game.points
-
         self._sciences = []
 
         self._make_science_widgets()
@@ -110,9 +106,6 @@
                 y += 100
 
     def end_turn(self):
-        # Generate spend list
-        for widget in self._sciences:
-            self.game.cur_allocation.extend(widget.get_spend())
         self.game.end_turn()
         # FIXME: Horrible hackery
         for widget in self._sciences:
@@ -120,7 +113,6 @@
         self._sciences = []
         self._make_science_widgets()
         self.game.start_turn()
-        self.available_points = self.game.points
 
     def reset(self):
         for widget in self._sciences:
--- a/gamelib/gamestate.py	Tue May 08 17:29:02 2012 +0200
+++ b/gamelib/gamestate.py	Tue May 08 20:51:53 2012 +0200
@@ -45,6 +45,9 @@
         available = [x for x in self.missions if x.can_attempt(self)]
         return available
 
+    def get_available_points(self):
+        return self.points - len(self.cur_allocation)
+
     def end_turn(self):
         # Attempt the missions
         mission_results = []
--- a/gamelib/mainmenu.py	Tue May 08 17:29:02 2012 +0200
+++ b/gamelib/mainmenu.py	Tue May 08 20:51:53 2012 +0200
@@ -8,7 +8,7 @@
 from gamelib.gui_base import Window
 from gamelib.gui import BigButton
 from gamelib.engine import AddWindow
-from gamelib.gamegui import GameWindow
+from gamelib.gamegui import LabWindow
 
 from gamelib.constants import WIDTH, HEIGHT
 
@@ -59,7 +59,7 @@
         self.add_child(button2)
 
     def start_new_game(self):
-        self.game_window = GameWindow(self.screen)
+        self.game_window = LabWindow(self.screen)
         if not self.resume:
             # Add the resume button
             self.resume = ResumeGameButton(self)