annotate gamelib/helpscreen.py @ 390:2bcfccb8288e

Make help screen use goal from the level
author Neil Muller <drnlmuller@gmail.com>
date Thu, 29 Oct 2009 21:06:44 +0000
parents cdfeef53d6f1
children 263dea6d226b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
179
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
1 """Help screen."""
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
2
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
3 from pgu import gui
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
4 import pygame
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
5 import constants
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
6 import engine
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
7 import imagecache
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
8
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
9 HELP="""Welcome to %s
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
10
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
11 Introduction:
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
12
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
13 The aim of the game is to make as much money as possible from your chicken
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
14 farm. The problem is the foxes, which want to eat your chickens. Since hiring
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
15 guards is both too expensive and unreliable, the obvious solution is to help
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
16 the chickens defend themselves.
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
17
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
18 Game mechanics:
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
19
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
20 You lose if you end a night with no chickens left.
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
21
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
22 Chickens only lay eggs in henhouses, and must stay on the egg for 2 days to
230
fa0e818c3fee Update instructions to match new chick hatching behaviour.
Simon Cross <hodgestar@gmail.com>
parents: 181
diff changeset
23 hatch a new chicken. Chickens that hatch in already full henhouses are
fa0e818c3fee Update instructions to match new chick hatching behaviour.
Simon Cross <hodgestar@gmail.com>
parents: 181
diff changeset
24 moved to just outside. If there is no space outside, they die immediately
fa0e818c3fee Update instructions to match new chick hatching behaviour.
Simon Cross <hodgestar@gmail.com>
parents: 181
diff changeset
25 from overcrowding.
179
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
26 """ % constants.NAME
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
27
390
2bcfccb8288e Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents: 309
diff changeset
28 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
29
2bcfccb8288e Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents: 309
diff changeset
30 The goal is:
2bcfccb8288e Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents: 309
diff changeset
31 %(goal)s
2bcfccb8288e Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents: 309
diff changeset
32 """
2bcfccb8288e Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents: 309
diff changeset
33
2bcfccb8288e Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents: 309
diff changeset
34 def make_help_screen(level):
179
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
35 """Create a main menu"""
390
2bcfccb8288e Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents: 309
diff changeset
36 help_screen = HelpScreen(level, width=600)
179
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
37
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
38 c = HelpContainer(align=0, valign=0)
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
39 c.add(help_screen, 0, 0)
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
40
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
41 return c
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
42
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
43 class HelpContainer(gui.Container):
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
44 def paint(self, s):
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
45 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
46 splash = imagecache.load_image("images/splash.png", ["lighten_most"])
179
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
47 pygame.display.get_surface().blit(splash, (0, 0))
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
48 gui.Container.paint(self, s)
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
49
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
50 class HelpScreen(gui.Document):
390
2bcfccb8288e Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents: 309
diff changeset
51 def __init__(self, level, **params):
179
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
52 gui.Document.__init__(self, **params)
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
53
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
54 def done_pressed():
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
55 pygame.event.post(engine.GO_MAIN_MENU)
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
56
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
57 done_button = gui.Button("Return to Main Menu")
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
58 done_button.connect(gui.CLICK, done_pressed)
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
59
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
60 space = self.style.font.size(" ")
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
61
390
2bcfccb8288e Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents: 309
diff changeset
62 full_text = HELP + '\n\n' + LEVEL_TEXT % {
2bcfccb8288e Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents: 309
diff changeset
63 'name' : level.level_name,
2bcfccb8288e Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents: 309
diff changeset
64 'goal' : level.goal
2bcfccb8288e Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents: 309
diff changeset
65 }
2bcfccb8288e Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents: 309
diff changeset
66
2bcfccb8288e Make help screen use goal from the level
Neil Muller <drnlmuller@gmail.com>
parents: 309
diff changeset
67 for paragraph in full_text.split('\n\n'):
179
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
68 self.block(align=-1)
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
69 for word in paragraph.split():
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
70 self.add(gui.Label(word))
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
71 self.space(space)
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
72 self.br(space[1])
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
73 self.br(space[1])
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
74 self.block(align=0)
e2b5262c2b11 Add basic help screen
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
75 self.add(done_button, align=0)