from typing import List, Optional, Type from bemani.backend.base import Base, Factory from bemani.backend.museca.museca1 import Museca1 from bemani.backend.museca.museca1plus import Museca1Plus from bemani.common import Model, VersionConstants from bemani.data import Config, Data class MusecaFactory(Factory): MANAGED_CLASSES: List[Type[Base]] = [ Museca1, Museca1Plus, ] @classmethod def register_all(cls) -> None: for gamecode in ["PIX"]: Base.register(gamecode, MusecaFactory) @classmethod def create( cls, data: Data, config: Config, model: Model, parentmodel: Optional[Model] = None, ) -> Optional[Base]: def version_from_date(date: int) -> Optional[int]: if date <= 2016072600: return VersionConstants.MUSECA if date > 2016072600: return VersionConstants.MUSECA_1_PLUS return None if model.gamecode == "PIX": version = version_from_date(model.version) if version == VersionConstants.MUSECA: return Museca1(data, config, model) if version == VersionConstants.MUSECA_1_PLUS: return Museca1Plus(data, config, model) # Unknown game version return None