Source code for pooltool.ruleset

"""Ruleset logic"""

from typing import Type

from pooltool.game.datatypes import GameType
from pooltool.ruleset import utils
from pooltool.ruleset.datatypes import (
    AIPlayer,
    BallInHandOptions,
    Player,
    Ruleset,
    ShotConstraints,
    ShotInfo,
)
from pooltool.ruleset.eight_ball import _EightBall
from pooltool.ruleset.nine_ball import _NineBall
from pooltool.ruleset.sandbox import _SandBox
from pooltool.ruleset.snooker import _Snooker
from pooltool.ruleset.sum_to_three import _SumToThree
from pooltool.ruleset.three_cushion import _ThreeCushion

_ruleset_classes = {
    GameType.NINEBALL: _NineBall,
    GameType.EIGHTBALL: _EightBall,
    GameType.THREECUSHION: _ThreeCushion,
    GameType.SNOOKER: _Snooker,
    GameType.SANDBOX: _SandBox,
    GameType.SUMTOTHREE: _SumToThree,
}


[docs] def get_ruleset(game: GameType) -> Type[Ruleset]: """Retrieve a ruleset class Args: game: The game type. Returns: Type[Ruleset]: An uninitialized class object representing a game. """ return _ruleset_classes[game]
__all__ = [ "AIPlayer", "Player", "BallInHandOptions", "ShotConstraints", "ShotInfo", "Ruleset", "get_ruleset", "utils", ]