changeset 460:7204c16ab64d

Wood market!
author Adrianna Pińska <adrianna.pinska@gmail.com>
date Mon, 23 Nov 2009 20:53:11 +0000
parents e9393970b5f6
children 279caa00f3fa
files gamelib/gameboard.py gamelib/toolbar.py
diffstat 2 files changed, 51 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/gamelib/gameboard.py	Mon Nov 23 20:12:03 2009 +0000
+++ b/gamelib/gameboard.py	Mon Nov 23 20:53:11 2009 +0000
@@ -96,6 +96,7 @@
         width, height = self.tv.size
         # Ensure we don't every try to create more foxes then is sane
         self.max_foxes = level.max_foxes
+        self.calculate_wood_groat_exchange_rate()
 
         self.selected_tool = None
         self.animal_to_place = None
@@ -669,6 +670,7 @@
         """Chickens with axes chop down trees near them"""
         for chicken in [chick for chick in self.chickens if chick.outside()]:
             chicken.chop(self)
+        self.calculate_wood_groat_exchange_rate()
 
     def foxes_move(self):
         over = True
@@ -838,6 +840,12 @@
         width, height = self.tv.size
         return len([(x,y) for x in range(width) for y in range(height) if self.tv.get((x,y)) == self.WOODLAND])
 
+    def calculate_wood_groat_exchange_rate(self):
+        width, height = self.tv.size
+        sell_price = float(10*width*height)/self.trees_left()
+        buy_price = sell_price*(1.1)
+        self.wood_sell_price, self.wood_buy_price = int(sell_price), int(buy_price)
+
     def save_game(self):
         return serializer.simplify(self)
 
--- a/gamelib/toolbar.py	Mon Nov 23 20:12:03 2009 +0000
+++ b/gamelib/toolbar.py	Mon Nov 23 20:53:11 2009 +0000
@@ -141,6 +141,11 @@
             doc.add(make_box('%d groats' % equip.SELL_PRICE))
             doc.add(make_box('N/A'))
             doc.br(space[1])
+        doc.add(make_box("Plank"))
+        doc.add(make_box('%d groats' % self.gameboard.wood_buy_price))
+        doc.add(make_box('%d groats' % self.gameboard.wood_sell_price))
+        doc.add(make_box('N/A'))
+        doc.br(space[1])
 
         fix_widths(doc)
         for word in "Damaged equipment or buildings will be sold for" \
@@ -259,6 +264,8 @@
 
         self.add_tool('Sell stuff', self.add_sell_toolbar)
 
+        self.add_tool('Trade wood', self.add_wood_toolbar)
+
         self.add_spacer(5)
 
         self.add_heading("Buildings")
@@ -280,9 +287,9 @@
         self.add_tool("Load Game", self.load_game)
 
         self.add_heading(" ")
-        # Dear pgu, is there a better way to get the current height?
-        _cur_width, cur_height = self.resize()
-        self.add_spacer(570-cur_height)
+        ## Dear pgu, is there a better way to get the current height?
+        #_cur_width, cur_height = self.resize()
+        #self.add_spacer(570-cur_height)
         self.fin_tool = self.add_tool("Finished Day", self.day_done)
 
     def add_building_toolbar(self):
@@ -293,6 +300,10 @@
         self.gameboard.change_toolbar(SellToolBar(self.gameboard,
                 width=self.style.width))
 
+    def add_wood_toolbar(self):
+        self.gameboard.change_toolbar(WoodToolBar(self.gameboard,
+                width=self.style.width))
+
     def add_equipment_toolbar(self):
         self.gameboard.change_toolbar(EquipmentToolBar(self.gameboard,
                 width=self.style.width))
@@ -364,3 +375,32 @@
         self.gameboard.change_toolbar(DefaultToolBar(self.gameboard,
                 width=self.style.width))
 
+class WoodToolBar(BaseToolBar):
+    def __init__(self, gameboard, **params):
+        BaseToolBar.__init__(self, gameboard, **params)
+        self.group = gui.Group(name='building_toolbar', value=None)
+        self.make_toolbar()
+
+    def make_toolbar(self):
+        self.gameboard.set_cursor(cursors.cursors['arrow'], None)
+
+        self.add_heading("Trade...")
+        self.add_tool("Buy (%s)" % self.gameboard.wood_buy_price, self.buy_wood)
+        self.add_tool("Sell (%s)" % self.gameboard.wood_sell_price, self.sell_wood)
+
+        self.add_spacer(15)
+        self.add_tool('Done', self.add_default_toolbar)
+
+    def add_default_toolbar(self):
+        self.gameboard.change_toolbar(DefaultToolBar(self.gameboard,
+                width=self.style.width))
+
+    def buy_wood(self):
+        if self.gameboard.cash >= self.gameboard.wood_buy_price:
+            self.gameboard.add_wood(1)
+            self.gameboard.add_cash(-self.gameboard.wood_buy_price)
+
+    def sell_wood(self):
+        if self.gameboard.wood > 0:
+            self.gameboard.add_wood(-1)
+            self.gameboard.add_cash(self.gameboard.wood_sell_price)