view skaapsteker/__main__.py @ 79:fe8652a060df

Simple menu screen and TextChoice widget
author Stefano Rivera <stefano@rivera.za.net>
date Mon, 04 Apr 2011 00:46:13 +0200
parents 100e80ed781b
children c455b7925212
line wrap: on
line source

"""Game main module.
   """

from .constants import SCREEN, FREQ, BITSIZE, CHANNELS, BUFFER, DEBUG
from .engine import Engine
from .levelscene import LevelScene
from .menuscene import MenuScene

import pygame
from pygame.locals import SWSURFACE

import sys
import optparse


def parse_args(args):
    parser = optparse.OptionParser()
    parser.add_option("--no-sound", action="store_false", default=True,
            dest="sound", help="disable sound")
    if DEBUG:
        parser.add_option("--level", type="str", default=None,
            dest="level", help="initial level")
        parser.add_option("--no-rects", action="store_false", default=True,
            dest="rects", help="disable debugging rects")
    opts, _ = parser.parse_args(args or [])
    return opts


def main():
    """Launch Nine Tales.
       """
    opts = parse_args(sys.argv)
    pygame.display.init()
    pygame.font.init()
    if opts.sound:
        try:
            pygame.mixer.init(FREQ, BITSIZE, CHANNELS, BUFFER)
        except pygame.error, exc:
            raise
            # TODO: bail out to no_sound(exc)
    else:
        # Ensure get_sound returns nothing, so everything else just works
        # TODO: bail out to disable_sound()
        pass

    pygame.display.set_mode(SCREEN, SWSURFACE)
    #pygame.display.set_icon(pygame.image.load(
    #    data.filepath('icons/nine_tales24x24.png')))
    pygame.display.set_caption("Nine Tales")

    level = getattr(opts, 'level', None)

    engine = Engine()
    if level is not None:
        engine.change_scene(LevelScene(level))
    else:
        engine.change_scene(MenuScene())
    try:
        engine.run()
    except KeyboardInterrupt:
        pass


if __name__ == '__main__':
    main()