Mercurial > rinkhals
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)