view mamba/__main__.py @ 601:915de6c7d342 default tip

Add support for making the editor fullscreen too.
author Simon Cross <hodgestar@gmail.com>
date Sat, 14 Jan 2023 19:34:26 +0100
parents 55e9c1b8e94c
children
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, DISPLAY_FLAGS, FULLSCREEN_FLAGS,
)
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)

    display_flags = DISPLAY_FLAGS
    if options.fullscreen:
        display_flags |= FULLSCREEN_FLAGS

    pygame.display.init()
    pygame.font.init()
    pygame.display.set_mode(SCREEN, display_flags)
    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