diff --git a/data/guild.py b/data/guild.py index 7fe0522..f1406d5 100644 --- a/data/guild.py +++ b/data/guild.py @@ -18,7 +18,6 @@ class Guild: """ self._guild_id: int = guild_id self._highscore_channel_id: int = 0 - self._highscore_size: int = 3 self._submission_channel_id: int = 0 self._table_map: dict = {} self._username_length: int = 12 @@ -47,7 +46,6 @@ class Guild: """ guild = cls(guild_id) guild.highscore_channel = data["highscore_channel_id"] - guild.highscore_size = data["highscore_size"] guild.submission_channel = data["submission_channel_id"] guild.username_length = data["username_length"] guild.verification_channel = data["verification_channel_id"] @@ -88,29 +86,6 @@ class Guild: """ self._highscore_channel_id = channel - @property - def highscore_size(self) -> int: - """ - Getter for highscore size. How many ranks to print in each highscore message. - - Returns: - int: highscore size - """ - return self._highscore_size - - @highscore_size.setter - def highscore_size(self, size: int) -> None: - """ - Setter for highscore size. - - Args: - size (int): highscore size - - Returns: - _type_: _description_ - """ - self._highscore_size = size - @property def submission_channel(self) -> int: """ @@ -216,7 +191,6 @@ class Guild: data: dict = {} data["highscore_channel_id"] = self.highscore_channel - data["highscore_size"] = self.highscore_size data["submission_channel_id"] = self.submission_channel data["tables"] = {} data["username_length"] = self.username_length diff --git a/data/table.py b/data/table.py index 7a7e2c6..f014028 100644 --- a/data/table.py +++ b/data/table.py @@ -8,18 +8,18 @@ from data.category import Category # pylint: disable=import-error class Table: """Stores a table's information a list of categories.""" - def __init__(self, name: str, message_id: int, category_map: dict) -> None: + def __init__(self, name: str) -> None: """ Default constructor for Table class. + Creates object and fills out class variables with defaults. Args: name (str): Table's name - message_id (int): message id of message table is displayed on in discord - category_map (dict): map of Categories """ self._name: str = name - self._message_id: int = message_id - self._categories_map: dict = category_map + self._message_id: int = 0 + self._categories_map: dict = {} + self._size = 3 def __str__(self) -> str: """ @@ -42,13 +42,16 @@ class Table: Returns: Table: Populated Table object """ - message_id = data["message_id"] - category_map = {} + table = cls(table_name) + + table.message_id = data["message_id"] + table.size = data["table_size"] + for cat_name, cat in data["categories"].items(): category = Category.from_dict(cat_name, cat) - category_map[cat_name] = category + table.add_category(category) - return cls(table_name, message_id, category_map) + return table @property def categories(self) -> "list[Category]": @@ -90,6 +93,26 @@ class Table: """ return self._name + @property + def size(self) -> int: + """ + Getter for size of table. + + Returns: + int: Size of table + """ + return self._size + + @size.setter + def size(self, size: int) -> None: + """ + Setter for size of table. + + Args: + size (int): New size of table + """ + self._size = size + def add_category(self, category: Category) -> None: """ Adds a Category to categories map. Shouldn't exist already. @@ -124,6 +147,7 @@ class Table: """ data = {} data["message_id"] = self.message_id + data["table_size"] = self.size data["categories"] = {} for category in self.categories: data["categories"][category.name] = category.to_dict() diff --git a/example_config/runescape.json b/example_config/runescape.json index 02d6e5f..8e90e2e 100755 --- a/example_config/runescape.json +++ b/example_config/runescape.json @@ -330,5 +330,6 @@ "ascending": true, "is_time_record": false } - } -} + }, + "table_size": 3 +} \ No newline at end of file diff --git a/utilities/utils.py b/utilities/utils.py index 6852f8f..aea81ef 100644 --- a/utilities/utils.py +++ b/utilities/utils.py @@ -30,10 +30,8 @@ def format_highscore_message(guild: Guild, table: Table) -> str: ret_string += f"{category.name}".ljust(26, " ") ret_string += "\n" - highscore_size = guild.highscore_size - # list rankings in a single line. Start with first place for each category and then continue - for i in range(highscore_size): + for i in range(table.size): for category in table.categories: if len(category.scores) > i: # pad username to max length.