78 lines
2.8 KiB
Python
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 |