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