Files
agon/data/score.py
T

60 lines
1.5 KiB
Python

"""File for Score classes"""
import time
class Score:
"""Parent class for Scores. Stores common information for a Score."""
# no user setter, it should never change.
def __init__(self, user: str, value: int) -> None:
self._user: str = user
self._value: int = value
def __str__(self) -> str:
return f"{self.user}: {self.get_str()}"
@property
def user(self) -> str:
"""Getter for user."""
return self._user
@property
def value(self) -> int:
"""Getter for score value."""
return self._value
@value.setter
def value(self, value: int) -> None:
"""Setter for score value."""
self._value = value
def get_str(self) -> str:
"""Gets score's value as a string."""
return str(self._value)
class ScoreTime(Score):
"""Class for a time based score."""
def __init__(self, user: str, score: float) -> None: # pylint: disable=super-init-not-called
# store time score as seconds.
self._user: str = user
self._score: float = score
@property
def value(self) -> float:
"""Getter for score value."""
return self._score
@value.setter
def value(self, value: float) -> None:
"""Setter for score value."""
self._score = value
def get_str(self) -> str:
"""Gets score's value as a string. Returns in time format."""
milliseconds = round((self.value - int(self.value)) * 10)
return time.strftime(f"%-M:%S.{milliseconds}", time.gmtime(self.value))