Mercurial > sypikslang
annotate gamelib/gamegui.py @ 56:78dfd429b9a6
Start adding science buttons
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Mon, 07 May 2012 22:54:15 +0200 |
parents | 655a6912e0ae |
children | 9aa0252fb6e4 |
rev | line source |
---|---|
53
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
1 # -*- coding: utf-8 -*- |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
2 # vim:fileencoding=utf-8 ai ts=4 sts=4 et sw=4 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
3 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
4 """Gui for the actual game""" |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
5 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
6 from gamelib.gui_base import Window |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
7 from gamelib.gui import BigButton |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
8 from gamelib.engine import PopWindow |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
9 from gamelib.constants import WIDTH |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
10 from gamelib.gamestate import Game |
53
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
11 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
12 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
13 class ExitGameButton(BigButton): |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
14 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
15 def __init__(self): |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
16 super(ExitGameButton, self).__init__(((WIDTH - 128), 10), 'Exit') |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
17 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
18 def on_click(self): |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
19 PopWindow.post() |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
20 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
21 |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
22 class EndTurnButton(BigButton): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
23 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
24 def __init__(self, parent): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
25 super(EndTurnButton, self).__init__(((WIDTH - 256), 10), 'End Turn') |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
26 self.parent = parent |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
27 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
28 def on_click(self): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
29 self.parent.end_turn() |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
30 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
31 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
32 class ResetButton(BigButton): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
33 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
34 def __init__(self, parent): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
35 super(ResetButton, self).__init__((10, 10), 'Reset points') |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
36 self.parent = parent |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
37 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
38 def on_click(self): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
39 self.parent.reset() |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
40 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
41 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
42 class ScienceWidget(BigButton): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
43 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
44 def __init__(self, science, pos, parent): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
45 self.science = science |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
46 self.points = 0 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
47 self.parent = parent |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
48 super(ScienceWidget, self).__init__(pos, '%s: %d' % (science.NAME, |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
49 science.points)) |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
50 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
51 def on_click(self): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
52 if self.parent.available_points > 0: |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
53 self.points += 1 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
54 self.text = '%s: %d' % (self.science.NAME, |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
55 self.science.points + self.points) |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
56 self.parent.available_points -= 1 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
57 self._draw_text() |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
58 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
59 def reset(self): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
60 self.parent.available_points += self.points |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
61 self.points = 0 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
62 self.text = '%s: %d' % (self.science.NAME, self.science.points) |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
63 self._draw_text() |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
64 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
65 |
53
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
66 class GameWindow(Window): |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
67 """Main window for the game""" |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
68 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
69 def __init__(self, screen): |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
70 super(GameWindow, self).__init__(screen) |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
71 self.game = Game() |
53
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
72 exit = ExitGameButton() |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
73 self.add_child(exit) |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
74 end_turn = EndTurnButton(self) |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
75 self.add_child(end_turn) |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
76 reset = ResetButton(self) |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
77 self.add_child(reset) |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
78 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
79 self.game.start_turn() |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
80 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
81 self.available_points = self.game.points |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
82 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
83 self._sciences = [] |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
84 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
85 x = 0 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
86 y = 200 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
87 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
88 for science in self.game.lab.science: |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
89 widget = ScienceWidget(science, (x, y), self) |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
90 self.add_child(widget) |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
91 self._sciences.append(widget) |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
92 x += 100 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
93 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
94 def end_turn(self): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
95 pass |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
96 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
97 def reset(self): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
98 for widget in self._sciences: |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
99 widget.reset() |