view mamba/__main__.py @ 402:001c3797a63b

Editor now uses templates and the user level directory.
author Jeremy Thurgood <firxen@gmail.com>
date Sat, 17 Sep 2011 12:56:26 +0200
parents d759f49c477d
children 98ccef2a1a3c
line wrap: on
line source

"""Main module for the game"""

import sys
import pygame
from pygame.locals import SWSURFACE

from mamba.constants import SCREEN, NAME
from mamba.options import options, parse_args, check_args
from mamba.engine import Engine
from mamba.gamestate import load_state
from mamba.sound import SoundSystem
from mamba.habitats.mainmenu import MainMenu
from mamba.habitats.levelmenu import LevelMenu
from mamba.habitats.userlevelmenu import UserLevelApi
from mamba.habitats.level import LevelHabitat
from mamba.habitats.editor import EditorHabitat
from mamba.level import Level


def main():
    """Launch the currently unnamed mamab game"""
    parse_args(sys.argv)
    if not check_args():
        sys.exit(1)

    if options.list_uncurated:
        api = UserLevelApi("uncurated")
        api.print_levels()
        sys.exit()

    SoundSystem(options.sound)
    pygame.display.init()
    pygame.font.init()
    pygame.display.set_mode(SCREEN, SWSURFACE)
    pygame.display.set_caption(NAME)

    load_state()

    if options.edit:
        start = EditorHabitat(Level(options.level, 'official'))
    elif options.level is not None:
        start = LevelHabitat(Level(options.level, 'official'),
                             LevelMenu.go_menu)
    elif options.uncurated is not None:
        api = UserLevelApi("uncurated")
        start = LevelHabitat(api.get_level(options.uncurated),
                             sys.exit)
    else:
        start = MainMenu()

    engine = Engine()
    engine.set_habitat(start)
    try:
        engine.run()
    except KeyboardInterrupt:
        pass
    engine.set_habitat(None)  # clear habitat