From e5a533544d5014946845900521e6d7cce1845ca1 Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 21 Nov 2022 12:03:26 -0800 Subject: [PATCH] Add sonicloopvars_t to player_t --- src/d_player.h | 12 ++++++++++++ src/p_saveg.c | 26 ++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/src/d_player.h b/src/d_player.h index 12cab4a9a..298c65485 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -374,6 +374,16 @@ struct itemroulette_t boolean eggman; }; +// player_t struct for loop state +typedef struct { + fixed_t radius; + fixed_t revolution, min_revolution, max_revolution; + angle_t yaw; + vector3_t origin; + vector2_t shift; + boolean flip; +} sonicloopvars_t; + // ======================================================================== // PLAYER STRUCTURE // ======================================================================== @@ -668,6 +678,8 @@ struct player_t #ifdef HWRENDER fixed_t fovadd; // adjust FOV for hw rendering #endif + + sonicloopvars_t loop; }; #ifdef __cplusplus diff --git a/src/p_saveg.c b/src/p_saveg.c index 55fac75f5..fc9d7daf4 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -465,6 +465,19 @@ static void P_NetArchivePlayers(savebuffer_t *save) WRITEUINT32(save->p, players[i].itemRoulette.tics); WRITEUINT32(save->p, players[i].itemRoulette.elapsed); WRITEUINT8(save->p, players[i].itemRoulette.eggman); + + // sonicloopsvars_t + WRITEFIXED(save->p, players[i].loop.radius); + WRITEFIXED(save->p, players[i].loop.revolution); + WRITEFIXED(save->p, players[i].loop.min_revolution); + WRITEFIXED(save->p, players[i].loop.max_revolution); + WRITEANGLE(save->p, players[i].loop.yaw); + WRITEFIXED(save->p, players[i].loop.origin.x); + WRITEFIXED(save->p, players[i].loop.origin.y); + WRITEFIXED(save->p, players[i].loop.origin.z); + WRITEFIXED(save->p, players[i].loop.shift.x); + WRITEFIXED(save->p, players[i].loop.shift.y); + WRITEUINT8(save->p, players[i].loop.flip); } } @@ -834,6 +847,19 @@ static void P_NetUnArchivePlayers(savebuffer_t *save) players[i].itemRoulette.elapsed = (tic_t)READUINT32(save->p); players[i].itemRoulette.eggman = (boolean)READUINT8(save->p); + // sonicloopsvars_t + players[i].loop.radius = READFIXED(save->p); + players[i].loop.revolution = READFIXED(save->p); + players[i].loop.min_revolution = READFIXED(save->p); + players[i].loop.max_revolution = READFIXED(save->p); + players[i].loop.yaw = READANGLE(save->p); + players[i].loop.origin.x = READFIXED(save->p); + players[i].loop.origin.y = READFIXED(save->p); + players[i].loop.origin.z = READFIXED(save->p); + players[i].loop.shift.x = READFIXED(save->p); + players[i].loop.shift.y = READFIXED(save->p); + players[i].loop.flip = READUINT8(save->p); + //players[i].viewheight = P_GetPlayerViewHeight(players[i]); // scale cannot be factored in at this point } }