From 3e04f8312a9f18713babd2fa361f692500c6103f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Gremaud?= Date: Fri, 15 May 2026 02:15:00 +0200 Subject: [PATCH] feat(noita): death counter + ranking display --- polylan_submitter/noita/api.py | 9 +- polylan_submitter/noita/schemas.py | 2 + polylan_submitter/src/Noita.vue | 211 +++++++----------- .../src/components/RankBadge.vue | 25 +++ polylan_submitter/src/components/Results.vue | 12 +- 5 files changed, 120 insertions(+), 139 deletions(-) create mode 100644 polylan_submitter/src/components/RankBadge.vue diff --git a/polylan_submitter/noita/api.py b/polylan_submitter/noita/api.py index ccfac8f..a18367f 100644 --- a/polylan_submitter/noita/api.py +++ b/polylan_submitter/noita/api.py @@ -16,7 +16,7 @@ from ninja.files import UploadedFile from noita.schemas import ResultsOut, LeaderboardOut from noita.services.objectives import parse_objectives_and_store -from .models import LogfileSubmission, Objectiv, ObjectivPoint +from .models import LogfileSubmission, Objectiv, ObjectivPoint, DeathCounter from .schemas import NoitaSubmissionOut @@ -103,8 +103,12 @@ def get_results(request: HttpRequest): ) total_score += points + # Count deaths for the user + deaths_count = DeathCounter.objects.filter(user=request.user).count() + data = { "total_score": total_score, + "deaths_count": deaths_count, "objectives": objectives_with_points, } @@ -187,12 +191,14 @@ def get_leaderboard(request: HttpRequest): .distinct() .count() ) + deaths_count = DeathCounter.objects.filter(user_id=user_id).count() users_with_scores.append( { "user_id": user_id, "username": user.username, "total_score": total_score, "objectives_count": objectives_count, + "deaths_count": deaths_count, } ) @@ -204,6 +210,7 @@ def get_leaderboard(request: HttpRequest): "username": entry["username"], "total_score": entry["total_score"], "objectives_count": entry["objectives_count"], + "deaths_count": entry["deaths_count"], } for idx, entry in enumerate(users_with_scores) ] diff --git a/polylan_submitter/noita/schemas.py b/polylan_submitter/noita/schemas.py index 2c363b9..738ab86 100644 --- a/polylan_submitter/noita/schemas.py +++ b/polylan_submitter/noita/schemas.py @@ -23,6 +23,7 @@ class ObjectivResultOut(Schema): class ResultsOut(Schema): total_score: int + deaths_count: int objectives: list[ObjectivResultOut] @@ -31,6 +32,7 @@ class LeaderboardEntryOut(Schema): username: str total_score: int objectives_count: int + deaths_count: int class LeaderboardOut(Schema): diff --git a/polylan_submitter/src/Noita.vue b/polylan_submitter/src/Noita.vue index 6452fa8..a43a8c5 100644 --- a/polylan_submitter/src/Noita.vue +++ b/polylan_submitter/src/Noita.vue @@ -1,6 +1,7 @@ + + diff --git a/polylan_submitter/src/components/Results.vue b/polylan_submitter/src/components/Results.vue index e121d69..e4c3e94 100644 --- a/polylan_submitter/src/components/Results.vue +++ b/polylan_submitter/src/components/Results.vue @@ -1,5 +1,6 @@