summaryrefslogtreecommitdiff
path: root/__main__.py
blob: 98872c0e013cfa4bd751d396f1cf21b35713dab4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/env python3

""" Entry point to play the game """

import argparse

import pygame

from cameltris.controller import Controller, KeyboardController, JoystickController
from cameltris.screens.Screen import Screen
from cameltris.screens.InGame import InGame as InGameScreen, Player
from cameltris.screens.Pause import Pause as PauseScreen
from cameltris.misc import Pause, UnPause


def main(args: dict):
    """ Main function to be called with option arguments already parsed """
    pygame.init()

    screen = pygame.display.set_mode((801, 1000))

    controller: Controller
    if args["joystick_id"] is not None:
        joystick = pygame.joystick.Joystick(args["joystick_id"])
        joystick.init()
        controller = JoystickController(joystick)
    else:
        controller = KeyboardController(pygame.key)

    # Just one player
    players = [Player(controller, args["starting_level"])]

    for player in players:
        player.refresh_piece_preview_canvas()

    clock = pygame.time.Clock()

    current_screen: Screen
    current_screen = ingame_screen = InGameScreen(players, screen)

    while True:
        try:
            current_screen.oneframe()
        except Pause:
            current_screen = PauseScreen(screen)
        except UnPause:
            current_screen = ingame_screen

        current_screen.refresh()
        pygame.display.update()

        clock.tick(60)


if __name__ == "__main__":
    PARSER = argparse.ArgumentParser()

    PARSER.add_argument("--starting-level", type=int, choices=list(range(1, 30)), default=1)
    PARSER.add_argument("--joystick", type=int, dest="joystick_id", metavar="Joystick ID")

    main(vars(PARSER.parse_args()))