mirror of
				https://github.com/KartKrewDev/RingRacers.git
				synced 2025-10-30 08:01:28 +00:00 
			
		
		
		
	Show ranking data on the screen
This commit is contained in:
		
							parent
							
								
									6a4b4d8b70
								
							
						
					
					
						commit
						3d1070c2f2
					
				
					 5 changed files with 166 additions and 37 deletions
				
			
		| 
						 | 
				
			
			@ -453,6 +453,7 @@ consvar_t cv_kartdebugcolorize = CVAR_INIT ("debugcolorize", "Off", CV_CHEAT, CV
 | 
			
		|||
consvar_t cv_kartdebugdirector = CVAR_INIT ("debugdirector", "Off", CV_CHEAT, CV_OnOff, NULL);
 | 
			
		||||
consvar_t cv_spbtest = CVAR_INIT ("spbtest", "Off", CV_CHEAT|CV_NETVAR, CV_OnOff, NULL);
 | 
			
		||||
consvar_t cv_gptest = CVAR_INIT ("gptest", "Off", CV_CHEAT|CV_NETVAR, CV_OnOff, NULL);
 | 
			
		||||
consvar_t cv_debugrank = CVAR_INIT ("debugrank", "Off", CV_CHEAT, CV_OnOff, NULL);
 | 
			
		||||
 | 
			
		||||
static CV_PossibleValue_t capsuletest_cons_t[] = {
 | 
			
		||||
	{CV_CAPSULETEST_OFF, "Off"},
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -96,6 +96,7 @@ extern consvar_t cv_kartdebugitem, cv_kartdebugamount, cv_kartdebugdistribution,
 | 
			
		|||
extern consvar_t cv_kartdebugnodes, cv_kartdebugcolorize, cv_kartdebugdirector;
 | 
			
		||||
extern consvar_t cv_spbtest, cv_gptest, cv_reducevfx;
 | 
			
		||||
extern consvar_t cv_kartdebugwaypoints, cv_kartdebugbotpredict;
 | 
			
		||||
extern consvar_t cv_debugrank;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
	CV_CAPSULETEST_OFF,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										88
									
								
								src/k_hud.c
									
										
									
									
									
								
							
							
						
						
									
										88
									
								
								src/k_hud.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -4798,6 +4798,58 @@ static void K_DrawWaypointDebugger(void)
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void K_DrawGPRankDebugger(void)
 | 
			
		||||
{
 | 
			
		||||
	gp_rank_e grade = GRADE_E;
 | 
			
		||||
	char gradeChar = '?';
 | 
			
		||||
 | 
			
		||||
	if (cv_debugrank.value == 0)
 | 
			
		||||
	{
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (stplyr != &players[displayplayers[0]]) // only for p1
 | 
			
		||||
	{
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (grandprixinfo.gp == false)
 | 
			
		||||
	{
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	grade = K_CalculateGPGrade(&g_gpRank);
 | 
			
		||||
 | 
			
		||||
	V_DrawThinString(0, 0, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
 | 
			
		||||
		va("PTS: %d / %d", g_gpRank.winPoints, g_gpRank.totalPoints));
 | 
			
		||||
	V_DrawThinString(0, 10, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
 | 
			
		||||
		va("LAPS: %d / %d", g_gpRank.laps, g_gpRank.totalLaps));
 | 
			
		||||
	V_DrawThinString(0, 20, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
 | 
			
		||||
		va("CONTINUES: %d", g_gpRank.continuesUsed));
 | 
			
		||||
	V_DrawThinString(0, 30, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
 | 
			
		||||
		va("CAPSULES: %d / %d", g_gpRank.capsules, g_gpRank.totalCapsules));
 | 
			
		||||
	V_DrawThinString(0, 40, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
 | 
			
		||||
		va("RINGS: %d / %d", g_gpRank.rings, g_gpRank.totalRings));
 | 
			
		||||
	V_DrawThinString(0, 50, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
 | 
			
		||||
		va("DIFFICULTY: %d / %d", g_gpRank.difficulty, g_gpRank.difficultyTarget));
 | 
			
		||||
	V_DrawThinString(0, 60, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
 | 
			
		||||
		va("SPECIAL: %s", (g_gpRank.specialWon == true) ? "YES" : "NO"));
 | 
			
		||||
 | 
			
		||||
	switch (grade)
 | 
			
		||||
	{
 | 
			
		||||
		case GRADE_E: { gradeChar = 'E'; break; }
 | 
			
		||||
		case GRADE_D: { gradeChar = 'D'; break; }
 | 
			
		||||
		case GRADE_C: { gradeChar = 'C'; break; }
 | 
			
		||||
		case GRADE_B: { gradeChar = 'B'; break; }
 | 
			
		||||
		case GRADE_A: { gradeChar = 'A'; break; }
 | 
			
		||||
		case GRADE_S: { gradeChar = 'S'; break; }
 | 
			
		||||
		default: { break; }
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	V_DrawThinString(0, 80, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE|V_YELLOWMAP,
 | 
			
		||||
		va(" ** FINAL GRADE: %c", gradeChar));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void K_drawKartHUD(void)
 | 
			
		||||
{
 | 
			
		||||
	boolean islonesome = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -5069,39 +5121,5 @@ void K_drawKartHUD(void)
 | 
			
		|||
 | 
			
		||||
	K_DrawWaypointDebugger();
 | 
			
		||||
	K_DrawDirectorDebugger();
 | 
			
		||||
 | 
			
		||||
	if (grandprixinfo.gp == true)
 | 
			
		||||
	{
 | 
			
		||||
		gp_rank_e grade = K_CalculateGPGrade(&g_gpRank);
 | 
			
		||||
		char gradeChar = '?';
 | 
			
		||||
 | 
			
		||||
		V_DrawThinString(0, 0, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
 | 
			
		||||
			va("PTS: %d / %d", g_gpRank.winPoints, g_gpRank.totalPoints));
 | 
			
		||||
		V_DrawThinString(0, 10, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
 | 
			
		||||
			va("LAPS: %d / %d", g_gpRank.laps, g_gpRank.totalLaps));
 | 
			
		||||
		V_DrawThinString(0, 20, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
 | 
			
		||||
			va("CONTINUES: %d", g_gpRank.continuesUsed));
 | 
			
		||||
		V_DrawThinString(0, 30, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
 | 
			
		||||
			va("CAPSULES: %d / %d", g_gpRank.capsules, g_gpRank.totalCapsules));
 | 
			
		||||
		V_DrawThinString(0, 40, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
 | 
			
		||||
			va("RINGS: %d / %d", g_gpRank.rings, g_gpRank.totalRings));
 | 
			
		||||
		V_DrawThinString(0, 50, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
 | 
			
		||||
			va("DIFFICULTY: %d / %d", g_gpRank.difficulty, g_gpRank.difficultyTarget));
 | 
			
		||||
		V_DrawThinString(0, 60, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
 | 
			
		||||
			va("SPECIAL: %s", (g_gpRank.specialWon == true) ? "YES" : "NO"));
 | 
			
		||||
 | 
			
		||||
		switch (grade)
 | 
			
		||||
		{
 | 
			
		||||
			case GRADE_E: { gradeChar = 'E'; break; }
 | 
			
		||||
			case GRADE_D: { gradeChar = 'D'; break; }
 | 
			
		||||
			case GRADE_C: { gradeChar = 'C'; break; }
 | 
			
		||||
			case GRADE_B: { gradeChar = 'B'; break; }
 | 
			
		||||
			case GRADE_A: { gradeChar = 'A'; break; }
 | 
			
		||||
			case GRADE_S: { gradeChar = 'S'; break; }
 | 
			
		||||
			default: { break; }
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		V_DrawThinString(0, 80, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE|V_YELLOWMAP,
 | 
			
		||||
			va(" ** FINAL GRADE: %c", gradeChar));
 | 
			
		||||
	}
 | 
			
		||||
	K_DrawGPRankDebugger();
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -347,6 +347,7 @@ void K_RegisterKartStuff(void)
 | 
			
		|||
	CV_RegisterVar(&cv_kartdebugnodes);
 | 
			
		||||
	CV_RegisterVar(&cv_kartdebugcolorize);
 | 
			
		||||
	CV_RegisterVar(&cv_kartdebugdirector);
 | 
			
		||||
	CV_RegisterVar(&cv_debugrank);
 | 
			
		||||
	CV_RegisterVar(&cv_spbtest);
 | 
			
		||||
	CV_RegisterVar(&cv_gptest);
 | 
			
		||||
	CV_RegisterVar(&cv_capsuletest);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										112
									
								
								src/k_podium.c
									
										
									
									
									
								
							
							
						
						
									
										112
									
								
								src/k_podium.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -45,13 +45,20 @@
 | 
			
		|||
 | 
			
		||||
#include "k_menu.h"
 | 
			
		||||
#include "k_grandprix.h"
 | 
			
		||||
#include "k_rank.h"
 | 
			
		||||
 | 
			
		||||
static struct podiumData_s
 | 
			
		||||
{
 | 
			
		||||
	boolean ranking;
 | 
			
		||||
	gpRank_t rankData;
 | 
			
		||||
	gp_rank_e grade;
 | 
			
		||||
	UINT8 state;
 | 
			
		||||
	UINT8 delay;
 | 
			
		||||
	UINT8 fade;
 | 
			
		||||
} podiumData;
 | 
			
		||||
 | 
			
		||||
#define PODIUM_STATES (9) // TODO: enum
 | 
			
		||||
 | 
			
		||||
/*--------------------------------------------------
 | 
			
		||||
	boolean K_PodiumSequence(void)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -267,6 +274,14 @@ void K_FinishCeremony(void)
 | 
			
		|||
void K_ResetCeremony(void)
 | 
			
		||||
{
 | 
			
		||||
	memset(&podiumData, 0, sizeof(struct podiumData_s));
 | 
			
		||||
 | 
			
		||||
	if (K_PodiumSequence() == false)
 | 
			
		||||
	{
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	podiumData.rankData = g_gpRank;
 | 
			
		||||
	podiumData.grade = K_CalculateGPGrade(&podiumData.rankData);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*--------------------------------------------------
 | 
			
		||||
| 
						 | 
				
			
			@ -305,6 +320,19 @@ void K_CeremonyTicker(boolean run)
 | 
			
		|||
		{
 | 
			
		||||
			podiumData.fade++;
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			if (podiumData.state < PODIUM_STATES)
 | 
			
		||||
			{
 | 
			
		||||
				podiumData.delay++;
 | 
			
		||||
 | 
			
		||||
				if (podiumData.delay > TICRATE)
 | 
			
		||||
				{
 | 
			
		||||
					podiumData.state++;
 | 
			
		||||
					podiumData.delay = 0;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -317,7 +345,7 @@ boolean K_CeremonyResponder(event_t *event)
 | 
			
		|||
{
 | 
			
		||||
	INT32 key = event->data1;
 | 
			
		||||
 | 
			
		||||
	if (podiumData.ranking == false || podiumData.fade < 16)
 | 
			
		||||
	if (podiumData.ranking == false || podiumData.state < PODIUM_STATES)
 | 
			
		||||
	{
 | 
			
		||||
		return false;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -377,8 +405,88 @@ void K_CeremonyDrawer(void)
 | 
			
		|||
{
 | 
			
		||||
	if (podiumData.ranking == true)
 | 
			
		||||
	{
 | 
			
		||||
		char gradeChar = '?';
 | 
			
		||||
		INT32 x = 64;
 | 
			
		||||
		INT32 y = 48;
 | 
			
		||||
		INT32 i;
 | 
			
		||||
 | 
			
		||||
		switch (podiumData.grade)
 | 
			
		||||
		{
 | 
			
		||||
			case GRADE_E: { gradeChar = 'E'; break; }
 | 
			
		||||
			case GRADE_D: { gradeChar = 'D'; break; }
 | 
			
		||||
			case GRADE_C: { gradeChar = 'C'; break; }
 | 
			
		||||
			case GRADE_B: { gradeChar = 'B'; break; }
 | 
			
		||||
			case GRADE_A: { gradeChar = 'A'; break; }
 | 
			
		||||
			case GRADE_S: { gradeChar = 'S'; break; }
 | 
			
		||||
			default: { break; }
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		V_DrawFadeScreen(0xFF00, podiumData.fade);
 | 
			
		||||
		V_DrawCenteredString(BASEVIDWIDTH / 2, 64, 0, "STUFF GOES HERE");
 | 
			
		||||
 | 
			
		||||
		for (i = 0; i <= podiumData.state; i++)
 | 
			
		||||
		{
 | 
			
		||||
			switch (i)
 | 
			
		||||
			{
 | 
			
		||||
				case 1:
 | 
			
		||||
				{
 | 
			
		||||
					V_DrawString(x, y, V_SNAPTOTOP|V_SNAPTOLEFT|V_ALLOWLOWERCASE,
 | 
			
		||||
						va("PTS: %d / %d", g_gpRank.winPoints, g_gpRank.totalPoints)
 | 
			
		||||
					);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case 2:
 | 
			
		||||
				{
 | 
			
		||||
					V_DrawString(x, y, V_SNAPTOTOP|V_SNAPTOLEFT|V_ALLOWLOWERCASE,
 | 
			
		||||
						va("LAPS: %d / %d", g_gpRank.laps, g_gpRank.totalLaps)
 | 
			
		||||
					);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case 3:
 | 
			
		||||
				{
 | 
			
		||||
					V_DrawString(x, y, V_SNAPTOTOP|V_SNAPTOLEFT|V_ALLOWLOWERCASE,
 | 
			
		||||
						va("CONTINUES: %d", g_gpRank.continuesUsed)
 | 
			
		||||
					);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case 4:
 | 
			
		||||
				{
 | 
			
		||||
					V_DrawString(x, y, V_SNAPTOTOP|V_SNAPTOLEFT|V_ALLOWLOWERCASE,
 | 
			
		||||
						va("CAPSULES: %d / %d", g_gpRank.capsules, g_gpRank.totalCapsules)
 | 
			
		||||
					);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case 5:
 | 
			
		||||
				{
 | 
			
		||||
					V_DrawString(x, y, V_SNAPTOTOP|V_SNAPTOLEFT|V_ALLOWLOWERCASE,
 | 
			
		||||
						va("RINGS: %d / %d", g_gpRank.rings, g_gpRank.totalRings)
 | 
			
		||||
					);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case 6:
 | 
			
		||||
				{
 | 
			
		||||
					V_DrawString(x, y, V_SNAPTOTOP|V_SNAPTOLEFT|V_ALLOWLOWERCASE,
 | 
			
		||||
						va("DIFFICULTY: %d / %d", g_gpRank.difficulty, g_gpRank.difficultyTarget)
 | 
			
		||||
					);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case 7:
 | 
			
		||||
				{
 | 
			
		||||
					V_DrawString(x, y, V_SNAPTOTOP|V_SNAPTOLEFT|V_ALLOWLOWERCASE,
 | 
			
		||||
						va("SPECIAL: %s", (g_gpRank.specialWon == true) ? "YES" : "NO")
 | 
			
		||||
					);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case 8:
 | 
			
		||||
				{
 | 
			
		||||
					V_DrawString(x, y + 10, V_SNAPTOTOP|V_SNAPTOLEFT|V_ALLOWLOWERCASE,
 | 
			
		||||
						va(" ** FINAL GRADE: %c", gradeChar)
 | 
			
		||||
					);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			y += 10;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (timeinmap < 16)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue