mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-12-31 04:02:37 +00:00
R_GetEngineClass
Before unlockable conditions dependent on Engine Class are added, standardise the system.
- enum constant in r_skins.h from A-I + J
- Engine Class J is for SF_IRONMAN
- The Joker in the pack of cards
- Also immediately after I in the alphabet
- It's a Jape that works on multiple levels
- Integrate into K_UpdateEngineSounds
- Ignores Engine Class J
- Show the Engine Class in character select extrainfo mode, even in situations character name would have been the only thing shown
This commit is contained in:
parent
01f6eb71f5
commit
65a4f33b6f
4 changed files with 53 additions and 17 deletions
14
src/k_kart.c
14
src/k_kart.c
|
|
@ -7152,7 +7152,7 @@ static void K_UpdateEngineSounds(player_t *player)
|
|||
|
||||
const UINT16 buttons = K_GetKartButtons(player);
|
||||
|
||||
INT32 class, s, w; // engine class number
|
||||
INT32 class; // engine class number
|
||||
|
||||
UINT8 volume = 255;
|
||||
fixed_t volumedampen = FRACUNIT;
|
||||
|
|
@ -7167,17 +7167,7 @@ static void K_UpdateEngineSounds(player_t *player)
|
|||
return;
|
||||
}
|
||||
|
||||
s = (player->kartspeed - 1) / 3;
|
||||
w = (player->kartweight - 1) / 3;
|
||||
|
||||
#define LOCKSTAT(stat) \
|
||||
if (stat < 0) { stat = 0; } \
|
||||
if (stat > 2) { stat = 2; }
|
||||
LOCKSTAT(s);
|
||||
LOCKSTAT(w);
|
||||
#undef LOCKSTAT
|
||||
|
||||
class = s + (3*w);
|
||||
class = R_GetEngineClass(player->kartspeed, player->kartweight, 0); // there are no unique sounds for ENGINECLASS_J
|
||||
|
||||
#if 0
|
||||
if ((leveltime % 8) != ((player-players) % 8)) // Per-player offset, to make engines sound distinct!
|
||||
|
|
|
|||
|
|
@ -1488,23 +1488,31 @@ static void M_DrawCharSelectPreview(UINT8 num)
|
|||
|
||||
if (p->showextra == true)
|
||||
{
|
||||
INT32 randomskin = 0;
|
||||
switch (p->mdepth)
|
||||
{
|
||||
case CSSTEP_CHARS: // Character Select grid
|
||||
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, va("Speed %u - Weight %u", p->gridx+1, p->gridy+1));
|
||||
break;
|
||||
case CSSTEP_ALTS: // Select clone
|
||||
case CSSTEP_READY:
|
||||
if (p->clonenum < setup_chargrid[p->gridx][p->gridy].numskins
|
||||
&& setup_chargrid[p->gridx][p->gridy].skinlist[p->clonenum] < numskins)
|
||||
{
|
||||
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE,
|
||||
V_DrawThinString(x-3, y+12, V_6WIDTHSPACE,
|
||||
skins[setup_chargrid[p->gridx][p->gridy].skinlist[p->clonenum]].name);
|
||||
randomskin = (skins[setup_chargrid[p->gridx][p->gridy].skinlist[p->clonenum]].flags & SF_IRONMAN);
|
||||
}
|
||||
else
|
||||
{
|
||||
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, va("BAD CLONENUM %u", p->clonenum));
|
||||
V_DrawThinString(x-3, y+12, V_6WIDTHSPACE, va("BAD CLONENUM %u", p->clonenum));
|
||||
}
|
||||
/* FALLTHRU */
|
||||
case CSSTEP_CHARS: // Character Select grid
|
||||
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, va("Class %c (s %c - w %c)",
|
||||
('A' + R_GetEngineClass(p->gridx+1, p->gridy+1, randomskin)),
|
||||
(randomskin
|
||||
? '?' : ('1'+p->gridx)),
|
||||
(randomskin
|
||||
? '?' : ('1'+p->gridy))
|
||||
));
|
||||
break;
|
||||
case CSSTEP_COLORS: // Select color
|
||||
if (p->color < numskincolors)
|
||||
|
|
|
|||
|
|
@ -299,6 +299,25 @@ INT32 R_SkinAvailable(const char *name)
|
|||
return -1;
|
||||
}
|
||||
|
||||
// Returns engine class dependent on skin properties
|
||||
engineclass_t R_GetEngineClass(SINT8 speed, SINT8 weight, skinflags_t flags)
|
||||
{
|
||||
if (flags & SF_IRONMAN)
|
||||
return ENGINECLASS_J;
|
||||
|
||||
speed = (speed - 1) / 3;
|
||||
weight = (weight - 1) / 3;
|
||||
|
||||
#define LOCKSTAT(stat) \
|
||||
if (stat < 0) { stat = 0; } \
|
||||
if (stat > 2) { stat = 2; }
|
||||
LOCKSTAT(speed);
|
||||
LOCKSTAT(weight);
|
||||
#undef LOCKSTAT
|
||||
|
||||
return (speed + (3*weight));
|
||||
}
|
||||
|
||||
// Auxillary function that actually sets the skin
|
||||
static void SetSkin(player_t *player, INT32 skinnum)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -75,6 +75,25 @@ enum facepatches {
|
|||
NUMFACES
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
ENGINECLASS_A,
|
||||
ENGINECLASS_B,
|
||||
ENGINECLASS_C,
|
||||
|
||||
ENGINECLASS_D,
|
||||
ENGINECLASS_E,
|
||||
ENGINECLASS_F,
|
||||
|
||||
ENGINECLASS_G,
|
||||
ENGINECLASS_H,
|
||||
ENGINECLASS_I,
|
||||
|
||||
ENGINECLASS_J
|
||||
|
||||
} engineclass_t;
|
||||
|
||||
engineclass_t R_GetEngineClass(SINT8 speed, SINT8 weight, skinflags_t flags);
|
||||
|
||||
/// Externs
|
||||
extern INT32 numskins;
|
||||
extern skin_t skins[MAXSKINS];
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue