Mercurial > sypikslang
diff gamelib/gamegui.py @ 111:bb76ce231ff9
Merge changes.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Wed, 09 May 2012 22:37:49 +0200 |
parents | 5bb711cdc569 |
children | a79bba0dfcd8 |
line wrap: on
line diff
--- a/gamelib/gamegui.py Wed May 09 22:37:07 2012 +0200 +++ b/gamelib/gamegui.py Wed May 09 22:37:49 2012 +0200 @@ -22,6 +22,18 @@ from gamelib.gamestate import Game +def _lookup_reputation(rep): + """Turn reputation in a nice string""" + + if rep < 0: + return 'Mindless Thug' + if rep < 10: + return 'Fringe Lunatic' + if rep < 100: + return 'Mad Scientist' + return 'Major Threat to World Peace' + + class ExitGameButton(BigButton): def __init__(self): @@ -310,13 +322,12 @@ self.add_child(won) -class ActivityWindow(Window): +class GameStateWindow(Window): + """Base class for windows that show a lot of game state info""" - def __init__(self, screen, lab, develop): - super(ActivityWindow, self).__init__(screen) - self.lab = lab - self.develop = develop - self.game = lab.game + def __init__(self, screen, game): + super(GameStateWindow, self).__init__(screen) + self.game = game self.screen = screen exitbut = ExitGameButton() self.add_child(exitbut) @@ -335,9 +346,22 @@ self.reputation = ValueLabel((310, 95), 'Reputation') self.add_child(self.reputation) + def update_labels(self): + self.points.set_value(self.game.get_available_points()) + self.money.set_value(self.game.money) + self.milestone.set_value(self.game.milestone) + self.reputation.set_value(_lookup_reputation(self.game.reputation)) + + +class ActivityWindow(GameStateWindow): + + def __init__(self, screen, lab, develop): + super(ActivityWindow, self).__init__(screen, lab.game) + self.lab = lab + self.develop = develop + labbut = SwitchWinButton((150, 10), 'Research', lab) self.add_child(labbut) - devbut = SwitchWinButton((300, 10), 'Development', develop) self.add_child(devbut) @@ -373,12 +397,6 @@ def update(self): self.update_labels() - def update_labels(self): - self.points.set_value(self.game.get_available_points()) - self.money.set_value(self.game.money) - self.milestone.set_value(self.game.milestone) - self.reputation.set_value(self.game.reputation) - def do_reset(self): self.lab.reset() self.develop.reset() @@ -399,29 +417,12 @@ self.update_labels() -class DevelopmentWindow(Window): +class DevelopmentWindow(GameStateWindow): """Window for handling schematics research""" def __init__(self, screen, lab): - super(DevelopmentWindow, self).__init__(screen) + super(DevelopmentWindow, self).__init__(screen, lab.game) self.lab = lab - self.game = lab.game - exitbut = ExitGameButton() - self.add_child(exitbut) - end_turn = EndTurnButton(self) - self.add_child(end_turn) - reset = ResetButton(self) - self.add_child(reset) - - self.points = ValueLabel((10, 75), 'Available Human Resources') - self.add_child(self.points) - self.money = ValueLabel((310, 75), 'Money') - self.add_child(self.money) - - self.milestone = ValueLabel((10, 95), 'Currently taken over') - self.add_child(self.milestone) - self.reputation = ValueLabel((310, 95), 'Reputation') - self.add_child(self.reputation) labbut = SwitchWinButton((150, 10), 'Research', lab) self.add_child(labbut) @@ -468,12 +469,6 @@ def update(self): self.update_labels() - def update_labels(self): - self.points.set_value(self.game.get_available_points()) - self.money.set_value(self.game.money) - self.milestone.set_value(self.game.milestone) - self.reputation.set_value(self.game.reputation) - def do_reset(self): self.reset() self.lab.reset() @@ -484,31 +479,14 @@ widget.reset() -class LabWindow(Window): +class LabWindow(GameStateWindow): """Window for the research lab""" def __init__(self, screen, game_dict): - super(LabWindow, self).__init__(screen) - self.screen = screen self.game = Game(game_dict) - exit = ExitGameButton() - self.add_child(exit) - end_turn = EndTurnButton(self) - self.add_child(end_turn) - reset = ResetButton(self) - self.add_child(reset) + super(LabWindow, self).__init__(screen, self.game) self.autosave = get_save_filename() - self.points = ValueLabel((10, 75), 'Available Human Resources') - self.add_child(self.points) - self.money = ValueLabel((310, 75), 'Money') - self.add_child(self.money) - - self.milestone = ValueLabel((10, 95), 'Currently taken over') - self.add_child(self.milestone) - self.reputation = ValueLabel((310, 95), 'Reputation') - self.add_child(self.reputation) - self.develop = DevelopmentWindow(screen, self) self.activity = ActivityWindow(screen, self, self.develop) self.develop.set_activity_window(self.activity) @@ -552,11 +530,15 @@ PopWindow.post() GameOver.post(results) return + self.save_game() self.game.start_turn() self.update_labels() self.update_widgets() self.develop.update_widgets() self.activity.update_widgets() + AddWindow.post(results) + + def save_game(self): game_data = self.game.save_data() if self.autosave: # Don't corrupt the savefile if json crashes @@ -564,17 +546,10 @@ savefile = open(self.autosave, 'w') savefile.write(data) savefile.close() - AddWindow.post(results) def update(self): self.update_labels() - def update_labels(self): - self.points.set_value(self.game.get_available_points()) - self.money.set_value(self.game.money) - self.milestone.set_value(self.game.milestone) - self.reputation.set_value(self.game.reputation) - def do_reset(self): self.reset() self.develop.reset()