Mercurial > sypikslang
annotate gamelib/gamegui.py @ 81:59afe9f92383
Hook up basic results screen
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Wed, 09 May 2012 13:03:39 +0200 |
parents | a40a76012bd7 |
children | b0d97d51df51 |
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 |
57 | 6 from pygame import image |
7 | |
8 from gamelib.data import filepath | |
65 | 9 from gamelib.gui_base import Window, TextLabel, font_small, font_medium |
72
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
10 from gamelib.gui import BigButton, ImageDrawable |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
11 from gamelib.engine import PopWindow, AddWindow |
80
a40a76012bd7
Refactor message handling so we can deal with in the gui
Neil Muller <drnlmuller@gmail.com>
parents:
72
diff
changeset
|
12 from gamelib.constants import (WIDTH, FAILURE, SUCCESS, NEW_SCIENCE, |
a40a76012bd7
Refactor message handling so we can deal with in the gui
Neil Muller <drnlmuller@gmail.com>
parents:
72
diff
changeset
|
13 NEW_SCHEMATIC) |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
14 from gamelib.gamestate import Game |
53
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
15 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
16 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
17 class ExitGameButton(BigButton): |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
18 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
19 def __init__(self): |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
20 super(ExitGameButton, self).__init__(((WIDTH - 128), 10), 'Exit') |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
21 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
22 def on_click(self): |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
23 PopWindow.post() |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
24 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
25 |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
26 class EndTurnButton(BigButton): |
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 __init__(self, parent): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
29 super(EndTurnButton, self).__init__(((WIDTH - 256), 10), 'End Turn') |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
30 self.parent = parent |
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 def on_click(self): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
33 self.parent.end_turn() |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
34 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
35 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
36 class ResetButton(BigButton): |
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 __init__(self, parent): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
39 super(ResetButton, self).__init__((10, 10), 'Reset points') |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
40 self.parent = parent |
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 def on_click(self): |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
43 self.parent.do_reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
44 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
45 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
46 class SwitchWinButton(BigButton): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
47 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
48 def __init__(self, pos, text, new_window): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
49 super(SwitchWinButton, self).__init__(pos, text) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
50 self.new_window = new_window |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
51 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
52 def on_click(self): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
53 PopWindow.post() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
54 # Refresh state |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
55 self.new_window.update() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
56 AddWindow.post(self.new_window) |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
57 |
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 class ScienceWidget(BigButton): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
60 |
57 | 61 WIDTH = 200 |
62 | |
63 BG_IMAGE_NORMAL = image.load(filepath('images/science_normal.png')) | |
64 BG_IMAGE_DOWN = image.load(filepath('images/science_down.png')) | |
65 | |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
66 def __init__(self, science, pos, parent): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
67 self.science = science |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
68 self.points = 0 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
69 self.parent = parent |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
70 super(ScienceWidget, self).__init__(pos, '%s: %d' % (science.NAME, |
62
38f41d046c6f
Make button font a parameter. Tweak indication of points to be spent
Neil Muller <drnlmuller@gmail.com>
parents:
60
diff
changeset
|
71 science.points), font_small) |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
72 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
73 def on_click(self): |
63
364ff3479ef2
Remove duplicate point tracking. Rename classes for future refactoring
Neil Muller <drnlmuller@gmail.com>
parents:
62
diff
changeset
|
74 if (self.parent.game.get_available_points() > 0 and |
59
977224a5c663
Check can_spend in science button
Neil Muller <drnlmuller@gmail.com>
parents:
57
diff
changeset
|
75 self.science.can_spend(self.parent.game.lab, self.points + 1)): |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
76 self.points += 1 |
62
38f41d046c6f
Make button font a parameter. Tweak indication of points to be spent
Neil Muller <drnlmuller@gmail.com>
parents:
60
diff
changeset
|
77 self.text = '%s: %d + %d' % (self.science.NAME, |
38f41d046c6f
Make button font a parameter. Tweak indication of points to be spent
Neil Muller <drnlmuller@gmail.com>
parents:
60
diff
changeset
|
78 self.science.points, self.points) |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
79 self._draw_text() |
63
364ff3479ef2
Remove duplicate point tracking. Rename classes for future refactoring
Neil Muller <drnlmuller@gmail.com>
parents:
62
diff
changeset
|
80 self.parent.game.cur_allocation.append(self.science) |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
81 self.parent.update_labels() |
56
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 def reset(self): |
63
364ff3479ef2
Remove duplicate point tracking. Rename classes for future refactoring
Neil Muller <drnlmuller@gmail.com>
parents:
62
diff
changeset
|
84 while self.points > 0: |
364ff3479ef2
Remove duplicate point tracking. Rename classes for future refactoring
Neil Muller <drnlmuller@gmail.com>
parents:
62
diff
changeset
|
85 self.parent.game.cur_allocation.remove(self.science) |
364ff3479ef2
Remove duplicate point tracking. Rename classes for future refactoring
Neil Muller <drnlmuller@gmail.com>
parents:
62
diff
changeset
|
86 self.points -= 1 |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
87 self.text = '%s: %d' % (self.science.NAME, self.science.points) |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
88 self._draw_text() |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
89 self.parent.update_labels() |
65 | 90 |
91 | |
72
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
92 class MissionWidget(BigButton): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
93 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
94 WIDTH = 200 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
95 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
96 BG_IMAGE_NORMAL = image.load(filepath('images/science_normal.png')) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
97 BG_IMAGE_DOWN = image.load(filepath('images/science_down.png')) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
98 BG_IMAGE_SELECTED = image.load(filepath('images/mission_selected.png')) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
99 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
100 def __init__(self, mission, pos, parent): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
101 self.mission = mission |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
102 self.parent = parent |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
103 super(MissionWidget, self).__init__(pos, '%s' % mission.NAME, |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
104 font_small) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
105 selected = ImageDrawable((0, 0, self.WIDTH, self.HEIGHT), |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
106 self.BG_IMAGE_SELECTED) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
107 self.add_state('SELECTED', selected) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
108 self.mode = 'NORMAL' |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
109 self.equipment = [] |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
110 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
111 def on_mouse_cancel(self, pos): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
112 self.set_state(self.mode) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
113 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
114 def on_mouse_up(self, pos): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
115 self.set_state(self.mode) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
116 self.on_click() |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
117 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
118 def on_click(self): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
119 if self.mode == 'SELECTED': |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
120 # unselect mission |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
121 self.mode = 'NORMAL' |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
122 self.set_state('NORMAL') |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
123 else: |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
124 # select mission and equipment |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
125 self.mode = 'SELECTED' |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
126 self.set_state('SELECTED') |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
127 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
128 def selected(self): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
129 return self.mode == 'SELECTED' |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
130 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
131 def get_equipment(self): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
132 return self.equipment |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
133 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
134 def reset(self): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
135 self.equipment = [] |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
136 self.mode = 'NORMAL' |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
137 self.set_state('NORMAL') |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
138 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
139 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
140 class ValueLabel(TextLabel): |
65 | 141 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
142 def __init__(self, pos, description): |
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
143 self.description = description |
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
144 rect = (pos[0], pos[1], 300, 50) |
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
145 super(ValueLabel, self).__init__(rect, |
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
146 '%s : 0' % description, font_medium, (255, 255, 0)) |
65 | 147 |
148 def set_value(self, value): | |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
149 self.text = '%s : %d' % (self.description, value) |
65 | 150 self._draw_text() |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
151 |
60 | 152 |
81
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
153 class ResultsWindow(Window): |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
154 |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
155 def __init__(self, screen, messages, turn): |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
156 super(ResultsWindow, self).__init__(screen) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
157 exitbut = ExitGameButton() |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
158 self.add_child(exitbut) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
159 title = TextLabel((200, 20, 400, 50), "Results for turn %d" % turn, |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
160 font_medium, (255, 255, 255)) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
161 self.add_child(title) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
162 if not messages: |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
163 results = TextLabel((200, 200, 400, 50), |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
164 "Nothing of interest happened", font_medium, |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
165 (255, 255, 255)) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
166 self.add_child(results) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
167 else: |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
168 y = 200 |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
169 for msg_type, msg in messages: |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
170 # FIXME: Better widgets |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
171 if msg_type in [NEW_SCHEMATIC, NEW_SCIENCE]: |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
172 text = TextLabel((50, y, 750, 25), |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
173 msg, font_medium, (60, 60, 255)) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
174 elif msg_type == FAILURE: |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
175 text = TextLabel((50, y, 750, 25), |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
176 msg, font_medium, (255, 60, 60)) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
177 elif msg_type == SUCCESS: |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
178 text = TextLabel((50, y, 750, 25), |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
179 msg, font_medium, (60, 255, 60)) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
180 else: |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
181 text = TextLabel((50, y, 750, 25), |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
182 msg, font_medium, (255, 255, 0)) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
183 y += 50 |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
184 self.add_child(text) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
185 |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
186 |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
187 class ActivityWindow(Window): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
188 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
189 def __init__(self, screen, lab, develop): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
190 super(ActivityWindow, self).__init__(screen) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
191 self.lab = lab |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
192 self.develop = develop |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
193 self.game = lab.game |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
194 exitbut = ExitGameButton() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
195 self.add_child(exitbut) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
196 end_turn = EndTurnButton(self) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
197 self.add_child(end_turn) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
198 reset = ResetButton(self) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
199 self.add_child(reset) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
200 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
201 self.points = ValueLabel((10, 75), 'Available Human Resources') |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
202 self.add_child(self.points) |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
203 self.money = ValueLabel((310, 75), 'Money') |
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
204 self.add_child(self.money) |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
205 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
206 labbut = SwitchWinButton((150, 10), 'Research', lab) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
207 self.add_child(labbut) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
208 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
209 devbut = SwitchWinButton((300, 10), 'Development', develop) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
210 self.add_child(devbut) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
211 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
212 self.update_labels() |
72
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
213 self._missions = [] |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
214 self._make_widgets() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
215 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
216 def _make_widgets(self): |
72
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
217 x = 0 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
218 y = 150 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
219 for mission in self.game.get_available_missions(): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
220 widget = MissionWidget(mission, (x, y), self) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
221 self._missions.append(widget) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
222 self.add_child(widget) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
223 x += 200 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
224 if x >= WIDTH: |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
225 x = 0 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
226 y += 100 |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
227 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
228 def end_turn(self): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
229 # Drop back to the research screen |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
230 PopWindow.post() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
231 self.lab.update() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
232 AddWindow.post(self.lab) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
233 self.lab.end_turn() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
234 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
235 def update_widgets(self): |
72
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
236 for widget in self._missions: |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
237 self.remove_child(widget) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
238 self._missions = [] |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
239 self._make_widgets() |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
240 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
241 def update(self): |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
242 self.update_labels() |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
243 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
244 def update_labels(self): |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
245 self.points.set_value(self.game.get_available_points()) |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
246 self.money.set_value(self.game.money) |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
247 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
248 def do_reset(self): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
249 self.lab.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
250 self.develop.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
251 self.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
252 |
72
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
253 def get_mission_list(self): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
254 selected_missions = [] |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
255 for widget in self._missions: |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
256 if widget.selected(): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
257 equipment = widget.get_equipment() |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
258 mission = widget.mission |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
259 selected_missions.append((mission, equipment)) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
260 return selected_missions |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
261 |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
262 def reset(self): |
72
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
263 for widget in self._missions: |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
264 widget.reset() |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
265 self.update_labels() |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
266 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
267 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
268 class DevelopmentWindow(Window): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
269 """Window for handling schematics research""" |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
270 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
271 def __init__(self, screen, lab): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
272 super(DevelopmentWindow, self).__init__(screen) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
273 self.lab = lab |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
274 self.game = lab.game |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
275 exitbut = ExitGameButton() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
276 self.add_child(exitbut) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
277 end_turn = EndTurnButton(self) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
278 self.add_child(end_turn) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
279 reset = ResetButton(self) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
280 self.add_child(reset) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
281 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
282 self.points = ValueLabel((10, 75), 'Available Human Resources') |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
283 self.add_child(self.points) |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
284 self.money = ValueLabel((310, 75), 'Money') |
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
285 self.add_child(self.money) |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
286 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
287 labbut = SwitchWinButton((150, 10), 'Research', lab) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
288 self.add_child(labbut) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
289 self.activity = None |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
290 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
291 self.update_labels() |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
292 self._sciences = [] |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
293 self._make_science_widgets() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
294 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
295 def set_activity_window(self, activity): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
296 # Oh, what tangled webs we weave |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
297 if not self.activity: |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
298 self.activity = activity |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
299 actbut = SwitchWinButton((300, 10), 'Activities', activity) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
300 self.add_child(actbut) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
301 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
302 def _make_science_widgets(self): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
303 x = 0 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
304 y = 150 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
305 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
306 for science in self.game.lab.science: |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
307 if science.SCIENCE_TYPE == 'schematic': |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
308 widget = ScienceWidget(science, (x, y), self) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
309 self.add_child(widget) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
310 self._sciences.append(widget) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
311 x += 200 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
312 if x >= WIDTH: |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
313 x = 0 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
314 y += 100 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
315 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
316 def end_turn(self): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
317 # Drop back to the research screen |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
318 PopWindow.post() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
319 self.lab.update() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
320 AddWindow.post(self.lab) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
321 self.lab.end_turn() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
322 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
323 def update_widgets(self): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
324 for widget in self._sciences: |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
325 self.remove_child(widget) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
326 self._sciences = [] |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
327 self._make_science_widgets() |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
328 self.update_labels() |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
329 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
330 def update(self): |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
331 self.update_labels() |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
332 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
333 def update_labels(self): |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
334 self.points.set_value(self.game.get_available_points()) |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
335 self.money.set_value(self.game.money) |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
336 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
337 def do_reset(self): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
338 self.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
339 self.lab.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
340 self.activity.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
341 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
342 def reset(self): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
343 for widget in self._sciences: |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
344 widget.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
345 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
346 |
63
364ff3479ef2
Remove duplicate point tracking. Rename classes for future refactoring
Neil Muller <drnlmuller@gmail.com>
parents:
62
diff
changeset
|
347 class LabWindow(Window): |
364ff3479ef2
Remove duplicate point tracking. Rename classes for future refactoring
Neil Muller <drnlmuller@gmail.com>
parents:
62
diff
changeset
|
348 """Window for the research lab""" |
53
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
349 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
350 def __init__(self, screen): |
63
364ff3479ef2
Remove duplicate point tracking. Rename classes for future refactoring
Neil Muller <drnlmuller@gmail.com>
parents:
62
diff
changeset
|
351 super(LabWindow, self).__init__(screen) |
81
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
352 self.screen = screen |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
353 self.game = Game() |
53
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
354 exit = ExitGameButton() |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
355 self.add_child(exit) |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
356 end_turn = EndTurnButton(self) |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
357 self.add_child(end_turn) |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
358 reset = ResetButton(self) |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
359 self.add_child(reset) |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
360 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
361 self.points = ValueLabel((10, 75), 'Available Human Resources') |
65 | 362 self.add_child(self.points) |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
363 self.money = ValueLabel((310, 75), 'Money') |
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
364 self.add_child(self.money) |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
365 |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
366 self.develop = DevelopmentWindow(screen, self) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
367 self.activity = ActivityWindow(screen, self, self.develop) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
368 self.develop.set_activity_window(self.activity) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
369 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
370 devbut = SwitchWinButton((150, 10), 'Development', self.develop) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
371 self.add_child(devbut) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
372 actbut = SwitchWinButton((300, 10), 'Activities', self.activity) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
373 self.add_child(actbut) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
374 |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
375 self._sciences = [] |
65 | 376 # Setup for the first turn |
377 self.game.start_turn() | |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
378 self.update_labels() |
60 | 379 self._make_science_widgets() |
380 | |
381 def _make_science_widgets(self): | |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
382 x = 0 |
57 | 383 y = 150 |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
384 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
385 for science in self.game.lab.science: |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
386 if science.SCIENCE_TYPE == 'research': |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
387 widget = ScienceWidget(science, (x, y), self) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
388 self.add_child(widget) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
389 self._sciences.append(widget) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
390 x += 200 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
391 if x >= WIDTH: |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
392 x = 0 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
393 y += 100 |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
394 |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
395 def update_widgets(self): |
60 | 396 # FIXME: Horrible hackery |
397 for widget in self._sciences: | |
398 self.remove_child(widget) | |
399 self._sciences = [] | |
400 self._make_science_widgets() | |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
401 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
402 def end_turn(self): |
72
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
403 self.game.cur_missions = self.activity.get_mission_list() |
80
a40a76012bd7
Refactor message handling so we can deal with in the gui
Neil Muller <drnlmuller@gmail.com>
parents:
72
diff
changeset
|
404 messages = self.game.end_turn() |
81
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
405 results = ResultsWindow(self.screen, messages, self.game.turn) |
60 | 406 self.game.start_turn() |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
407 self.update_labels() |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
408 self.update_widgets() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
409 self.develop.update_widgets() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
410 self.activity.update_widgets() |
81
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
411 AddWindow.post(results) |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
412 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
413 def update(self): |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
414 self.update_labels() |
65 | 415 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
416 def update_labels(self): |
65 | 417 self.points.set_value(self.game.get_available_points()) |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
418 self.money.set_value(self.game.money) |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
419 |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
420 def do_reset(self): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
421 self.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
422 self.develop.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
423 self.activity.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
424 |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
425 def reset(self): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
426 for widget in self._sciences: |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
427 widget.reset() |