mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-05-10 19:01:50 +00:00
lua_script.c fixes:
* make sure polyobj_t userdata is invalidated at level load * add support for syncing polyobj_t Lua variables in netgames
This commit is contained in:
parent
9008a21c29
commit
9e37ef5473
1 changed files with 19 additions and 0 deletions
|
|
@ -24,6 +24,7 @@
|
||||||
#include "p_saveg.h"
|
#include "p_saveg.h"
|
||||||
#include "p_local.h"
|
#include "p_local.h"
|
||||||
#include "p_slopes.h" // for P_SlopeById
|
#include "p_slopes.h" // for P_SlopeById
|
||||||
|
#include "p_polyobj.h" // polyobj_t, PolyObjects
|
||||||
#ifdef LUA_ALLOW_BYTECODE
|
#ifdef LUA_ALLOW_BYTECODE
|
||||||
#include "d_netfil.h" // for LUA_DumpFile
|
#include "d_netfil.h" // for LUA_DumpFile
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -775,6 +776,8 @@ void LUA_InvalidateLevel(void)
|
||||||
LUA_InvalidateUserdata(&sides[i]);
|
LUA_InvalidateUserdata(&sides[i]);
|
||||||
for (i = 0; i < numvertexes; i++)
|
for (i = 0; i < numvertexes; i++)
|
||||||
LUA_InvalidateUserdata(&vertexes[i]);
|
LUA_InvalidateUserdata(&vertexes[i]);
|
||||||
|
for (i = 0; i < (size_t)numPolyObjects; i++)
|
||||||
|
LUA_InvalidateUserdata(&PolyObjects[i]);
|
||||||
#ifdef HAVE_LUA_SEGS
|
#ifdef HAVE_LUA_SEGS
|
||||||
for (i = 0; i < numsegs; i++)
|
for (i = 0; i < numsegs; i++)
|
||||||
LUA_InvalidateUserdata(&segs[i]);
|
LUA_InvalidateUserdata(&segs[i]);
|
||||||
|
|
@ -833,6 +836,7 @@ enum
|
||||||
ARCH_NODE,
|
ARCH_NODE,
|
||||||
#endif
|
#endif
|
||||||
ARCH_FFLOOR,
|
ARCH_FFLOOR,
|
||||||
|
ARCH_POLYOBJ,
|
||||||
ARCH_SLOPE,
|
ARCH_SLOPE,
|
||||||
ARCH_MAPHEADER,
|
ARCH_MAPHEADER,
|
||||||
ARCH_SKINCOLOR,
|
ARCH_SKINCOLOR,
|
||||||
|
|
@ -859,6 +863,7 @@ static const struct {
|
||||||
{META_NODE, ARCH_NODE},
|
{META_NODE, ARCH_NODE},
|
||||||
#endif
|
#endif
|
||||||
{META_FFLOOR, ARCH_FFLOOR},
|
{META_FFLOOR, ARCH_FFLOOR},
|
||||||
|
{META_POLYOBJ, ARCH_POLYOBJ},
|
||||||
{META_SLOPE, ARCH_SLOPE},
|
{META_SLOPE, ARCH_SLOPE},
|
||||||
{META_MAPHEADER, ARCH_MAPHEADER},
|
{META_MAPHEADER, ARCH_MAPHEADER},
|
||||||
{META_SKINCOLOR, ARCH_SKINCOLOR},
|
{META_SKINCOLOR, ARCH_SKINCOLOR},
|
||||||
|
|
@ -1127,6 +1132,17 @@ static UINT8 ArchiveValue(int TABLESINDEX, int myindex)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case ARCH_POLYOBJ:
|
||||||
|
{
|
||||||
|
polyobj_t *polyobj = *((polyobj_t **)lua_touserdata(gL, myindex));
|
||||||
|
if (!polyobj)
|
||||||
|
WRITEUINT8(save_p, ARCH_NULL);
|
||||||
|
else {
|
||||||
|
WRITEUINT8(save_p, ARCH_POLYOBJ);
|
||||||
|
WRITEUINT16(save_p, polyobj-PolyObjects);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case ARCH_SLOPE:
|
case ARCH_SLOPE:
|
||||||
{
|
{
|
||||||
pslope_t *slope = *((pslope_t **)lua_touserdata(gL, myindex));
|
pslope_t *slope = *((pslope_t **)lua_touserdata(gL, myindex));
|
||||||
|
|
@ -1382,6 +1398,9 @@ static UINT8 UnArchiveValue(int TABLESINDEX)
|
||||||
LUA_PushUserdata(gL, rover, META_FFLOOR);
|
LUA_PushUserdata(gL, rover, META_FFLOOR);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case ARCH_POLYOBJ:
|
||||||
|
LUA_PushUserdata(gL, &PolyObjects[READUINT16(save_p)], META_POLYOBJ);
|
||||||
|
break;
|
||||||
case ARCH_SLOPE:
|
case ARCH_SLOPE:
|
||||||
LUA_PushUserdata(gL, P_SlopeById(READUINT16(save_p)), META_SLOPE);
|
LUA_PushUserdata(gL, P_SlopeById(READUINT16(save_p)), META_SLOPE);
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue