mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Merge branch 'intermission-tie-dye' into 'master'
Sonic 3-style intermission coloring See merge request KartKrew/Kart!1462
This commit is contained in:
commit
722c9147b8
7 changed files with 82 additions and 18 deletions
|
|
@ -6254,7 +6254,9 @@ const char *COLOR_ENUMS[] = {
|
||||||
"POSNUM_BEST5",
|
"POSNUM_BEST5",
|
||||||
"POSNUM_BEST6",
|
"POSNUM_BEST6",
|
||||||
|
|
||||||
"INTERMISSION",
|
"INTERMISSION1",
|
||||||
|
"INTERMISSION2",
|
||||||
|
"INTERMISSION3",
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *const KARTHUD_LIST[] = {
|
const char *const KARTHUD_LIST[] = {
|
||||||
|
|
@ -6927,6 +6929,7 @@ struct int_const_s const INT_CONST[] = {
|
||||||
{"TC_BLINK",TC_BLINK},
|
{"TC_BLINK",TC_BLINK},
|
||||||
{"TC_DASHMODE",TC_DASHMODE},
|
{"TC_DASHMODE",TC_DASHMODE},
|
||||||
{"TC_HITLAG",TC_HITLAG},
|
{"TC_HITLAG",TC_HITLAG},
|
||||||
|
{"TC_INTERMISSION",TC_INTERMISSION},
|
||||||
|
|
||||||
// marathonmode flags
|
// marathonmode flags
|
||||||
{"MA_INIT",MA_INIT},
|
{"MA_INIT",MA_INIT},
|
||||||
|
|
|
||||||
|
|
@ -426,8 +426,10 @@ typedef enum
|
||||||
SKINCOLOR_POSNUM_BEST4,
|
SKINCOLOR_POSNUM_BEST4,
|
||||||
SKINCOLOR_POSNUM_BEST5,
|
SKINCOLOR_POSNUM_BEST5,
|
||||||
SKINCOLOR_POSNUM_BEST6,
|
SKINCOLOR_POSNUM_BEST6,
|
||||||
|
|
||||||
SKINCOLOR_INTERMISSION,
|
SKINCOLOR_INTERMISSION1,
|
||||||
|
SKINCOLOR_INTERMISSION2,
|
||||||
|
SKINCOLOR_INTERMISSION3,
|
||||||
|
|
||||||
SKINCOLOR_FIRSTFREESLOT,
|
SKINCOLOR_FIRSTFREESLOT,
|
||||||
SKINCOLOR_LASTFREESLOT = SKINCOLOR_FIRSTFREESLOT + NUMCOLORFREESLOTS - 1,
|
SKINCOLOR_LASTFREESLOT = SKINCOLOR_FIRSTFREESLOT + NUMCOLORFREESLOTS - 1,
|
||||||
|
|
|
||||||
|
|
@ -30516,7 +30516,9 @@ skincolor_t skincolors[MAXSKINCOLORS] = {
|
||||||
{"Position Best 5", {152, 152, 153, 153, 154, 154, 155, 155, 156, 156, 157, 158, 159, 253, 254, 30}, SKINCOLOR_NONE, 0, 0, false, UINT16_MAX}, // SKINCOLOR_POSNUM_BEST5
|
{"Position Best 5", {152, 152, 153, 153, 154, 154, 155, 155, 156, 156, 157, 158, 159, 253, 254, 30}, SKINCOLOR_NONE, 0, 0, false, UINT16_MAX}, // SKINCOLOR_POSNUM_BEST5
|
||||||
{"Position Best 6", {181, 181, 182, 182, 183, 183, 184, 184, 185, 185, 186, 186, 187, 187, 29, 30}, SKINCOLOR_NONE, 0, 0, false, UINT16_MAX}, // SKINCOLOR_POSNUM_BEST6
|
{"Position Best 6", {181, 181, 182, 182, 183, 183, 184, 184, 185, 185, 186, 186, 187, 187, 29, 30}, SKINCOLOR_NONE, 0, 0, false, UINT16_MAX}, // SKINCOLOR_POSNUM_BEST6
|
||||||
|
|
||||||
{"Intermission", {0,80,80,81,81,81,84,85,86,87,246,248,251,26,28,31}, SKINCOLOR_NONE, 0, 0, false, UINT16_MAX}, // SKINCOLOR_INTERMISSION
|
{"Intermission 1", { 0, 80, 80, 80, 81, 81, 81, 84, 84, 85, 86, 86, 87, 87, 246, 248}, SKINCOLOR_NONE, 0, 0, false, UINT16_MAX}, // SKINCOLOR_INTERMISSION1
|
||||||
|
{"Intermission 2", { 0, 81, 81, 81, 88, 88, 88, 89, 89, 140, 140, 141, 141, 142, 142, 142}, SKINCOLOR_NONE, 0, 0, false, UINT16_MAX}, // SKINCOLOR_INTERMISSION2
|
||||||
|
{"Intermission 3", { 0, 144, 144, 144, 129, 129, 129, 130, 130, 146, 147, 147, 14, 16, 17, 19}, SKINCOLOR_NONE, 0, 0, false, UINT16_MAX}, // SKINCOLOR_INTERMISSION3
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Patches the mobjinfo, state, and skincolor tables.
|
/** Patches the mobjinfo, state, and skincolor tables.
|
||||||
|
|
|
||||||
|
|
@ -153,6 +153,66 @@ void K_HitlagColormap(UINT8 *dest_colormap)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*--------------------------------------------------
|
||||||
|
static void K_IntermissionColormap(UINT8 *dest_colormap)
|
||||||
|
|
||||||
|
Turns warm colors tan, and cool colors steel-blue.
|
||||||
|
--------------------------------------------------*/
|
||||||
|
static void K_IntermissionColormap(UINT8 *dest_colormap)
|
||||||
|
{
|
||||||
|
RGBA_t color;
|
||||||
|
INT32 i;
|
||||||
|
|
||||||
|
// for every colour in the palette, check its
|
||||||
|
for (i = 0; i < NUM_PALETTE_ENTRIES; i++)
|
||||||
|
{
|
||||||
|
color = V_GetColor(i);
|
||||||
|
|
||||||
|
UINT8 lo = min(min(color.s.red, color.s.green), color.s.blue);
|
||||||
|
UINT8 hi = max(max(color.s.red, color.s.green), color.s.blue);
|
||||||
|
|
||||||
|
double hue = 0.0;
|
||||||
|
if (lo != hi)
|
||||||
|
{
|
||||||
|
if (hi == color.s.red)
|
||||||
|
{
|
||||||
|
hue = (color.s.green - color.s.blue) / (hi - lo);
|
||||||
|
}
|
||||||
|
else if (hi == color.s.green)
|
||||||
|
{
|
||||||
|
hue = 2.0 + (color.s.blue - color.s.red) / (hi - lo);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
hue = 4.0 + (color.s.red - color.s.green) / (hi - lo);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hue < 0.0)
|
||||||
|
{
|
||||||
|
hue += 6.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
UINT16 skincolor = SKINCOLOR_INTERMISSION1;
|
||||||
|
const double blue_start = 3.0;
|
||||||
|
const double blue_end = 5.0;
|
||||||
|
const double green_buffer = 0.5;
|
||||||
|
if (hue > blue_start && hue < blue_end)
|
||||||
|
{
|
||||||
|
skincolor = SKINCOLOR_INTERMISSION3;
|
||||||
|
}
|
||||||
|
else if (hue > blue_start - green_buffer && hue < blue_start + green_buffer)
|
||||||
|
{
|
||||||
|
skincolor = SKINCOLOR_INTERMISSION2;
|
||||||
|
}
|
||||||
|
|
||||||
|
INT32 lum = K_ColorRelativeLuminance(color.s.red, color.s.green, color.s.blue);
|
||||||
|
INT32 skincolor_index = ((255 - lum) * 15) / 255;
|
||||||
|
|
||||||
|
dest_colormap[i] = skincolors[skincolor].ramp[skincolor_index];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*--------------------------------------------------
|
/*--------------------------------------------------
|
||||||
void K_GenerateKartColormap(UINT8 *dest_colormap, INT32 skinnum, UINT8 color)
|
void K_GenerateKartColormap(UINT8 *dest_colormap, INT32 skinnum, UINT8 color)
|
||||||
|
|
||||||
|
|
@ -168,6 +228,11 @@ void K_GenerateKartColormap(UINT8 *dest_colormap, INT32 skinnum, UINT8 color)
|
||||||
K_HitlagColormap(dest_colormap);
|
K_HitlagColormap(dest_colormap);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else if (skinnum == TC_INTERMISSION)
|
||||||
|
{
|
||||||
|
K_IntermissionColormap(dest_colormap);
|
||||||
|
return;
|
||||||
|
}
|
||||||
else if (skinnum == TC_BOSS
|
else if (skinnum == TC_BOSS
|
||||||
|| skinnum == TC_ALLWHITE
|
|| skinnum == TC_ALLWHITE
|
||||||
|| skinnum == TC_METALSONIC
|
|| skinnum == TC_METALSONIC
|
||||||
|
|
|
||||||
|
|
@ -151,7 +151,8 @@ UINT32 nflatxshift, nflatyshift, nflatshiftup, nflatmask;
|
||||||
#define BLINK_TT_CACHE_INDEX (MAXSKINS + 5)
|
#define BLINK_TT_CACHE_INDEX (MAXSKINS + 5)
|
||||||
#define DASHMODE_TT_CACHE_INDEX (MAXSKINS + 6)
|
#define DASHMODE_TT_CACHE_INDEX (MAXSKINS + 6)
|
||||||
#define HITLAG_TT_CACHE_INDEX (MAXSKINS + 7)
|
#define HITLAG_TT_CACHE_INDEX (MAXSKINS + 7)
|
||||||
#define TT_CACHE_SIZE (MAXSKINS + 8)
|
#define INTERMISSION_TT_CACHE_INDEX (MAXSKINS + 8)
|
||||||
|
#define TT_CACHE_SIZE (MAXSKINS + 9)
|
||||||
|
|
||||||
#define SKIN_RAMP_LENGTH 16
|
#define SKIN_RAMP_LENGTH 16
|
||||||
#define DEFAULT_STARTTRANSCOLOR 96
|
#define DEFAULT_STARTTRANSCOLOR 96
|
||||||
|
|
@ -172,6 +173,7 @@ static INT32 SkinToCacheIndex(INT32 skinnum)
|
||||||
case TC_BLINK: return BLINK_TT_CACHE_INDEX;
|
case TC_BLINK: return BLINK_TT_CACHE_INDEX;
|
||||||
case TC_DASHMODE: return DASHMODE_TT_CACHE_INDEX;
|
case TC_DASHMODE: return DASHMODE_TT_CACHE_INDEX;
|
||||||
case TC_HITLAG: return HITLAG_TT_CACHE_INDEX;
|
case TC_HITLAG: return HITLAG_TT_CACHE_INDEX;
|
||||||
|
case TC_INTERMISSION: return INTERMISSION_TT_CACHE_INDEX;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -190,6 +192,7 @@ static INT32 CacheIndexToSkin(INT32 ttc)
|
||||||
case BLINK_TT_CACHE_INDEX: return TC_BLINK;
|
case BLINK_TT_CACHE_INDEX: return TC_BLINK;
|
||||||
case DASHMODE_TT_CACHE_INDEX: return TC_DASHMODE;
|
case DASHMODE_TT_CACHE_INDEX: return TC_DASHMODE;
|
||||||
case HITLAG_TT_CACHE_INDEX: return TC_HITLAG;
|
case HITLAG_TT_CACHE_INDEX: return TC_HITLAG;
|
||||||
|
case INTERMISSION_TT_CACHE_INDEX: return TC_INTERMISSION;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -132,6 +132,7 @@ enum
|
||||||
TC_BLINK, // For item blinking, according to kart
|
TC_BLINK, // For item blinking, according to kart
|
||||||
TC_DASHMODE, // For Metal Sonic's dashmode
|
TC_DASHMODE, // For Metal Sonic's dashmode
|
||||||
TC_HITLAG, // Damage hitlag effect
|
TC_HITLAG, // Damage hitlag effect
|
||||||
|
TC_INTERMISSION, // Intermission / menu background
|
||||||
|
|
||||||
TC_DEFAULT
|
TC_DEFAULT
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1436,26 +1436,14 @@ void Y_IntermissionDrawer(void)
|
||||||
// Scrolling marquee
|
// Scrolling marquee
|
||||||
patch_t *rrmq = W_CachePatchName("R_RRMQ", PU_PATCH);
|
patch_t *rrmq = W_CachePatchName("R_RRMQ", PU_PATCH);
|
||||||
|
|
||||||
// Blending mask for the background
|
|
||||||
patch_t *mask = W_CachePatchName("R_MASK", PU_PATCH);
|
|
||||||
|
|
||||||
fixed_t mqloop = SHORT(rrmq->width)*FRACUNIT;
|
fixed_t mqloop = SHORT(rrmq->width)*FRACUNIT;
|
||||||
fixed_t chkloop = SHORT(rbgchk->width)*FRACUNIT;
|
fixed_t chkloop = SHORT(rbgchk->width)*FRACUNIT;
|
||||||
|
|
||||||
UINT8 *bgcolor = R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_INTERMISSION, GTC_CACHE);
|
UINT8 *bgcolor = R_GetTranslationColormap(TC_INTERMISSION, 0, GTC_CACHE);
|
||||||
|
|
||||||
// Draw the background
|
// Draw the background
|
||||||
K_DrawMapThumbnail(0, 0, BASEVIDWIDTH<<FRACBITS, (data.encore ? V_FLIP : 0), prevmap, bgcolor);
|
K_DrawMapThumbnail(0, 0, BASEVIDWIDTH<<FRACBITS, (data.encore ? V_FLIP : 0), prevmap, bgcolor);
|
||||||
|
|
||||||
// Draw a mask over the BG to get the correct colorization
|
|
||||||
V_DrawMappedPatch(0, 0, V_ADD|V_TRANSLUCENT, mask, NULL);
|
|
||||||
|
|
||||||
// Draw the marquee (scroll pending)
|
|
||||||
//V_DrawMappedPatch(0, 154, V_SUBTRACT, rrmq, NULL);
|
|
||||||
|
|
||||||
// Draw the checker pattern (scroll pending)
|
|
||||||
//V_DrawMappedPatch(0, 0, V_SUBTRACT, rbgchk, NULL);
|
|
||||||
|
|
||||||
for (x = -mqscroll; x < (BASEVIDWIDTH * FRACUNIT); x += mqloop)
|
for (x = -mqscroll; x < (BASEVIDWIDTH * FRACUNIT); x += mqloop)
|
||||||
{
|
{
|
||||||
V_DrawFixedPatch(x, 154<<FRACBITS, FRACUNIT, V_SUBTRACT, rrmq, NULL);
|
V_DrawFixedPatch(x, 154<<FRACBITS, FRACUNIT, V_SUBTRACT, rrmq, NULL);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue