Source code for bacommon.bs._account
# Released under the MIT License. See LICENSE for details.
#
"""BombSquad specific bits."""
from __future__ import annotations
import datetime
from enum import Enum
from dataclasses import dataclass
from typing import Annotated
from efro.dataclassio import ioprepped, IOAttrs
from bacommon.bs._chest import ClassicChestAppearance
[docs]
@ioprepped
@dataclass
class ClassicAccountLiveData:
"""Live account data fed to the client in the bs classic app mode."""
[docs]
@dataclass
class Chest:
"""A lovely chest."""
appearance: ClassicChestAppearance
create_time: datetime.datetime
unlock_time: datetime.datetime
unlock_tokens: int
ad_allow_time: datetime.datetime | None
[docs]
class LeagueType(Enum):
"""Type of league we are in."""
BRONZE = 'b'
SILVER = 's'
GOLD = 'g'
DIAMOND = 'd'
[docs]
class Flag(Enum):
"""Flags set for our account."""
ASK_FOR_REVIEW = 'r'
tickets: int
tokens: int
gold_pass: bool
remove_ads: bool
achievements: int
achievements_total: int
league_type: LeagueType | None
league_num: int | None
league_rank: int | None
level: int
xp: int
xpmax: int
inbox_count: int
inbox_count_is_max: bool
inbox_contains_prize: bool
chests: dict[str, Chest]
# State id of our purchases for builds 22459+.
purchases_state: str | None
flags: set[Flag]
# Docs-generation hack; import some stuff that we likely only forward-declared
# in our actual source code so that docs tools can find it.
from typing import (Coroutine, Any, Literal, Callable,
Generator, Awaitable, Sequence, Self)
import asyncio
from concurrent.futures import Future
from pathlib import Path
from enum import Enum