Mercurial > rinkhals
annotate gamelib/helpscreen.py @ 572:40eee9e1246c
extended help; renamed building-related buttons.
author | Adrianna Pińska <adrianna.pinska@gmail.com> |
---|---|
date | Sat, 28 Nov 2009 20:22:51 +0000 |
parents | a8dde729000a |
children | ecad90bbdc61 |
rev | line source |
---|---|
179 | 1 """Help screen.""" |
2 | |
3 from pgu import gui | |
4 import pygame | |
5 import constants | |
6 import imagecache | |
7 | |
465
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
8 HELP = [ |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
9 """Welcome to %s |
179 | 10 |
11 Introduction: | |
12 | |
13 The aim of the game is to make as much money as possible from your chicken | |
572
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
14 farm. The problem is that chickens are delicious and foxes want to eat them. |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
15 Since hiring guards is too expensive and too unreliable, the obvious solution |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
16 is to help the chickens defend themselves. |
179 | 17 |
471 | 18 You lose if you end a night with no chickens left. |
179 | 19 |
572
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
20 Check the in-game controls reference for information about keys and mouse buttons! |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
21 |
471 | 22 """ % constants.NAME, |
23 | |
572
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
24 """Biology and economics: |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
25 |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
26 Chickens only lay eggs in henhouses. An egg must be incubated for two days to |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
27 hatch. Chickens that hatch in already full henhouses are moved outside. If there |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
28 is no space left next to the henhouse, they die immediately from overcrowding. |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
29 |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
30 Chickens have short attention spans, and will stray from where you put them at |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
31 the end of the day if they are out in the open. |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
32 |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
33 You can sell chickens and eggs. Only one egg per chicken will hatch; the excess |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
34 is sold automatically. The fox pelts your chickens acquire during their violent |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
35 nocturnal activities are also sold automatically. |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
36 |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
37 Buildings require wood to construct. You can buy and sell wood. If you equip a |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
38 chicken with an axe and place it next to some trees, it will chop some down at the |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
39 end of the day. |
179 | 40 |
572
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
41 """, |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
42 |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
43 """Equipment: |
465
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
44 |
572
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
45 Axe: For chopping down trees. Doubles as a weapon, but it's not very good. \\ |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
46 Helmet: Cheap armour. \\ |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
47 Kevlar: More expensive and durable armour. \\ |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
48 Knife: Easy to use, but only at melee range, \\ |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
49 Rifle: Ranged weapon; requires more skill. \\ |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
50 Sniper rifle: Longer range and better accuracy than the plain rifle, but less ammo per clip. |
471 | 51 |
572
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
52 You can sell equipment, but you don't get the full price back. |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
53 |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
54 Guns use ammunition. You have an unlimited supply, but chickens don't have pockets, so they |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
55 can only use one clip per night. |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
56 |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
57 """, |
471 | 58 |
465
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
59 """ |
572
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
60 Buildings: |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
61 |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
62 Henhouse: The standard chicken dwelling. \\ |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
63 Hendominium: A luxury double-storey chicken dwelling. \\ |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
64 Watchtower: A lookout post which helps chickens with rifles to see better and further away. \\ |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
65 Fence: A barrier to both foxes and chickens. |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
66 |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
67 You can repair broken fences and demolish buildings for their wood. You won't get as |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
68 much as you started with -- chickens are bad tenants and peck holes in everything. |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
69 |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
70 """, |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
71 |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
72 """ |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
73 The enemy: |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
74 |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
75 Fox: One of the little furry gluttons who are gorging themselves on your chickens. \\ |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
76 Greedy fox: Doesn't have the decency to stop at just one chicken. \\ |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
77 Ninja fox: Tries to sneak past your chicken guards. \\ |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
78 Sapper fox: Blows up your fences with explosives. \\ |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
79 Rinkhals: Not in fact a fox at all. It has eclectic tastes. \\ |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
80 |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
81 """, |
465
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
82 ] |
179 | 83 |
390
2bcfccb8288e
Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents:
309
diff
changeset
|
84 LEVEL_TEXT="""The currently selected level is %(name)s |
2bcfccb8288e
Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents:
309
diff
changeset
|
85 |
2bcfccb8288e
Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents:
309
diff
changeset
|
86 The goal is: |
2bcfccb8288e
Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents:
309
diff
changeset
|
87 %(goal)s |
2bcfccb8288e
Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents:
309
diff
changeset
|
88 """ |
2bcfccb8288e
Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents:
309
diff
changeset
|
89 |
2bcfccb8288e
Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents:
309
diff
changeset
|
90 def make_help_screen(level): |
179 | 91 """Create a main menu""" |
390
2bcfccb8288e
Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents:
309
diff
changeset
|
92 help_screen = HelpScreen(level, width=600) |
179 | 93 |
94 c = HelpContainer(align=0, valign=0) | |
95 c.add(help_screen, 0, 0) | |
96 | |
97 return c | |
98 | |
99 class HelpContainer(gui.Container): | |
100 def paint(self, s): | |
101 pygame.display.set_caption('Instructions') | |
181
7e556ef40100
Lighten help screen. Fix some oddities in darken modifier.
Simon Cross <hodgestar@gmail.com>
parents:
179
diff
changeset
|
102 splash = imagecache.load_image("images/splash.png", ["lighten_most"]) |
179 | 103 pygame.display.get_surface().blit(splash, (0, 0)) |
104 gui.Container.paint(self, s) | |
105 | |
106 class HelpScreen(gui.Document): | |
390
2bcfccb8288e
Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents:
309
diff
changeset
|
107 def __init__(self, level, **params): |
179 | 108 gui.Document.__init__(self, **params) |
109 | |
465
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
110 self.cur_page = 0 |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
111 |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
112 self.level = level |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
113 |
179 | 114 def done_pressed(): |
566
a8dde729000a
Add 'Save and Quit' option to quit dialog. Move game events from engine to constants to ease 'import engine' fun
Neil Muller <drnlmuller@gmail.com>
parents:
471
diff
changeset
|
115 pygame.event.post(constants.GO_MAIN_MENU) |
179 | 116 |
465
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
117 def next_page(): |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
118 self.cur_page += 1 |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
119 if self.cur_page >= len(HELP): |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
120 self.cur_page = 0 |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
121 self.redraw() |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
122 |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
123 def prev_page(): |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
124 self.cur_page -= 1 |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
125 if self.cur_page < 0: |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
126 self.cur_page = len(HELP) - 1 |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
127 self.redraw() |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
128 |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
129 self.done_button = gui.Button("Return to Main Menu") |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
130 self.done_button.connect(gui.CLICK, done_pressed) |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
131 |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
132 self.prev_button = gui.Button("Prev Page") |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
133 self.prev_button.connect(gui.CLICK, prev_page) |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
134 |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
135 self.next_button = gui.Button("Next Page") |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
136 self.next_button.connect(gui.CLICK, next_page) |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
137 |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
138 self.redraw() |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
139 |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
140 def redraw(self): |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
141 for widget in self.widgets[:]: |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
142 self.remove(widget) |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
143 self.layout._widgets = [] |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
144 self.layout.init() |
179 | 145 |
146 space = self.style.font.size(" ") | |
147 | |
471 | 148 if self.cur_page == 0: |
149 full_text = "Page %d / %d\n\n" % (self.cur_page + 1, len(HELP)) + \ | |
150 HELP[self.cur_page] + '\n\n' + LEVEL_TEXT % { | |
151 'name' : self.level.level_name, | |
152 'goal' : self.level.goal | |
153 } | |
154 else: | |
155 full_text = "Page %d / %d\n\n" % (self.cur_page + 1, len(HELP)) + \ | |
156 HELP[self.cur_page] | |
390
2bcfccb8288e
Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents:
309
diff
changeset
|
157 |
2bcfccb8288e
Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents:
309
diff
changeset
|
158 for paragraph in full_text.split('\n\n'): |
179 | 159 self.block(align=-1) |
160 for word in paragraph.split(): | |
572
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
161 if word == "\\": |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
162 self.br(space[1]) |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
163 else: |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
164 self.add(gui.Label(word)) |
40eee9e1246c
extended help; renamed building-related buttons.
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
566
diff
changeset
|
165 self.space(space) |
179 | 166 self.br(space[1]) |
167 self.br(space[1]) | |
465
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
168 self.add(self.prev_button, align=-1) |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
169 self.add(self.next_button, align=1) |
263dea6d226b
Add support for multiple pages to help screen
Neil Muller <drnlmuller@gmail.com>
parents:
390
diff
changeset
|
170 self.add(self.done_button, align=0) |