view skaapsteker/__main__.py @ 582:213f46e787c4

Invert --no-rects option (its now --show-rects) and turn rects off by default.
author Simon Cross <hodgestar@gmail.com>
date Sun, 10 Apr 2011 15:57:48 +0200
parents 5f1058593462
children 72865593bdc7
line wrap: on
line source

"""Game main module.
   """

import os
import sys
import optparse

import pygame
from pygame.locals import SWSURFACE

from . import options
from .constants import SCREEN, DEBUG
from .data import filepath
from .engine import Engine
from .levelscene import LevelScene
from .menuscene import MenuScene
from .sound import SoundSystem


def _get_default_save_location():
    """Return a default save game location."""
    app = "ninetales"
    if sys.platform.startswith("win") and "APPDATA" in os.environ:
        return os.path.join(os.environ["APPDATA"], app)
    else:
        return os.path.join(os.path.expanduser("~"), ".%s" % app)


def parse_args(args):
    parser = optparse.OptionParser()
    parser.add_option("--no-sound", action="store_false", default=True,
            dest="sound", help="disable sound")
    parser.add_option("--dvorak", action="store_true", default=False,
            dest="dvorak", help="Dvorak keyboard layout")
    parser.add_option("--save-location", action="store", default=_get_default_save_location(),
            dest="save_location", help="Saved game location")
    if DEBUG:
        parser.add_option("--level", type="str", default=None,
            dest="level", help="Initial level")
        parser.add_option("--all-tails", action="store_true", default=False,
            dest='all_tails', help="Start with all the tails")
        parser.add_option("--show-rects", action="store_true", default=False,
            dest="rects", help="Disable debugging rects")
    opts, _ = parser.parse_args(args or [])
    options['dvorak'] = opts.dvorak
    options['sound'] = opts.sound
    options['save_location'] = opts.save_location
    if DEBUG:
        options['debug_rects'] = opts.rects
        options['all_tails'] = opts.all_tails
        return opts.level


def main():
    """Launch Nine Tales.
       """
    level = parse_args(sys.argv)
    pygame.display.init()
    pygame.font.init()
    soundsystem = SoundSystem(options['sound'])
    pygame.display.set_mode(SCREEN, SWSURFACE)
    pygame.display.set_icon(pygame.image.load(filepath('icons/program/icon_24.png')))
    pygame.display.set_caption("Nine Tales")

    engine = Engine(soundsystem)
    if level is not None:
        engine.game_state.new_game()
        engine.change_scene(LevelScene(engine.game_state, soundsystem, level + '.starting'))
    else:
        engine.change_scene(MenuScene(engine.game_state, soundsystem))
    try:
        engine.run()
    except KeyboardInterrupt:
        pass


if __name__ == '__main__':
    main()