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_BEST6",
|
||||
|
||||
"INTERMISSION",
|
||||
"INTERMISSION1",
|
||||
"INTERMISSION2",
|
||||
"INTERMISSION3",
|
||||
};
|
||||
|
||||
const char *const KARTHUD_LIST[] = {
|
||||
|
|
@ -6927,6 +6929,7 @@ struct int_const_s const INT_CONST[] = {
|
|||
{"TC_BLINK",TC_BLINK},
|
||||
{"TC_DASHMODE",TC_DASHMODE},
|
||||
{"TC_HITLAG",TC_HITLAG},
|
||||
{"TC_INTERMISSION",TC_INTERMISSION},
|
||||
|
||||
// marathonmode flags
|
||||
{"MA_INIT",MA_INIT},
|
||||
|
|
|
|||
|
|
@ -426,8 +426,10 @@ typedef enum
|
|||
SKINCOLOR_POSNUM_BEST4,
|
||||
SKINCOLOR_POSNUM_BEST5,
|
||||
SKINCOLOR_POSNUM_BEST6,
|
||||
|
||||
SKINCOLOR_INTERMISSION,
|
||||
|
||||
SKINCOLOR_INTERMISSION1,
|
||||
SKINCOLOR_INTERMISSION2,
|
||||
SKINCOLOR_INTERMISSION3,
|
||||
|
||||
SKINCOLOR_FIRSTFREESLOT,
|
||||
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 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.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
@ -168,6 +228,11 @@ void K_GenerateKartColormap(UINT8 *dest_colormap, INT32 skinnum, UINT8 color)
|
|||
K_HitlagColormap(dest_colormap);
|
||||
return;
|
||||
}
|
||||
else if (skinnum == TC_INTERMISSION)
|
||||
{
|
||||
K_IntermissionColormap(dest_colormap);
|
||||
return;
|
||||
}
|
||||
else if (skinnum == TC_BOSS
|
||||
|| skinnum == TC_ALLWHITE
|
||||
|| skinnum == TC_METALSONIC
|
||||
|
|
|
|||
|
|
@ -151,7 +151,8 @@ UINT32 nflatxshift, nflatyshift, nflatshiftup, nflatmask;
|
|||
#define BLINK_TT_CACHE_INDEX (MAXSKINS + 5)
|
||||
#define DASHMODE_TT_CACHE_INDEX (MAXSKINS + 6)
|
||||
#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 DEFAULT_STARTTRANSCOLOR 96
|
||||
|
|
@ -172,6 +173,7 @@ static INT32 SkinToCacheIndex(INT32 skinnum)
|
|||
case TC_BLINK: return BLINK_TT_CACHE_INDEX;
|
||||
case TC_DASHMODE: return DASHMODE_TT_CACHE_INDEX;
|
||||
case TC_HITLAG: return HITLAG_TT_CACHE_INDEX;
|
||||
case TC_INTERMISSION: return INTERMISSION_TT_CACHE_INDEX;
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
|
@ -190,6 +192,7 @@ static INT32 CacheIndexToSkin(INT32 ttc)
|
|||
case BLINK_TT_CACHE_INDEX: return TC_BLINK;
|
||||
case DASHMODE_TT_CACHE_INDEX: return TC_DASHMODE;
|
||||
case HITLAG_TT_CACHE_INDEX: return TC_HITLAG;
|
||||
case INTERMISSION_TT_CACHE_INDEX: return TC_INTERMISSION;
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -132,6 +132,7 @@ enum
|
|||
TC_BLINK, // For item blinking, according to kart
|
||||
TC_DASHMODE, // For Metal Sonic's dashmode
|
||||
TC_HITLAG, // Damage hitlag effect
|
||||
TC_INTERMISSION, // Intermission / menu background
|
||||
|
||||
TC_DEFAULT
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1436,26 +1436,14 @@ void Y_IntermissionDrawer(void)
|
|||
// Scrolling marquee
|
||||
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 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
|
||||
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)
|
||||
{
|
||||
V_DrawFixedPatch(x, 154<<FRACBITS, FRACUNIT, V_SUBTRACT, rrmq, NULL);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue