from decimal import Decimal

STAFF_POLICY_KEY = "ftg.staff.training.v1"
STAFF_POLICY_VERSION = "1.0.0"

SOURCE_CAREER = "CAREER"
SOURCE_NPC = "NPC"
SOURCE_TYPES = (SOURCE_CAREER, SOURCE_NPC)

HEAD_COACH = "HEAD_COACH"
ASSISTANT_COACH = "ASSISTANT_COACH"
FITNESS_COACH = "FITNESS_COACH"
GOALKEEPER_COACH = "GOALKEEPER_COACH"
ANALYST = "ANALYST"
DOCTOR = "DOCTOR"
STAFF_ROLES = (HEAD_COACH, ASSISTANT_COACH, FITNESS_COACH, GOALKEEPER_COACH, ANALYST, DOCTOR)
SPECIALIST_ROLES = (ASSISTANT_COACH, FITNESS_COACH, GOALKEEPER_COACH, ANALYST, DOCTOR)
STAFF_TIERS = ("AMATEUR", "NORMAL", "PROFESSIONAL", "SUPERSTAR")

ASSIGNMENT_ACTIVE = "ACTIVE"
ASSIGNMENT_ENDED = "ENDED"
ASSIGNMENT_STATUSES = (ASSIGNMENT_ACTIVE, ASSIGNMENT_ENDED)

ASSIGN_EVENT_ASSIGNED = "ASSIGNED"
ASSIGN_EVENT_ENDED = "ENDED"
ASSIGN_EVENT_TYPES = (ASSIGN_EVENT_ASSIGNED, ASSIGN_EVENT_ENDED)

MIN_LEVEL = 1
MAX_LEVEL = 5
MIN_RATING = 1
MAX_RATING = 100
NEUTRAL_MULTIPLIER = Decimal("1.000000")

FITNESS_ATTRIBUTES = frozenset({
    "pace", "acceleration", "agility", "balance", "strength", "stamina",
    "jumping", "natural_fitness", "work_rate",
})
GOALKEEPER_ATTRIBUTES = frozenset({
    "gk_diving", "gk_handling", "gk_reflexes", "gk_positioning",
    "gk_kicking", "gk_one_on_one",
})
