mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Sync mobj->terrain
This should be enough I think to sync terrain up. The data structures can't change after the files have been loaded, so it should be good. Needs proper online testing though
This commit is contained in:
parent
bf4b47a2cf
commit
b1ffaa99f8
3 changed files with 38 additions and 0 deletions
|
|
@ -41,6 +41,27 @@ UINT16 numTerrainFloorDefs = 0;
|
|||
|
||||
UINT16 defaultTerrain = UINT16_MAX;
|
||||
|
||||
/*--------------------------------------------------
|
||||
size_t K_GetTerrainHeapIndex(terrain_t *terrain)
|
||||
|
||||
See header file for description.
|
||||
--------------------------------------------------*/
|
||||
size_t K_GetTerrainHeapIndex(terrain_t *terrain)
|
||||
{
|
||||
size_t i = SIZE_MAX;
|
||||
|
||||
if (terrain == NULL)
|
||||
{
|
||||
CONS_Debug(DBG_GAMELOGIC, "NULL terrain in K_GetTerrainHeapIndex.\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
i = (terrain - terrainDefs);
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
terrain_t *K_GetTerrainByIndex(UINT16 checkIndex)
|
||||
{
|
||||
if (checkIndex >= numTerrainDefs)
|
||||
|
|
|
|||
|
|
@ -97,6 +97,7 @@ extern UINT16 numTerrainFloorDefs;
|
|||
// Default terrain definition ID.
|
||||
extern UINT16 defaultTerrain;
|
||||
|
||||
size_t K_GetTerrainHeapIndex(terrain_t *terrain);
|
||||
terrain_t *K_GetTerrainByIndex(UINT16 checkIndex);
|
||||
terrain_t *K_GetTerrainByName(const char *checkName);
|
||||
terrain_t *K_GetDefaultTerrain(void);
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@
|
|||
// SRB2Kart
|
||||
#include "k_battle.h"
|
||||
#include "k_pwrlv.h"
|
||||
#include "k_terrain.h"
|
||||
|
||||
savedata_t savedata;
|
||||
UINT8 *save_p;
|
||||
|
|
@ -1540,6 +1541,7 @@ typedef enum
|
|||
MD2_KITEMCAP = 1<<26,
|
||||
MD2_ITNEXT = 1<<27,
|
||||
MD2_LASTMOMZ = 1<<28,
|
||||
MD2_TERRAIN = 1<<29,
|
||||
} mobj_diff2_t;
|
||||
|
||||
typedef enum
|
||||
|
|
@ -1782,6 +1784,8 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type)
|
|||
diff2 |= MD2_ITNEXT;
|
||||
if (mobj->lastmomz)
|
||||
diff2 |= MD2_LASTMOMZ;
|
||||
if (mobj->terrain != NULL)
|
||||
diff2 |= MD2_TERRAIN;
|
||||
|
||||
if (diff2 != 0)
|
||||
diff |= MD_MORE;
|
||||
|
|
@ -1979,6 +1983,10 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type)
|
|||
{
|
||||
WRITEINT32(save_p, mobj->lastmomz);
|
||||
}
|
||||
if (diff2 & MD2_TERRAIN)
|
||||
{
|
||||
WRITEUINT32(save_p, K_GetTerrainHeapIndex(mobj->terrain));
|
||||
}
|
||||
|
||||
WRITEUINT32(save_p, mobj->mobjnum);
|
||||
}
|
||||
|
|
@ -3077,6 +3085,14 @@ static thinker_t* LoadMobjThinker(actionf_p1 thinker)
|
|||
{
|
||||
mobj->lastmomz = READINT32(save_p);
|
||||
}
|
||||
if (diff2 & MD2_TERRAIN)
|
||||
{
|
||||
mobj->terrain = (terrain_t *)(size_t)READUINT32(save_p);
|
||||
}
|
||||
else
|
||||
{
|
||||
mobj->terrain = NULL;
|
||||
}
|
||||
|
||||
if (diff & MD_REDFLAG)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue