Battle: use Easing_OutSine to shrink Overtime Barrier

Modifies netsave.
This commit is contained in:
James R 2024-01-05 18:05:40 -08:00
parent 8d2327c5c9
commit 19d9d1e318
3 changed files with 10 additions and 1 deletions

View file

@ -23,6 +23,7 @@
#include "k_rank.h"
#include "music.h"
#include "hu_stuff.h"
#include "m_easing.h"
#define BARRIER_MIN_RADIUS (768 * mapobjectscale)
@ -701,6 +702,7 @@ void K_RunBattleOvertime(void)
{
S_StartSound(NULL, sfx_kc40);
P_StartQuake(5, 64 * mapobjectscale, 0, NULL);
battleovertime.start = leveltime;
}
if (!Music_Playing("level") && !Music_Playing("battle_overtime"))
@ -719,7 +721,11 @@ void K_RunBattleOvertime(void)
const fixed_t oldradius = battleovertime.radius;
if (battleovertime.radius > minradius)
battleovertime.radius -= (battleovertime.initial_radius / (30*TICRATE));
{
tic_t t = leveltime - battleovertime.start;
const tic_t duration = 30*TICRATE;
battleovertime.radius = Easing_OutSine(min(t, duration) * FRACUNIT / duration, battleovertime.initial_radius, minradius);
}
if (battleovertime.radius <= minradius && oldradius > minradius)
{

View file

@ -20,6 +20,7 @@ extern struct battleovertime
UINT16 enabled; ///< Has this been initalized yet?
fixed_t radius; ///< Radius of kill field
fixed_t initial_radius; ///< Starting radius of kill field
tic_t start; ///< Leveltime to decrease kill field radius from
fixed_t x, y, z; ///< Position to center on
} battleovertime;

View file

@ -6454,6 +6454,7 @@ static void P_NetArchiveMisc(savebuffer_t *save, boolean resending)
WRITEUINT16(save->p, battleovertime.enabled);
WRITEFIXED(save->p, battleovertime.radius);
WRITEFIXED(save->p, battleovertime.initial_radius);
WRITEUINT32(save->p, battleovertime.start);
WRITEFIXED(save->p, battleovertime.x);
WRITEFIXED(save->p, battleovertime.y);
WRITEFIXED(save->p, battleovertime.z);
@ -6639,6 +6640,7 @@ static boolean P_NetUnArchiveMisc(savebuffer_t *save, boolean reloading)
battleovertime.enabled = READUINT16(save->p);
battleovertime.radius = READFIXED(save->p);
battleovertime.initial_radius = READFIXED(save->p);
battleovertime.start = READUINT32(save->p);
battleovertime.x = READFIXED(save->p);
battleovertime.y = READFIXED(save->p);
battleovertime.z = READFIXED(save->p);