From f15a7a946d7756137c3b8fba8d6ab873f0603299 Mon Sep 17 00:00:00 2001 From: toaster Date: Fri, 23 Jun 2023 22:00:50 +0100 Subject: [PATCH] Remove GS_ENDING A whole bunch of extremely specific SRB2 material --- src/d_main.c | 6 - src/deh_tables.c | 1 - src/f_finale.c | 521 ----------------------------------------------- src/f_finale.h | 5 - src/f_wipe.c | 10 - src/g_game.c | 12 +- src/g_state.h | 1 - 7 files changed, 1 insertion(+), 555 deletions(-) diff --git a/src/d_main.c b/src/d_main.c index 7439b612a..3df9d455f 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -464,12 +464,6 @@ static void D_Display(void) } break; - case GS_ENDING: - F_EndingDrawer(); - HU_Erase(); - HU_Drawer(); - break; - case GS_CUTSCENE: F_CutsceneDrawer(); HU_Erase(); diff --git a/src/deh_tables.c b/src/deh_tables.c index 1435dc5d4..3c11a3aa2 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -6836,7 +6836,6 @@ struct int_const_s const INT_CONST[] = { {"GS_CREDITS",GS_CREDITS}, {"GS_EVALUATION",GS_EVALUATION}, {"GS_INTRO",GS_INTRO}, - {"GS_ENDING",GS_ENDING}, {"GS_CUTSCENE",GS_CUTSCENE}, {"GS_DEDICATEDSERVER",GS_DEDICATEDSERVER}, {"GS_WAITINGPLAYERS",GS_WAITINGPLAYERS}, diff --git a/src/f_finale.c b/src/f_finale.c index f6bff28fb..277f8b5e6 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -130,14 +130,6 @@ static patch_t *ttuser[TTMAX_USER]; static INT32 ttuser_count = 0; static boolean goodending; -static patch_t *endbrdr[2]; // border - blue, white, pink - where have i seen those colours before? -static patch_t *endbgsp[3]; // nebula, sun, planet -static patch_t *endegrk[2]; // eggrock - replaced midway through good ending -static patch_t *endfwrk[3]; // firework - replaced with skin when good ending -static patch_t *endspkl[3]; // sparkle -static patch_t *endglow[2]; // glow aura - replaced with black rock's midway through good ending -static patch_t *endxpld[4]; // mini explosion -static patch_t *endescp[5]; // escape pod + flame static INT32 sparkloffs[3][2]; // eggrock explosions/blackrock sparkles static INT32 sparklloop; @@ -1107,519 +1099,6 @@ void F_GameEvaluationTicker(void) #undef SPARKLLOOPTIME -// ========== -// ENDING -// ========== - -#define INFLECTIONPOINT (6*TICRATE) -#define STOPPINGPOINT (14*TICRATE) -#define SPARKLLOOPTIME 15 // must be odd - -static void F_CacheEnding(void) -{ - endbrdr[1] = W_CachePatchName("ENDBRDR1", PU_PATCH_LOWPRIORITY); - - endegrk[0] = W_CachePatchName("ENDEGRK0", PU_PATCH_LOWPRIORITY); - endegrk[1] = W_CachePatchName("ENDEGRK1", PU_PATCH_LOWPRIORITY); - - endglow[0] = W_CachePatchName("ENDGLOW0", PU_PATCH_LOWPRIORITY); - endglow[1] = W_CachePatchName("ENDGLOW1", PU_PATCH_LOWPRIORITY); - - endbgsp[0] = W_CachePatchName("ENDBGSP0", PU_PATCH_LOWPRIORITY); - endbgsp[1] = W_CachePatchName("ENDBGSP1", PU_PATCH_LOWPRIORITY); - endbgsp[2] = W_CachePatchName("ENDBGSP2", PU_PATCH_LOWPRIORITY); - - endspkl[0] = W_CachePatchName("ENDSPKL0", PU_PATCH_LOWPRIORITY); - endspkl[1] = W_CachePatchName("ENDSPKL1", PU_PATCH_LOWPRIORITY); - endspkl[2] = W_CachePatchName("ENDSPKL2", PU_PATCH_LOWPRIORITY); - - endxpld[0] = W_CachePatchName("ENDXPLD0", PU_PATCH_LOWPRIORITY); - endxpld[1] = W_CachePatchName("ENDXPLD1", PU_PATCH_LOWPRIORITY); - endxpld[2] = W_CachePatchName("ENDXPLD2", PU_PATCH_LOWPRIORITY); - endxpld[3] = W_CachePatchName("ENDXPLD3", PU_PATCH_LOWPRIORITY); - - endescp[0] = W_CachePatchName("ENDESCP0", PU_PATCH_LOWPRIORITY); - endescp[1] = W_CachePatchName("ENDESCP1", PU_PATCH_LOWPRIORITY); - endescp[2] = W_CachePatchName("ENDESCP2", PU_PATCH_LOWPRIORITY); - endescp[3] = W_CachePatchName("ENDESCP3", PU_PATCH_LOWPRIORITY); - endescp[4] = W_CachePatchName("ENDESCP4", PU_PATCH_LOWPRIORITY); - - // so we only need to check once - if ((goodending = ALLCHAOSEMERALDS(emeralds))) - { - endfwrk[0] = W_CachePatchName("ENDFWRK3", PU_PATCH); - endfwrk[1] = W_CachePatchName("ENDFWRK4", PU_PATCH); - endfwrk[2] = W_CachePatchName("ENDFWRK5", PU_PATCH); - - endbrdr[0] = W_CachePatchName("ENDBRDR2", PU_PATCH_LOWPRIORITY); - } - else - { - // eggman, skin nonspecific - endfwrk[0] = W_CachePatchName("ENDFWRK0", PU_PATCH_LOWPRIORITY); - endfwrk[1] = W_CachePatchName("ENDFWRK1", PU_PATCH_LOWPRIORITY); - endfwrk[2] = W_CachePatchName("ENDFWRK2", PU_PATCH_LOWPRIORITY); - - endbrdr[0] = W_CachePatchName("ENDBRDR0", PU_PATCH_LOWPRIORITY); - } -} - -static void F_CacheGoodEnding(void) -{ - endegrk[0] = W_CachePatchName("ENDEGRK2", PU_PATCH_LOWPRIORITY); - endegrk[1] = W_CachePatchName("ENDEGRK3", PU_PATCH_LOWPRIORITY); - - endglow[0] = W_CachePatchName("ENDGLOW2", PU_PATCH_LOWPRIORITY); - endglow[1] = W_CachePatchName("ENDGLOW3", PU_PATCH_LOWPRIORITY); - - endxpld[0] = W_CachePatchName("ENDEGRK4", PU_PATCH_LOWPRIORITY); -} - -void F_StartEnding(void) -{ - G_SetGamestate(GS_ENDING); - wipetypepost = INT16_MAX; - - // Just in case they're open ... somehow - M_ClearMenus(true); - - gameaction = ga_nothing; - paused = false; - CON_ToggleOff(); - S_StopMusic(); // todo: placeholder - S_StopSounds(); - - finalecount = -10; // what? this totally isn't a hack. why are you asking? - - memset(sparkloffs, 0, sizeof(INT32)*3*2); - sparklloop = 0; - - F_CacheEnding(); -} - -void F_EndingTicker(void) -{ - if (++finalecount > STOPPINGPOINT) - { - F_StartCredits(); - wipetypepre = INT16_MAX; - return; - } - - if (finalecount == -8) - S_ChangeMusicInternal((goodending ? "_endg" : "_endb"), false); - - if (goodending && finalecount == INFLECTIONPOINT) // time to swap some assets - F_CacheGoodEnding(); - - if (++sparklloop == SPARKLLOOPTIME) // time to roll the randomisation again - { - angle_t workingangle = FixedAngle((M_RandomRange(-170, 80))<>ANGLETOFINESHIFT; - fixed_t workingradius = M_RandomKey(26); - - sparkloffs[0][0] = (30< -19) - { - INT32 trans = (-parallaxticker)>>1; - if (trans < 0) - trans = 0; - V_DrawFixedPatch((200< 0) // gunchedrock - { - INT32 scale = FRACUNIT + ((parallaxticker-10)<<7); - INT32 trans = parallaxticker>>2; - UINT8 *colormap = R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_JET, GTC_CACHE); - - if (parallaxticker < 10) - { - tweakx = parallaxticker< 0) - { - i -= (3+(tweakx<<1)); - j += tweaky<<2; - } - - if (parallaxticker <= 70) // eggrock/blackrock - { - INT32 trans; - fixed_t scale = FRACUNIT; - UINT8 *colormap[2] = {NULL, NULL}; - - x += i; - y += j; - - if (parallaxticker > 66) - { - scale = ((70 - parallaxticker)<<(FRACBITS-2)); - x += (30*(FRACUNIT-scale)); - y += (30*(FRACUNIT-scale)); - } - else if ((parallaxticker > 60) || (goodending && parallaxticker > 0)) - ; - else - { - doexplosions = true; - if (!sparklloop) - { - x += ((sparkloffs[0][0] < 30< INFLECTIONPOINT) - parallaxticker -= 40; - - if ((-parallaxticker/4) < 5) - { - trans = (-parallaxticker/4) + 5; - if (trans < 0) - trans = 0; - V_DrawFixedPatch(x, y, scale, trans< INFLECTIONPOINT) - { - if (finalecount < INFLECTIONPOINT+10) - V_DrawFadeFill(24, 24, BASEVIDWIDTH-48, BASEVIDHEIGHT-48, 0, 0, INFLECTIONPOINT+10-finalecount); - parallaxticker -= 30; - } - - if ((parallaxticker/2) > -15) - colormap[0] = R_GetTranslationColormap(TC_ALLWHITE, 0, GTC_CACHE); - V_DrawFixedPatch(x, y, scale, 0, rockpat, colormap[0]); - if ((parallaxticker/2) > -25) - { - trans = (parallaxticker/2) + 15; - if (trans < 0) - trans = -trans; - if (trans < 10) - V_DrawFixedPatch(x, y, scale, trans< INFLECTIONPOINT) - { - if (finalecount < INFLECTIONPOINT+10) - V_DrawFixedPatch(x, y, scale, (finalecount-INFLECTIONPOINT)<= 3 && doexplosions) - { - INT32 boomtime = parallaxticker - sparklloop; - - x = ((((BASEVIDWIDTH-82)/2)+11)< INFLECTIONPOINT && finalecount < INFLECTIONPOINT+10) - V_DrawScaledPatch(BASEVIDWIDTH/2, BASEVIDHEIGHT/2, (finalecount-INFLECTIONPOINT)<= TICRATE && finalecount < INFLECTIONPOINT) - { - INT32 workingtime = finalecount - TICRATE; - fixed_t radius = ((vid.width/vid.dupx)*(INFLECTIONPOINT - TICRATE - workingtime))/(INFLECTIONPOINT - TICRATE); - angle_t fa; - INT32 eemeralds_cur[4]; - char patchname[7] = "CEMGx0"; - - radius <<= FRACBITS; - - for (i = 0; i < 4; ++i) - { - if (i == 1) - workingtime -= sparklloop; - else if (i) - workingtime -= SPARKLLOOPTIME; - eemeralds_cur[i] = (workingtime % 360)<>ANGLETOFINESHIFT) & FINEMASK; - x = (BASEVIDWIDTH<<(FRACBITS-1)) + FixedMul(FINECOSINE(fa),radius); - y = (BASEVIDHEIGHT<<(FRACBITS-1)) + FixedMul(FINESINE(fa),radius); - eemeralds_cur[j] += (360<>ANGLETOFINESHIFT) & FINEMASK; - x = (BASEVIDWIDTH<<(FRACBITS-1)) + FixedMul(FINECOSINE(fa),radius); - y = ((BASEVIDHEIGHT+16)<<(FRACBITS-1)) + FixedMul(FINESINE(fa),radius); - eemeralds_cur[0] += (360< 20) - - // look, i make an ending for you last-minute, the least you could do is let me have this - if (cv_soundtest.value == 413) - { - INT32 trans = 0; - boolean donttouch = false; - const char *str; - if (goodending) - str = va("[S] %s: Engage.", skins[players[consoleplayer].skin].realname); - else - str = "[S] Eggman: Abscond."; - - if (finalecount < 10) - trans = (10-finalecount)/2; - else if (finalecount > STOPPINGPOINT - 20) - { - trans = 10 + (finalecount - STOPPINGPOINT)/2; - donttouch = true; - } - - if (trans < 10) - { - //colset(linkmap, 164, 165, 169); -- the ideal purple colour to represent a clicked in-game link, but not worth it just for a soundtest-controlled secret - V_DrawCenteredString(BASEVIDWIDTH/2, 8, V_ALLOWLOWERCASE|(trans<'|(trans<timesBeaten || finalecount >= STOPPINGPOINT-TICRATE) ? V_PURPLEMAP : V_BLUEMAP)|(trans<"); - } - - if (finalecount > STOPPINGPOINT-(20+(2*TICRATE))) - { - INT32 trans2 = abs((5*FINECOSINE((FixedAngle((finalecount*5)<>ANGLETOFINESHIFT & FINEMASK)))>>FRACBITS)+2; - if (!donttouch) - { - trans = 10 + (STOPPINGPOINT-(20+(2*TICRATE))) - finalecount; - if (trans > trans2) - trans2 = trans; - } - else - trans2 += 2*trans; - if (trans2 < 10) - V_DrawCharacter(26, BASEVIDHEIGHT-33, '\x1C'|(trans2<