Files
HomeAssistance/custom_components/teamtracker/set_racing.py
T
2026-06-05 22:34:31 -04:00

78 lines
2.8 KiB
Python

""" Racing specific functionality"""
import logging
from .models import TeamTrackerValues
from .utils import get_value
_LOGGER = logging.getLogger(__name__)
race_laps: dict[str, int] = {}
class SetRacingMixin:
_sensor_name: str
_values: TeamTrackerValues
def _set_racing_values(
self,
event, competition_index, team_index
) -> bool:
"""Set racing specific values"""
# _LOGGER.debug("%s: async_set_racing_values() 0: %s", self._sensor_name, new_values)
oppo_index = 1 if team_index == 0 else 0
competition = get_value(event, "competitions", competition_index)
competitor = get_value(competition, "competitors", team_index)
opponent = get_value(competition, "competitors", oppo_index)
if competition is None or competitor is None or opponent is None:
_LOGGER.debug("%s: async_set_racing_values() 0: %s", self._sensor_name, self._sensor_name)
return False
city = get_value(event, "circuit", "address", "city")
country = get_value(event, "circuit", "address", "country")
# _LOGGER.debug("%s: async_set_racing_values() 1: %s", self._sensor_name, new_values)
if city is not None:
self._values.location = f"{city}, {country}"
else:
self._values.location = country
self._values.team_score = str(team_index + 1)
self._values.opponent_score = str(oppo_index + 1)
# _LOGGER.debug("%s: async_set_racing_values() 2: %s", self._sensor_name, new_values)
if self._values.state == "PRE":
self._values.team_rank = str(team_index + 1)
self._values.opponent_rank = str(oppo_index + 1)
# _LOGGER.debug("%s: async_set_racing_values() 3: %s", self._sensor_name, new_values)
# Use team_total_shots to track laps; logic remains consistent with original global usage
self._values.team_total_shots = get_value(
competition, "status", "period",
default=self._values.team_total_shots,
)
self._values.quarter = get_value(competition, "type", "abbreviation")
# _LOGGER.debug("%s: async_set_racing_values() 4: %s", self._sensor_name, new_values)
last_play = ""
for x in range(0, 10):
last_play += str(
get_value(competition, "competitors", x, "order", default=x)
) + ". "
last_play += str(
get_value(
competition,
"competitors",
x,
"athlete",
"shortName",
default="{shortName}",
)
) + ", "
self._values.last_play = last_play[:-1]
return True