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_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_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_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[] = {
|
static CV_PossibleValue_t capsuletest_cons_t[] = {
|
||||||
{CV_CAPSULETEST_OFF, "Off"},
|
{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_kartdebugnodes, cv_kartdebugcolorize, cv_kartdebugdirector;
|
||||||
extern consvar_t cv_spbtest, cv_gptest, cv_reducevfx;
|
extern consvar_t cv_spbtest, cv_gptest, cv_reducevfx;
|
||||||
extern consvar_t cv_kartdebugwaypoints, cv_kartdebugbotpredict;
|
extern consvar_t cv_kartdebugwaypoints, cv_kartdebugbotpredict;
|
||||||
|
extern consvar_t cv_debugrank;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
CV_CAPSULETEST_OFF,
|
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)
|
void K_drawKartHUD(void)
|
||||||
{
|
{
|
||||||
boolean islonesome = false;
|
boolean islonesome = false;
|
||||||
|
|
@ -5069,39 +5121,5 @@ void K_drawKartHUD(void)
|
||||||
|
|
||||||
K_DrawWaypointDebugger();
|
K_DrawWaypointDebugger();
|
||||||
K_DrawDirectorDebugger();
|
K_DrawDirectorDebugger();
|
||||||
|
K_DrawGPRankDebugger();
|
||||||
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));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -347,6 +347,7 @@ void K_RegisterKartStuff(void)
|
||||||
CV_RegisterVar(&cv_kartdebugnodes);
|
CV_RegisterVar(&cv_kartdebugnodes);
|
||||||
CV_RegisterVar(&cv_kartdebugcolorize);
|
CV_RegisterVar(&cv_kartdebugcolorize);
|
||||||
CV_RegisterVar(&cv_kartdebugdirector);
|
CV_RegisterVar(&cv_kartdebugdirector);
|
||||||
|
CV_RegisterVar(&cv_debugrank);
|
||||||
CV_RegisterVar(&cv_spbtest);
|
CV_RegisterVar(&cv_spbtest);
|
||||||
CV_RegisterVar(&cv_gptest);
|
CV_RegisterVar(&cv_gptest);
|
||||||
CV_RegisterVar(&cv_capsuletest);
|
CV_RegisterVar(&cv_capsuletest);
|
||||||
|
|
|
||||||
112
src/k_podium.c
112
src/k_podium.c
|
|
@ -45,13 +45,20 @@
|
||||||
|
|
||||||
#include "k_menu.h"
|
#include "k_menu.h"
|
||||||
#include "k_grandprix.h"
|
#include "k_grandprix.h"
|
||||||
|
#include "k_rank.h"
|
||||||
|
|
||||||
static struct podiumData_s
|
static struct podiumData_s
|
||||||
{
|
{
|
||||||
boolean ranking;
|
boolean ranking;
|
||||||
|
gpRank_t rankData;
|
||||||
|
gp_rank_e grade;
|
||||||
|
UINT8 state;
|
||||||
|
UINT8 delay;
|
||||||
UINT8 fade;
|
UINT8 fade;
|
||||||
} podiumData;
|
} podiumData;
|
||||||
|
|
||||||
|
#define PODIUM_STATES (9) // TODO: enum
|
||||||
|
|
||||||
/*--------------------------------------------------
|
/*--------------------------------------------------
|
||||||
boolean K_PodiumSequence(void)
|
boolean K_PodiumSequence(void)
|
||||||
|
|
||||||
|
|
@ -267,6 +274,14 @@ void K_FinishCeremony(void)
|
||||||
void K_ResetCeremony(void)
|
void K_ResetCeremony(void)
|
||||||
{
|
{
|
||||||
memset(&podiumData, 0, sizeof(struct podiumData_s));
|
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++;
|
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;
|
INT32 key = event->data1;
|
||||||
|
|
||||||
if (podiumData.ranking == false || podiumData.fade < 16)
|
if (podiumData.ranking == false || podiumData.state < PODIUM_STATES)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -377,8 +405,88 @@ void K_CeremonyDrawer(void)
|
||||||
{
|
{
|
||||||
if (podiumData.ranking == true)
|
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_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)
|
if (timeinmap < 16)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue