view mamba/__main__.py @ 366:d759f49c477d

Option for printing list of uncurated levels.
author Simon Cross <hodgestar@gmail.com>
date Sat, 17 Sep 2011 00:13:29 +0200
parents cc8be536a7fc
children 001c3797a63b
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, load_levels
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()
    load_levels()

    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