view mamba/__main__.py @ 548:af8e16742b23

Fix uncurated level loading.
author Simon Cross <hodgestar@gmail.com>
date Sun, 18 Sep 2011 03:06:55 +0200
parents e94f2b7df88d
children 55e9c1b8e94c
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, WINDOW_ICON
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 OfficialLevelMenu
from mamba.habitats.userlevelmenu import UserLevelApi
from mamba.habitats.level import LevelHabitat
from mamba.habitats.editor import EditorHabitat
from mamba.level import Level
from mamba.data import load_image


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_icon(load_image(WINDOW_ICON))
    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'),
                             OfficialLevelMenu.go_menu,
                             OfficialLevelMenu.go_menu)
    elif options.uncurated is not None:
        api = UserLevelApi("uncurated")
        start = LevelHabitat(api.get_level(options.uncurated),
                             sys.exit, sys.exit)
    else:
        start = MainMenu()

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