Mercurial > sypikslang
annotate gamelib/gamegui.py @ 97:069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Wed, 09 May 2012 21:50:29 +0200 |
parents | f0bf77787d1e |
children | e386ec5d179b |
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 |
88 | 7 try: |
8 import simplejson | |
9 json = simplejson | |
10 except ImportError: | |
11 import json | |
12 | |
57 | 13 |
14 from gamelib.data import filepath | |
88 | 15 from gamelib.game_base import get_save_filename |
65 | 16 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
|
17 from gamelib.gui import BigButton, ImageDrawable |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
18 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
|
19 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
|
20 NEW_SCHEMATIC) |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
21 from gamelib.gamestate import Game |
53
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
22 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
23 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
24 class ExitGameButton(BigButton): |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
25 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
26 def __init__(self): |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
27 super(ExitGameButton, self).__init__(((WIDTH - 128), 10), 'Exit') |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
28 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
29 def on_click(self): |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
30 PopWindow.post() |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
31 |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
32 |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
33 class EndTurnButton(BigButton): |
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 def __init__(self, parent): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
36 super(EndTurnButton, self).__init__(((WIDTH - 256), 10), 'End Turn') |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
37 self.parent = parent |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
38 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
39 def on_click(self): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
40 self.parent.end_turn() |
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 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
43 class ResetButton(BigButton): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
44 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
45 def __init__(self, parent): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
46 super(ResetButton, self).__init__((10, 10), 'Reset points') |
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 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
49 def on_click(self): |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
50 self.parent.do_reset() |
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 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
53 class SwitchWinButton(BigButton): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
54 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
55 def __init__(self, pos, text, new_window): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
56 super(SwitchWinButton, self).__init__(pos, text) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
57 self.new_window = new_window |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
58 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
59 def on_click(self): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
60 PopWindow.post() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
61 # Refresh state |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
62 self.new_window.update() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
63 AddWindow.post(self.new_window) |
56
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 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
66 class ScienceWidget(BigButton): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
67 |
57 | 68 WIDTH = 200 |
69 | |
70 BG_IMAGE_NORMAL = image.load(filepath('images/science_normal.png')) | |
71 BG_IMAGE_DOWN = image.load(filepath('images/science_down.png')) | |
72 | |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
73 def __init__(self, science, pos, parent): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
74 self.science = science |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
75 self.points = 0 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
76 self.parent = parent |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
77 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
|
78 science.points), font_small) |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
79 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
80 def on_click(self): |
63
364ff3479ef2
Remove duplicate point tracking. Rename classes for future refactoring
Neil Muller <drnlmuller@gmail.com>
parents:
62
diff
changeset
|
81 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
|
82 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
|
83 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
|
84 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
|
85 self.science.points, self.points) |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
86 self._draw_text() |
63
364ff3479ef2
Remove duplicate point tracking. Rename classes for future refactoring
Neil Muller <drnlmuller@gmail.com>
parents:
62
diff
changeset
|
87 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
|
88 self.parent.update_labels() |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
89 |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
90 def reset(self): |
63
364ff3479ef2
Remove duplicate point tracking. Rename classes for future refactoring
Neil Muller <drnlmuller@gmail.com>
parents:
62
diff
changeset
|
91 while self.points > 0: |
364ff3479ef2
Remove duplicate point tracking. Rename classes for future refactoring
Neil Muller <drnlmuller@gmail.com>
parents:
62
diff
changeset
|
92 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
|
93 self.points -= 1 |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
94 self.text = '%s: %d' % (self.science.NAME, self.science.points) |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
95 self._draw_text() |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
96 self.parent.update_labels() |
65 | 97 |
98 | |
72
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
99 class MissionWidget(BigButton): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
100 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
101 WIDTH = 200 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
102 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
103 BG_IMAGE_NORMAL = image.load(filepath('images/science_normal.png')) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
104 BG_IMAGE_DOWN = image.load(filepath('images/science_down.png')) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
105 BG_IMAGE_SELECTED = image.load(filepath('images/mission_selected.png')) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
106 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
107 def __init__(self, mission, pos, parent): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
108 self.mission = mission |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
109 self.parent = parent |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
110 super(MissionWidget, self).__init__(pos, '%s' % mission.NAME, |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
111 font_small) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
112 selected = ImageDrawable((0, 0, self.WIDTH, self.HEIGHT), |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
113 self.BG_IMAGE_SELECTED) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
114 self.add_state('SELECTED', selected) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
115 self.mode = 'NORMAL' |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
116 self.equipment = [] |
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_mouse_cancel(self, pos): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
119 self.set_state(self.mode) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
120 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
121 def on_mouse_up(self, pos): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
122 self.set_state(self.mode) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
123 self.on_click() |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
124 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
125 def on_click(self): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
126 if self.mode == 'SELECTED': |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
127 # unselect mission |
82
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
128 self.reset() |
72
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
129 else: |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
130 # select mission and equipment |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
131 self.mode = 'SELECTED' |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
132 self.set_state('SELECTED') |
82
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
133 equip = EquipWindow(self.parent.screen, self.mission, |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
134 self.parent.game, self) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
135 AddWindow.post(equip) |
72
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
136 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
137 def selected(self): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
138 return self.mode == 'SELECTED' |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
139 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
140 def get_equipment(self): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
141 return self.equipment |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
142 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
143 def reset(self): |
82
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
144 for equip in self.equipment: |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
145 # Release funds |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
146 self.parent.game.money += equip.COST |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
147 self.parent.update() |
72
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
148 self.equipment = [] |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
149 self.mode = 'NORMAL' |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
150 self.set_state('NORMAL') |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
151 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
152 |
82
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
153 class EquipWidget(BigButton): |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
154 |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
155 WIDTH = 200 |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
156 |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
157 BG_IMAGE_NORMAL = image.load(filepath('images/science_normal.png')) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
158 BG_IMAGE_DOWN = image.load(filepath('images/science_down.png')) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
159 BG_IMAGE_UNAVAILABLE = image.load(filepath('images/equip_grey.png')) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
160 |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
161 def __init__(self, equip, pos, parent, copies, available): |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
162 self.equip = equip |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
163 self.parent = parent |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
164 self.available = available |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
165 super(EquipWidget, self).__init__(pos, '[%s : %d] - %d (x %d)' |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
166 % (equip.NAME, equip.points, equip.COST, copies), font_small) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
167 if not self.available: |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
168 unavailable = ImageDrawable((0, 0, self.WIDTH, self.HEIGHT), |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
169 self.BG_IMAGE_UNAVAILABLE) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
170 # Override the default |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
171 self.add_state('NORMAL', unavailable) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
172 self.set_state('NORMAL') |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
173 self.equipment = [] |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
174 |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
175 def on_mouse_down(self, pos): |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
176 if self.available: |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
177 super(EquipWidget, self).on_mouse_down(pos) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
178 |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
179 def on_mouse_up(self, pos): |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
180 if self.available: |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
181 super(EquipWidget, self).on_mouse_up(pos) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
182 |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
183 def on_click(self): |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
184 self.parent.buy(self.equip) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
185 |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
186 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
187 class ValueLabel(TextLabel): |
65 | 188 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
189 def __init__(self, pos, description): |
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
190 self.description = description |
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
191 rect = (pos[0], pos[1], 300, 50) |
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
192 super(ValueLabel, self).__init__(rect, |
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
193 '%s : 0' % description, font_medium, (255, 255, 0)) |
65 | 194 |
195 def set_value(self, value): | |
97
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
196 self.text = '%s : %s' % (self.description, value) |
65 | 197 self._draw_text() |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
198 |
60 | 199 |
82
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
200 class EquipWindow(Window): |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
201 |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
202 def __init__(self, screen, mission, game, parent): |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
203 super(EquipWindow, self).__init__(screen) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
204 exitbut = ExitGameButton() |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
205 self.add_child(exitbut) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
206 reset = ResetButton(self) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
207 self.add_child(reset) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
208 title = TextLabel((200, 20, 400, 50), "Choose equipment for %s" |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
209 % mission.NAME, font_medium, (255, 255, 255)) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
210 self.add_child(title) |
93
f0bf77787d1e
Display long ddescription on mission screen
Neil Muller <drnlmuller@gmail.com>
parents:
90
diff
changeset
|
211 description = TextLabel((10, 70, 790, 20), mission.LONG_DESCRIPTION, |
f0bf77787d1e
Display long ddescription on mission screen
Neil Muller <drnlmuller@gmail.com>
parents:
90
diff
changeset
|
212 font_medium, (255, 255, 255)) |
f0bf77787d1e
Display long ddescription on mission screen
Neil Muller <drnlmuller@gmail.com>
parents:
90
diff
changeset
|
213 self.add_child(description) |
82
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
214 self.parent = parent |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
215 self.game = game |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
216 self.money = ValueLabel((10, 75), 'Money') |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
217 self.money.set_value(self.game.money) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
218 self.add_child(self.money) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
219 self._equip = [] |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
220 self._make_equip_widgets() |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
221 |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
222 def _make_equip_widgets(self): |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
223 for widget in self._equip: |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
224 self.remove_child(widget) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
225 self._equip = [] |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
226 x = 0 |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
227 y = 150 |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
228 available = self.game.get_available_equipment() |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
229 for equip in self.game.get_all_equipment(): |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
230 copies = self.parent.equipment.count(equip) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
231 widget = EquipWidget(equip, (x, y), self, copies, |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
232 equip in available) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
233 self._equip.append(widget) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
234 self.add_child(widget) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
235 x += 200 |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
236 if x >= WIDTH: |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
237 x = 0 |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
238 y += 100 |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
239 |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
240 def buy(self, equip): |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
241 self.game.money -= equip.COST |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
242 self.money.set_value(self.game.money) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
243 self.parent.equipment.append(equip) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
244 self.parent.parent.update() |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
245 self._make_equip_widgets() |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
246 |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
247 def do_reset(self): |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
248 for equip in self.parent.equipment: |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
249 # Release funds |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
250 self.game.money += equip.COST |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
251 self.money.set_value(self.game.money) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
252 self.parent.equipment = [] |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
253 self.parent.parent.update() |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
254 self._make_equip_widgets() |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
255 |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
256 |
81
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
257 class ResultsWindow(Window): |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
258 |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
259 def __init__(self, screen, messages, turn): |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
260 super(ResultsWindow, self).__init__(screen) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
261 exitbut = ExitGameButton() |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
262 self.add_child(exitbut) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
263 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
|
264 font_medium, (255, 255, 255)) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
265 self.add_child(title) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
266 if not messages: |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
267 results = TextLabel((200, 200, 400, 50), |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
268 "Nothing of interest happened", font_medium, |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
269 (255, 255, 255)) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
270 self.add_child(results) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
271 else: |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
272 y = 200 |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
273 for msg_type, msg in messages: |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
274 # FIXME: Better widgets |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
275 if msg_type in [NEW_SCHEMATIC, NEW_SCIENCE]: |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
276 text = TextLabel((50, y, 750, 25), |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
277 msg, font_medium, (60, 60, 255)) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
278 elif msg_type == FAILURE: |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
279 text = TextLabel((50, y, 750, 25), |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
280 msg, font_medium, (255, 60, 60)) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
281 elif msg_type == SUCCESS: |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
282 text = TextLabel((50, y, 750, 25), |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
283 msg, font_medium, (60, 255, 60)) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
284 else: |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
285 text = TextLabel((50, y, 750, 25), |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
286 msg, font_medium, (255, 255, 0)) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
287 y += 50 |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
288 self.add_child(text) |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
289 |
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
290 |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
291 class ActivityWindow(Window): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
292 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
293 def __init__(self, screen, lab, develop): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
294 super(ActivityWindow, self).__init__(screen) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
295 self.lab = lab |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
296 self.develop = develop |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
297 self.game = lab.game |
82
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
298 self.screen = screen |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
299 exitbut = ExitGameButton() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
300 self.add_child(exitbut) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
301 end_turn = EndTurnButton(self) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
302 self.add_child(end_turn) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
303 reset = ResetButton(self) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
304 self.add_child(reset) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
305 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
306 self.points = ValueLabel((10, 75), 'Available Human Resources') |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
307 self.add_child(self.points) |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
308 self.money = ValueLabel((310, 75), 'Money') |
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
309 self.add_child(self.money) |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
310 |
97
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
311 self.milestone = ValueLabel((10, 95), 'Currently taken over') |
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
312 self.add_child(self.milestone) |
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
313 self.reputation = ValueLabel((310, 95), 'Reputation') |
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
314 self.add_child(self.reputation) |
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
315 |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
316 labbut = SwitchWinButton((150, 10), 'Research', lab) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
317 self.add_child(labbut) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
318 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
319 devbut = SwitchWinButton((300, 10), 'Development', develop) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
320 self.add_child(devbut) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
321 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
322 self.update_labels() |
72
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
323 self._missions = [] |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
324 self._make_widgets() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
325 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
326 def _make_widgets(self): |
82
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
327 for widget in self._missions: |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
328 self.remove_child(widget) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
329 self._missions = [] |
72
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
330 x = 0 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
331 y = 150 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
332 for mission in self.game.get_available_missions(): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
333 widget = MissionWidget(mission, (x, y), self) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
334 self._missions.append(widget) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
335 self.add_child(widget) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
336 x += 200 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
337 if x >= WIDTH: |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
338 x = 0 |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
339 y += 100 |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
340 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
341 def end_turn(self): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
342 # Drop back to the research screen |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
343 PopWindow.post() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
344 self.lab.update() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
345 AddWindow.post(self.lab) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
346 self.lab.end_turn() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
347 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
348 def update_widgets(self): |
72
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
349 self._make_widgets() |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
350 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
351 def update(self): |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
352 self.update_labels() |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
353 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
354 def update_labels(self): |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
355 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
|
356 self.money.set_value(self.game.money) |
97
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
357 self.milestone.set_value(self.game.milestone) |
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
358 self.reputation.set_value(self.game.reputation) |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
359 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
360 def do_reset(self): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
361 self.lab.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
362 self.develop.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
363 self.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
364 |
72
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
365 def get_mission_list(self): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
366 selected_missions = [] |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
367 for widget in self._missions: |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
368 if widget.selected(): |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
369 equipment = widget.get_equipment() |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
370 mission = widget.mission |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
371 selected_missions.append((mission, equipment)) |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
372 return selected_missions |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
373 |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
374 def reset(self): |
72
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
375 for widget in self._missions: |
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
376 widget.reset() |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
377 self.update_labels() |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
378 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
379 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
380 class DevelopmentWindow(Window): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
381 """Window for handling schematics research""" |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
382 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
383 def __init__(self, screen, lab): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
384 super(DevelopmentWindow, self).__init__(screen) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
385 self.lab = lab |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
386 self.game = lab.game |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
387 exitbut = ExitGameButton() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
388 self.add_child(exitbut) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
389 end_turn = EndTurnButton(self) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
390 self.add_child(end_turn) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
391 reset = ResetButton(self) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
392 self.add_child(reset) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
393 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
394 self.points = ValueLabel((10, 75), 'Available Human Resources') |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
395 self.add_child(self.points) |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
396 self.money = ValueLabel((310, 75), 'Money') |
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
397 self.add_child(self.money) |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
398 |
97
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
399 self.milestone = ValueLabel((10, 95), 'Currently taken over') |
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
400 self.add_child(self.milestone) |
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
401 self.reputation = ValueLabel((310, 95), 'Reputation') |
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
402 self.add_child(self.reputation) |
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
403 |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
404 labbut = SwitchWinButton((150, 10), 'Research', lab) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
405 self.add_child(labbut) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
406 self.activity = None |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
407 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
408 self.update_labels() |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
409 self._sciences = [] |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
410 self._make_science_widgets() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
411 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
412 def set_activity_window(self, activity): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
413 # Oh, what tangled webs we weave |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
414 if not self.activity: |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
415 self.activity = activity |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
416 actbut = SwitchWinButton((300, 10), 'Activities', activity) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
417 self.add_child(actbut) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
418 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
419 def _make_science_widgets(self): |
82
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
420 for widget in self._sciences: |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
421 self.remove_child(widget) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
422 self._sciences = [] |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
423 x = 0 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
424 y = 150 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
425 for science in self.game.lab.science: |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
426 if science.SCIENCE_TYPE == 'schematic': |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
427 widget = ScienceWidget(science, (x, y), self) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
428 self.add_child(widget) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
429 self._sciences.append(widget) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
430 x += 200 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
431 if x >= WIDTH: |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
432 x = 0 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
433 y += 100 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
434 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
435 def end_turn(self): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
436 # Drop back to the research screen |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
437 PopWindow.post() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
438 self.lab.update() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
439 AddWindow.post(self.lab) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
440 self.lab.end_turn() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
441 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
442 def update_widgets(self): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
443 self._make_science_widgets() |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
444 self.update_labels() |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
445 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
446 def update(self): |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
447 self.update_labels() |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
448 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
449 def update_labels(self): |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
450 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
|
451 self.money.set_value(self.game.money) |
97
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
452 self.milestone.set_value(self.game.milestone) |
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
453 self.reputation.set_value(self.game.reputation) |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
454 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
455 def do_reset(self): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
456 self.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
457 self.lab.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
458 self.activity.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
459 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
460 def reset(self): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
461 for widget in self._sciences: |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
462 widget.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
463 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
464 |
63
364ff3479ef2
Remove duplicate point tracking. Rename classes for future refactoring
Neil Muller <drnlmuller@gmail.com>
parents:
62
diff
changeset
|
465 class LabWindow(Window): |
364ff3479ef2
Remove duplicate point tracking. Rename classes for future refactoring
Neil Muller <drnlmuller@gmail.com>
parents:
62
diff
changeset
|
466 """Window for the research lab""" |
53
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
467 |
88 | 468 def __init__(self, screen, game_dict): |
63
364ff3479ef2
Remove duplicate point tracking. Rename classes for future refactoring
Neil Muller <drnlmuller@gmail.com>
parents:
62
diff
changeset
|
469 super(LabWindow, self).__init__(screen) |
81
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
470 self.screen = screen |
88 | 471 self.game = Game(game_dict) |
53
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
472 exit = ExitGameButton() |
655a6912e0ae
Split gui stuff out of main.py
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
473 self.add_child(exit) |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
474 end_turn = EndTurnButton(self) |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
475 self.add_child(end_turn) |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
476 reset = ResetButton(self) |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
477 self.add_child(reset) |
88 | 478 self.autosave = get_save_filename() |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
479 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
480 self.points = ValueLabel((10, 75), 'Available Human Resources') |
65 | 481 self.add_child(self.points) |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
482 self.money = ValueLabel((310, 75), 'Money') |
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
483 self.add_child(self.money) |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
484 |
97
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
485 self.milestone = ValueLabel((10, 95), 'Currently taken over') |
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
486 self.add_child(self.milestone) |
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
487 self.reputation = ValueLabel((310, 95), 'Reputation') |
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
488 self.add_child(self.reputation) |
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
489 |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
490 self.develop = DevelopmentWindow(screen, self) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
491 self.activity = ActivityWindow(screen, self, self.develop) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
492 self.develop.set_activity_window(self.activity) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
493 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
494 devbut = SwitchWinButton((150, 10), 'Development', self.develop) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
495 self.add_child(devbut) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
496 actbut = SwitchWinButton((300, 10), 'Activities', self.activity) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
497 self.add_child(actbut) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
498 |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
499 self._sciences = [] |
65 | 500 # Setup for the first turn |
501 self.game.start_turn() | |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
502 self.update_labels() |
60 | 503 self._make_science_widgets() |
504 | |
505 def _make_science_widgets(self): | |
82
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
506 # FIXME: Horrible hackery |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
507 for widget in self._sciences: |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
508 self.remove_child(widget) |
b0d97d51df51
Hook up simplistic equipment screen
Neil Muller <drnlmuller@gmail.com>
parents:
81
diff
changeset
|
509 self._sciences = [] |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
510 x = 0 |
57 | 511 y = 150 |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
512 for science in self.game.lab.science: |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
513 if science.SCIENCE_TYPE == 'research': |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
514 widget = ScienceWidget(science, (x, y), self) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
515 self.add_child(widget) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
516 self._sciences.append(widget) |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
517 x += 200 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
518 if x >= WIDTH: |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
519 x = 0 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
520 y += 100 |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
521 |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
522 def update_widgets(self): |
60 | 523 self._make_science_widgets() |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
524 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
525 def end_turn(self): |
72
8b06b07a1477
Very basic mission support
Neil Muller <drnlmuller@gmail.com>
parents:
67
diff
changeset
|
526 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
|
527 messages = self.game.end_turn() |
81
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
528 results = ResultsWindow(self.screen, messages, self.game.turn) |
60 | 529 self.game.start_turn() |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
530 self.update_labels() |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
531 self.update_widgets() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
532 self.develop.update_widgets() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
533 self.activity.update_widgets() |
88 | 534 game_data = self.game.save_data() |
535 if self.autosave: | |
90
0823e2529c23
Add robustness around the savefile stuff
Neil Muller <drnlmuller@gmail.com>
parents:
88
diff
changeset
|
536 # Don't corrupt the savefile if json crashes |
0823e2529c23
Add robustness around the savefile stuff
Neil Muller <drnlmuller@gmail.com>
parents:
88
diff
changeset
|
537 data = json.dumps(game_data) |
88 | 538 savefile = open(self.autosave, 'w') |
90
0823e2529c23
Add robustness around the savefile stuff
Neil Muller <drnlmuller@gmail.com>
parents:
88
diff
changeset
|
539 savefile.write(data) |
88 | 540 savefile.close() |
81
59afe9f92383
Hook up basic results screen
Neil Muller <drnlmuller@gmail.com>
parents:
80
diff
changeset
|
541 AddWindow.post(results) |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
542 |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
543 def update(self): |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
544 self.update_labels() |
65 | 545 |
67
06c8539df478
Tweak label handling. Show money as well
Neil Muller <drnlmuller@gmail.com>
parents:
66
diff
changeset
|
546 def update_labels(self): |
65 | 547 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
|
548 self.money.set_value(self.game.money) |
97
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
549 self.milestone.set_value(self.game.milestone) |
069a2d34b8b5
I shall pretend I did not touch the GUI, even though I added a myriad copies of some extra widgets.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
550 self.reputation.set_value(self.game.reputation) |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
551 |
66
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
552 def do_reset(self): |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
553 self.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
554 self.develop.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
555 self.activity.reset() |
43b34b013462
Add development and activity screens
Neil Muller <drnlmuller@gmail.com>
parents:
65
diff
changeset
|
556 |
56
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
557 def reset(self): |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
558 for widget in self._sciences: |
78dfd429b9a6
Start adding science buttons
Neil Muller <drnlmuller@gmail.com>
parents:
53
diff
changeset
|
559 widget.reset() |