from __future__ import annotations

from dataclasses import dataclass, field


@dataclass
class BMSMapMetaMetadata:
    title: bytes = b""
    artist: bytes = b""
    version: bytes = b""
    samples: dict = field(default_factory=lambda: {})
    misc: dict = field(default_factory=lambda: {})


@dataclass
class BMSMapMetaMisc:
    lnEndChannel: bytes = b'ZZ'


@dataclass
class BMSMapMeta(BMSMapMetaMetadata, BMSMapMetaMisc):
    """ Holds all metadata/header info """
    pass

# class BMSMapMode:
#     """ Determines the map type from #PLAYER X.
#
#     Currently not too sure if this is reliable. If possible, use bms.notes.maxColumn() + 1 to grab keys.
#
#     This is also agreed upon by other engines:
#
#     - LR2, nanasi, ruvit, and pomu2 disregard #PLAYER and guess actual play mode by the parsed channels.
#     """
#
#     SINGLE = 1
#     COUPLE = 2
#     DOUBLE = 3
#     BATTLE = 4
