131 lines
4.9 KiB
Python
131 lines
4.9 KiB
Python
"""Frozen screenshot taxonomy and canonical record vocabulary for contract v1."""
|
|
|
|
from collections.abc import Mapping
|
|
from enum import StrEnum
|
|
from types import MappingProxyType
|
|
from typing import Final
|
|
|
|
|
|
class Family(StrEnum):
|
|
WEAPON = "weapon"
|
|
GEAR = "gear"
|
|
SKILL_CHIP = "skill_chip"
|
|
OS_PROTOCOL = "os_protocol"
|
|
SPECIALIZATION = "specialization"
|
|
WEAPON_MOD = "weapon_mod"
|
|
GEAR_MOD = "gear_mod"
|
|
UNKNOWN = "unknown"
|
|
|
|
|
|
class GearSlot(StrEnum):
|
|
MASK = "Mask"
|
|
GLOVES = "Gloves"
|
|
BACKPACK = "Backpack"
|
|
BODY_ARMOR = "Body Armor"
|
|
HOLSTER = "Holster"
|
|
KNEE_PADS = "Knee Pads"
|
|
|
|
|
|
class AbstentionReason(StrEnum):
|
|
LOW_CONFIDENCE = "low_confidence"
|
|
AMBIGUOUS_FAMILY = "ambiguous_family"
|
|
AMBIGUOUS_VIEW = "ambiguous_view"
|
|
UNSUPPORTED_FAMILY = "unsupported_family"
|
|
UNSUPPORTED_VIEW = "unsupported_view"
|
|
INSUFFICIENT_VISUAL_EVIDENCE = "insufficient_visual_evidence"
|
|
OCCLUDED = "occluded"
|
|
CORRUPT_IMAGE = "corrupt_image"
|
|
RESOURCE_LIMIT = "resource_limit"
|
|
CANCELLED = "cancelled"
|
|
|
|
|
|
class RecordType(StrEnum):
|
|
WEAPON = "weapon"
|
|
WEAPON_TALENT = "weapon_talent"
|
|
WEAPON_AUGMENTATION_PROFILE = "weapon_augmentation_profile"
|
|
GEAR = "gear"
|
|
BRAND_SET = "brand_set"
|
|
GEAR_TALENT = "gear_talent"
|
|
GEAR_AUGMENTATION_PROFILE = "gear_augmentation_profile"
|
|
SKILL_CHIP_SET = "skill_chip_set"
|
|
SKILL_CHIP_SET_BONUS = "skill_chip_set_bonus"
|
|
SKILL_CHIP_ROLL_POOL = "skill_chip_roll_pool"
|
|
SKILL_CHIP_TALENT = "skill_chip_talent"
|
|
OS_PROTOCOL = "os_protocol"
|
|
OS_PROTOCOL_SECONDARY_PROFILE = "os_protocol_secondary_profile"
|
|
OS_PROTOCOL_TALENT = "os_protocol_talent"
|
|
SPECIALIZATION = "specialization"
|
|
SPECIALIZATION_FOCUS = "specialization_focus"
|
|
SPECIALIZATION_ABILITY = "specialization_ability"
|
|
SPECIALIZATION_TREE_NODE = "specialization_tree_node"
|
|
SPECIALIZATION_TREE_RANK = "specialization_tree_rank"
|
|
WEAPON_MOD = "weapon_mod"
|
|
GEAR_MOD = "gear_mod"
|
|
|
|
|
|
SCREEN_VIEWS: Final[Mapping[Family, tuple[str, ...]]] = MappingProxyType(
|
|
{
|
|
Family.WEAPON: (
|
|
"detail",
|
|
"blueprint",
|
|
"crafting",
|
|
"stat_range",
|
|
"talent_grid",
|
|
"augmentation",
|
|
),
|
|
Family.GEAR: ("detail", "blueprint", "talent", "augmentation"),
|
|
Family.SKILL_CHIP: ("detail", "set_bonus", "talent"),
|
|
Family.OS_PROTOCOL: ("detail", "secondary_profile", "talent"),
|
|
Family.SPECIALIZATION: (
|
|
"overview",
|
|
"details",
|
|
"ability",
|
|
"focus_details",
|
|
"focus_tree",
|
|
"rank_details",
|
|
),
|
|
Family.WEAPON_MOD: ("detail",),
|
|
Family.GEAR_MOD: ("detail",),
|
|
Family.UNKNOWN: ("unknown",),
|
|
}
|
|
)
|
|
|
|
GEAR_SLOTS: Final[tuple[str, ...]] = tuple(slot.value for slot in GearSlot)
|
|
ABSTENTION_REASONS: Final[tuple[str, ...]] = tuple(reason.value for reason in AbstentionReason)
|
|
|
|
RECORD_TYPES_BY_VIEW: Final[Mapping[tuple[Family, str], tuple[RecordType, ...]]] = MappingProxyType(
|
|
{
|
|
(Family.WEAPON, "detail"): (RecordType.WEAPON, RecordType.WEAPON_TALENT),
|
|
(Family.WEAPON, "blueprint"): (RecordType.WEAPON, RecordType.WEAPON_TALENT),
|
|
(Family.WEAPON, "crafting"): (RecordType.WEAPON,),
|
|
(Family.WEAPON, "stat_range"): (RecordType.WEAPON,),
|
|
(Family.WEAPON, "talent_grid"): (RecordType.WEAPON_TALENT,),
|
|
(Family.WEAPON, "augmentation"): (RecordType.WEAPON_AUGMENTATION_PROFILE,),
|
|
(Family.GEAR, "detail"): (RecordType.GEAR, RecordType.BRAND_SET),
|
|
(Family.GEAR, "blueprint"): (RecordType.GEAR, RecordType.BRAND_SET),
|
|
(Family.GEAR, "talent"): (RecordType.GEAR_TALENT,),
|
|
(Family.GEAR, "augmentation"): (RecordType.GEAR_AUGMENTATION_PROFILE,),
|
|
(Family.SKILL_CHIP, "detail"): (
|
|
RecordType.SKILL_CHIP_SET,
|
|
RecordType.SKILL_CHIP_ROLL_POOL,
|
|
),
|
|
(Family.SKILL_CHIP, "set_bonus"): (RecordType.SKILL_CHIP_SET_BONUS,),
|
|
(Family.SKILL_CHIP, "talent"): (RecordType.SKILL_CHIP_TALENT,),
|
|
(Family.OS_PROTOCOL, "detail"): (RecordType.OS_PROTOCOL,),
|
|
(Family.OS_PROTOCOL, "secondary_profile"): (RecordType.OS_PROTOCOL_SECONDARY_PROFILE,),
|
|
(Family.OS_PROTOCOL, "talent"): (RecordType.OS_PROTOCOL_TALENT,),
|
|
(Family.SPECIALIZATION, "overview"): (RecordType.SPECIALIZATION,),
|
|
(Family.SPECIALIZATION, "details"): (RecordType.SPECIALIZATION,),
|
|
(Family.SPECIALIZATION, "ability"): (RecordType.SPECIALIZATION_ABILITY,),
|
|
(Family.SPECIALIZATION, "focus_details"): (RecordType.SPECIALIZATION_FOCUS,),
|
|
(Family.SPECIALIZATION, "focus_tree"): (
|
|
RecordType.SPECIALIZATION_FOCUS,
|
|
RecordType.SPECIALIZATION_TREE_NODE,
|
|
),
|
|
(Family.SPECIALIZATION, "rank_details"): (RecordType.SPECIALIZATION_TREE_RANK,),
|
|
(Family.WEAPON_MOD, "detail"): (RecordType.WEAPON_MOD,),
|
|
(Family.GEAR_MOD, "detail"): (RecordType.GEAR_MOD,),
|
|
(Family.UNKNOWN, "unknown"): (),
|
|
}
|
|
)
|