From 3eaae066ef891d9f81d5f787e88f89d89b5af4d5 Mon Sep 17 00:00:00 2001
From: SteelT <steeltitanium1@gmail.com>
Date: Tue, 8 Mar 2022 21:06:01 -0500
Subject: [PATCH] Show overall grade emblem requirement of a multi-mare NiGHTS
 stage in SP pause menu

Fixes #71
---
 src/m_menu.c  |  2 +-
 src/p_setup.c | 11 +++++++++++
 src/p_setup.h |  1 +
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/m_menu.c b/src/m_menu.c
index 5b85f65df0..fdff4a0a13 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -4751,7 +4751,7 @@ static void M_DrawPauseMenu(void)
 						emblemslot = 2;
 						break;
 					case ET_NGRADE:
-						snprintf(targettext, 9, "%u", P_GetScoreForGrade(gamemap, 0, emblem->var));
+						snprintf(targettext, 9, "%u", P_GetScoreForGradeOverall(gamemap, emblem->var));
 						snprintf(currenttext, 9, "%u", G_GetBestNightsScore(gamemap, 0));
 
 						targettext[8] = 0;
diff --git a/src/p_setup.c b/src/p_setup.c
index a1c96bed3f..bdcb3b217f 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -508,6 +508,17 @@ UINT32 P_GetScoreForGrade(INT16 map, UINT8 mare, UINT8 grade)
 	return mapheaderinfo[map-1]->grades[mare].grade[grade-1];
 }
 
+UINT32 P_GetScoreForGradeOverall(INT16 map, UINT8 grade)
+{
+	UINT8 mares;
+	INT32 i;
+	UINT32 score = 0;
+	mares = mapheaderinfo[map-1]->numGradedMares;
+	for (i = 0; i < mares; ++i)
+			score += P_GetScoreForGrade(map, i, grade);
+	return score;
+}
+
 //
 // levelflats
 //
diff --git a/src/p_setup.h b/src/p_setup.h
index 9cb44ed597..d0c47a521e 100644
--- a/src/p_setup.h
+++ b/src/p_setup.h
@@ -122,5 +122,6 @@ void P_AddGradesForMare(INT16 i, UINT8 mare, char *gtext);
 UINT8 P_GetGrade(UINT32 pscore, INT16 map, UINT8 mare);
 UINT8 P_HasGrades(INT16 map, UINT8 mare);
 UINT32 P_GetScoreForGrade(INT16 map, UINT8 mare, UINT8 grade);
+UINT32 P_GetScoreForGradeOverall(INT16 map, UINT8 grade);
 
 #endif
-- 
GitLab