diff --git a/utils/data_storage.py b/utils/data_storage.py index 457839e..bfb3e54 100644 --- a/utils/data_storage.py +++ b/utils/data_storage.py @@ -23,12 +23,14 @@ def open_highscores_data(): config = open_highscores_config() for boss in config["bosses"]: data[boss["boss"]] = {"message_id": 0} - for category in config["categories"]: + boss_categories = {} + for key, value in config["categories"].items(): rank_list = [] - data[boss["boss"]][category["category"]] = rank_list - if boss["hardmode"] and category["hardmode"]: + boss_categories[key] = rank_list + if boss["hardmode"] and value["hardmode"]: rank_list = [] - data[boss["boss"]][category["category"] + "_hardmode"] = rank_list + boss_categories["Hardmode " + key] = rank_list + data[boss["boss"]]["categories"] = boss_categories return data diff --git a/utils/highscore_message.py b/utils/highscore_message.py index eb42dd8..75b1e59 100644 --- a/utils/highscore_message.py +++ b/utils/highscore_message.py @@ -18,48 +18,22 @@ def format_highscore_message(boss): boss_data = highscores_data[boss_name] # Gather all categories and add to string - for category in highscores_config["categories"]: - category_name = category["category"] - ret_string += f"{category_name}".ljust(30, " ") + for key, value in boss_data["categories"].items(): + ret_string += f"{key}".ljust(30, " ") ret_string += "\n" highscore_size = highscores_config["highscore_size"] - # list rankings + # list rankings in a single line. Start with first place for each category and then continue for i in range(highscore_size): - for category in highscores_config["categories"]: - boss_category_scores = boss_data[category["category"]] - if len(boss_category_scores) > i: - score = boss_category_scores[i] - # this is the dumbest solution to a problem iv seen in a while... - # I just needed the key and this is the best way to get it without - # getting a list of 1 key and parsing that string. - for key, value in score.items(): - ret_string += f"{i+1}: {key} - {value}".ljust(30, " ") + for key, value in boss_data["categories"].items(): + if len(value) > i: + score = value[i] + ret_string += f"{i+1}: {key} - {score}".ljust(30, " ") else: ret_string += f"{i+1}: submit your score".ljust(30, " ") ret_string += "\n" - # if boss is hardmode, repeat above for hardmode applicable categories - if boss["hardmode"]: - for category in highscores_config["categories"]: - if category["hardmode"]: - category_name = category["category"] - ret_string += f"Hardmode {category_name}".ljust(30, " ") - - ret_string += "\n" - - for i in range(highscore_size): - for category in highscores_config["categories"]: - if category["hardmode"]: - hardmode_category = category["category"] - boss_category_scores = boss_data[f"{hardmode_category}_hardmode"] - if len(boss_category_scores) > i: - score = boss_category_scores[i] - ret_string += f"{i+1}: {score[0]} - {score[1]}".ljust(30, " ") - else: - ret_string += f"{i+1}: submit your score".ljust(30, " ") - ret_string += "\n" return ret_string