Miguelius Flamometer (and colorization of such)
This commit is contained in:
parent
da7f35cb2a
commit
c1d1a4be4b
4 changed files with 60 additions and 13 deletions
|
|
@ -93,7 +93,7 @@
|
|||
#define ASSET_HASH_TEXTURES_KART 0xb4211b2f32b6a291
|
||||
#define ASSET_HASH_CHARS_KART 0x1e68a3e01aa5c68b
|
||||
#define ASSET_HASH_MAPS_KART 0x38558ed00da41ce9
|
||||
#define ASSET_HASH_MAIN_PK3 0x329e1e108ba0e570
|
||||
#define ASSET_HASH_MAIN_PK3 0x7c7002e1ab604171
|
||||
#define ASSET_HASH_MAPPATCH_PK3 0x7d1f6b96dd119296
|
||||
#define ASSET_HASH_BONUSCHARS_KART 0x60e6f13d822a7461
|
||||
#ifdef USE_PATCH_FILE
|
||||
|
|
|
|||
|
|
@ -701,9 +701,10 @@ struct player_t
|
|||
UINT8 bubblehealth; // Bubble Shield health
|
||||
UINT16 bubbleboost; // Bubble shield boost timer
|
||||
|
||||
UINT16 flamedash; // Flame Shield dash power
|
||||
INT32 flametimer; // Flame Shield dash meter left
|
||||
UINT8 flamestore; // Flame Shield reserve boost
|
||||
UINT16 flamedash; // Flame Shield dash power
|
||||
INT32 flametimer; // Flame Shield dash meter left
|
||||
UINT8 flamestore; // Flame Shield reserve boost
|
||||
tic_t flameoverheat; // Time the Flame Shield spends overheating
|
||||
|
||||
UINT16 hyudorotimer; // Duration of the Hyudoro offroad effect itself
|
||||
SINT8 stealingtimer; // you are stealing
|
||||
|
|
|
|||
52
src/k_hud.c
52
src/k_hud.c
|
|
@ -155,8 +155,11 @@ static patch_t *kp_kartzspeedo_smol[25];
|
|||
static patch_t *kp_driftgauge[14];
|
||||
static patch_t *kp_driftgaugeparts[5];
|
||||
|
||||
static patch_t *kp_flamometer[4];
|
||||
static patch_t *kp_flamefire[4];
|
||||
static patch_t *kp_flamometer[6];
|
||||
static patch_t *kp_flamefire[18];
|
||||
|
||||
// Frames of animation for the fire
|
||||
#define MAXFLAMOFIRETICS 8
|
||||
|
||||
static patch_t *kp_rankbumper;
|
||||
static patch_t *kp_tinybumper[2];
|
||||
|
|
@ -440,14 +443,30 @@ void K_LoadKartHUDGraphics(void)
|
|||
HU_UpdatePatch(&kp_flamometer[1], "THERMOFUEL");
|
||||
HU_UpdatePatch(&kp_flamometer[2], "THERMOTEMP");
|
||||
HU_UpdatePatch(&kp_flamometer[3], "THERMOMETRE");
|
||||
HU_UpdatePatch(&kp_flamometer[4], "THERMCBACK");
|
||||
HU_UpdatePatch(&kp_flamometer[5], "THERMCMETRE");
|
||||
|
||||
//Flamometer Fire
|
||||
{
|
||||
const char* patchNames[] = {
|
||||
"THFIREX",
|
||||
"THFIRE1",
|
||||
"THFIRE2",
|
||||
"THFIRE3",
|
||||
"THFIRE4"
|
||||
"THFIRE4",
|
||||
"THFIRE5",
|
||||
"THFIRE6",
|
||||
"THFIRE7",
|
||||
"THFIRE8",
|
||||
"THFIRCX",
|
||||
"THFIRC1",
|
||||
"THFIRC2",
|
||||
"THFIRC3",
|
||||
"THFIRC4",
|
||||
"THFIRC5",
|
||||
"THFIRC6",
|
||||
"THFIRC7",
|
||||
"THFIRC8"
|
||||
};
|
||||
|
||||
for (size_t m = 0; m < sizeof(patchNames) / sizeof(patchNames[0]); ++m)
|
||||
|
|
@ -6447,7 +6466,8 @@ void K_DrawFlamometer(void)
|
|||
INT32 basex, basey, barextraflags = 0;
|
||||
INT32 flags = V_SPLITSCREEN|V_HUDTRANS;
|
||||
INT32 fuelbarheight = 41;
|
||||
INT32 tempbarheight = 48;
|
||||
INT32 tempbarheight = 49;
|
||||
UINT8 *colormap = NULL;
|
||||
|
||||
K_ObjectTracking(&res, &pos, false);
|
||||
basex = res.x + (16<<FRACBITS);
|
||||
|
|
@ -6456,7 +6476,21 @@ void K_DrawFlamometer(void)
|
|||
// fire animation
|
||||
if (stplyr->flamestore >= FLAMESTOREMAX-1)
|
||||
{
|
||||
V_DrawFixedPatch(basex, basey, FRACUNIT, flags|V_ADD, kp_flamefire[CLAMP((leveltime / 3) % 4, 0, 4)], NULL);
|
||||
UINT8 flamofiretic = CLAMP((leveltime / 3) % MAXFLAMOFIRETICS, 0, MAXFLAMOFIRETICS) + 1;
|
||||
|
||||
if (stplyr->flameoverheat < 3)
|
||||
{
|
||||
// Fancy "explode" VFX
|
||||
flamofiretic = 0;
|
||||
}
|
||||
|
||||
if (K_UseColorHud())
|
||||
{
|
||||
flamofiretic += 9;
|
||||
colormap = R_GetTranslationColormap(TC_DEFAULT, K_GetHudColor(), GTC_CACHE);
|
||||
}
|
||||
|
||||
V_DrawFixedPatch(basex, basey, FRACUNIT, flags|V_ADD, kp_flamefire[flamofiretic], colormap);
|
||||
|
||||
if (leveltime % 3 != 0)
|
||||
{
|
||||
|
|
@ -6465,23 +6499,23 @@ void K_DrawFlamometer(void)
|
|||
}
|
||||
|
||||
// back
|
||||
V_DrawFixedPatch(basex, basey, FRACUNIT, flags, kp_flamometer[0], NULL);
|
||||
V_DrawFixedPatch(basex, basey, FRACUNIT, flags, kp_flamometer[K_UseColorHud() ? 4 : 0], colormap);
|
||||
|
||||
// bars
|
||||
// fuel
|
||||
fuelbarheight *= FixedDiv(stplyr->flametimer, itemtime*3);
|
||||
V_SetClipRect(basex + 2*FRACUNIT, basey + 49*FRACUNIT - fuelbarheight, 2*FRACUNIT, fuelbarheight, flags);
|
||||
V_SetClipRect(basex + 7*FRACUNIT, basey + 58*FRACUNIT - fuelbarheight, 4*FRACUNIT, fuelbarheight, flags);
|
||||
V_DrawFixedPatch(basex, basey, FRACUNIT, flags, kp_flamometer[1], NULL);
|
||||
|
||||
V_ClearClipRect();
|
||||
|
||||
// temperature
|
||||
tempbarheight *= FixedDiv(stplyr->flamestore, FLAMESTOREMAX);
|
||||
V_SetClipRect(basex + 5*FRACUNIT, basey + 53*FRACUNIT - tempbarheight, 5*FRACUNIT, tempbarheight, flags);
|
||||
V_SetClipRect(basex + 10*FRACUNIT, basey + 62*FRACUNIT - tempbarheight, 32*FRACUNIT, tempbarheight, flags);
|
||||
V_DrawFixedPatch(basex, basey, FRACUNIT, flags|barextraflags, kp_flamometer[2], NULL);
|
||||
|
||||
V_ClearClipRect();
|
||||
|
||||
// front
|
||||
V_DrawFixedPatch(basex, basey, FRACUNIT, flags, kp_flamometer[3], NULL);
|
||||
V_DrawFixedPatch(basex, basey, FRACUNIT, flags, kp_flamometer[K_UseColorHud() ? 5 : 3], colormap);
|
||||
}
|
||||
|
|
|
|||
12
src/k_kart.c
12
src/k_kart.c
|
|
@ -7386,6 +7386,16 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
|||
|
||||
if (player->flametimer > 0)
|
||||
{
|
||||
if (player->flamestore >= FLAMESTOREMAX-1)
|
||||
{
|
||||
// Overheating; mainly used for the Flamometer
|
||||
player->flameoverheat++;
|
||||
}
|
||||
else
|
||||
{
|
||||
player->flameoverheat = 0;
|
||||
}
|
||||
|
||||
if (player->stealingtimer == 0 && player->stolentimer == 0)
|
||||
player->flametimer--;
|
||||
|
||||
|
|
@ -7394,6 +7404,8 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
|||
}
|
||||
else
|
||||
{
|
||||
player->flameoverheat = 0;
|
||||
|
||||
if (player->flamestore)
|
||||
K_FlameDashLeftoverSmoke(player->mo);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue