Mercurial > rinkhals
changeset 302:01c1682dc250
Mostly working selling equipment in buildings
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Sat, 05 Sep 2009 17:18:14 +0000 |
parents | 8d6647c912b3 |
children | e12d99215b74 |
files | TODO gamelib/gameboard.py |
diffstat | 2 files changed, 29 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/TODO Sat Sep 05 16:47:10 2009 +0000 +++ b/TODO Sat Sep 05 17:18:14 2009 +0000 @@ -7,6 +7,7 @@ * Py2app packaging (jerith) * Sell equipment from chickens in buildings (Neil) + - Display bug with multiple equipment to be resolved == POST PYWEEK ==
--- a/gamelib/gameboard.py Sat Sep 05 16:47:10 2009 +0000 +++ b/gamelib/gameboard.py Sat Sep 05 17:18:14 2009 +0000 @@ -550,7 +550,7 @@ if chicken in self.tv.sprites: self.tv.sprites.remove(chicken) - def open_dialog(self, widget, close_callback=None): + def open_dialog(self, widget, x=None, y=None, close_callback=None): """Open a dialog for the given widget. Add close button.""" tbl = gui.Table() @@ -569,7 +569,12 @@ tbl.td(gui.Spacer(100, 0)) tbl.td(close_button, align=1) - self.disp.open(tbl) + if x: + offset = (self.disp.rect.center[0] + x, + self.disp.rect.center[1] + y) + else: + offset = None + self.disp.open(tbl, pos=offset) return tbl def open_building_dialog(self, building, sell_callback=None): @@ -742,17 +747,29 @@ self.remove_building(building) def sell_equipment(self, tile_pos): + x, y = 0, 0 + def do_sell(chicken): + if not chicken.equipment: + return + elif len(chicken.equipment) == 1: + item = chicken.equipment[0] + self.add_cash(item.sell_price()) + chicken.unequip(item) + else: + self.open_equipment_dialog(chicken, x, y) + return False + chicken = self.get_outside_chicken(tile_pos) - if chicken is None or not chicken.equipment: - return - if len(chicken.equipment) == 1: - item = chicken.equipment[0] - self.add_cash(item.sell_price()) - chicken.unequip(item) + if chicken is not None: + do_sell(chicken) else: - self.open_equipment_dialog(chicken) + building = self.get_building(tile_pos) + if building is None: + return + x, y = 50, 0 + self.open_building_dialog(building, do_sell) - def open_equipment_dialog(self, chicken): + def open_equipment_dialog(self, chicken, x, y): tbl = gui.Table() def sell_item(item, button): @@ -772,7 +789,7 @@ button.connect(gui.CLICK, sell_item, item, button) tbl.td(button, align=1, **kwargs) - dialog = self.open_dialog(tbl) + dialog = self.open_dialog(tbl, x=x, y=y) def event(self, e): if e.type == KEYDOWN and e.key in [K_UP, K_DOWN, K_LEFT, K_RIGHT]: