view 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
line wrap: on
line source

"""Help screen."""

from pgu import gui
import pygame
import constants
import engine
import imagecache

HELP="""Welcome to %s

Introduction:

The aim of the game is to make as much money as possible from your chicken
farm. The problem is the foxes, which want to eat your chickens.  Since hiring
guards is both too expensive and unreliable, the obvious solution is to help
the chickens defend themselves.

Game mechanics:

You lose if you end a night with no chickens left.

Chickens only lay eggs in henhouses, and must stay on the egg for 2 days to
hatch a new chicken. Chickens that hatch in already full henhouses are
moved to just outside. If there is no space outside, they die immediately
from overcrowding.
""" % constants.NAME

LEVEL_TEXT="""The currently selected level is %(name)s

The goal is:
    %(goal)s
"""

def make_help_screen(level):
    """Create a main menu"""
    help_screen = HelpScreen(level, width=600)

    c = HelpContainer(align=0, valign=0)
    c.add(help_screen, 0, 0)

    return c

class HelpContainer(gui.Container):
    def paint(self, s):
        pygame.display.set_caption('Instructions')
        splash = imagecache.load_image("images/splash.png", ["lighten_most"])
        pygame.display.get_surface().blit(splash, (0, 0))
        gui.Container.paint(self, s)

class HelpScreen(gui.Document):
    def __init__(self, level, **params):
        gui.Document.__init__(self, **params)

        def done_pressed():
            pygame.event.post(engine.GO_MAIN_MENU)

        done_button = gui.Button("Return to Main Menu")
        done_button.connect(gui.CLICK, done_pressed)

        space = self.style.font.size(" ")

        full_text = HELP + '\n\n' + LEVEL_TEXT % {
                'name' : level.level_name,
                'goal' : level.goal
                }

        for paragraph in full_text.split('\n\n'):
            self.block(align=-1)
            for word in paragraph.split():
                self.add(gui.Label(word))
                self.space(space)
            self.br(space[1])
        self.br(space[1])
        self.block(align=0)
        self.add(done_button, align=0)