mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-14 16:40:56 +00:00
- fixed a few things.
This commit is contained in:
parent
b7365fb70f
commit
24f5dc0b27
8 changed files with 36 additions and 41 deletions
|
@ -53,6 +53,7 @@
|
|||
#include "vm.h"
|
||||
#include "actor.h"
|
||||
#include "maploader/mapdata.h"
|
||||
#include "maploader/maploader.h"
|
||||
|
||||
// MACROS ------------------------------------------------------------------
|
||||
|
||||
|
@ -79,8 +80,6 @@ enum
|
|||
// PRIVATE FUNCTION PROTOTYPES ---------------------------------------------
|
||||
|
||||
// EXTERNAL DATA DECLARATIONS ----------------------------------------------
|
||||
extern TArray<FMapThing> MapThingsConverted;
|
||||
extern bool ForceNodeBuild;
|
||||
|
||||
// PUBLIC DATA DEFINITIONS -------------------------------------------------
|
||||
|
||||
|
@ -311,9 +310,11 @@ FName CheckCompatibility(MapData *map)
|
|||
// SetCompatibilityParams
|
||||
//
|
||||
//==========================================================================
|
||||
static MapLoader *maploader; // so that the script functions have access. Should be done more cleanly later.
|
||||
|
||||
void SetCompatibilityParams(FName checksum)
|
||||
void MapLoader::SetCompatibilityParams(FName checksum)
|
||||
{
|
||||
maploader = this;
|
||||
if (checksum != NAME_None)
|
||||
{
|
||||
PClass *const cls = PClass::FindClass("LevelCompatibility");
|
||||
|
@ -327,6 +328,7 @@ void SetCompatibilityParams(FName checksum)
|
|||
}
|
||||
}
|
||||
}
|
||||
maploader = nullptr;
|
||||
}
|
||||
|
||||
DEFINE_ACTION_FUNCTION(DLevelCompatibility, OffsetSectorPlane)
|
||||
|
@ -336,7 +338,7 @@ DEFINE_ACTION_FUNCTION(DLevelCompatibility, OffsetSectorPlane)
|
|||
PARAM_INT(planeval);
|
||||
PARAM_FLOAT(delta);
|
||||
|
||||
sector_t *sec = &level.sectors[sector];
|
||||
sector_t *sec = &maploader->sectors[sector];
|
||||
secplane_t& plane = sector_t::floor == planeval? sec->floorplane : sec->ceilingplane;
|
||||
plane.ChangeHeight(delta);
|
||||
sec->ChangePlaneTexZ(planeval, delta);
|
||||
|
@ -347,7 +349,7 @@ DEFINE_ACTION_FUNCTION(DLevelCompatibility, ClearSectorTags)
|
|||
{
|
||||
PARAM_PROLOGUE;
|
||||
PARAM_INT(sector);
|
||||
tagManager.RemoveSectorTags(sector);
|
||||
maploader->tagManager->RemoveSectorTags(sector);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -356,7 +358,7 @@ DEFINE_ACTION_FUNCTION(DLevelCompatibility, AddSectorTag)
|
|||
PARAM_PROLOGUE;
|
||||
PARAM_INT(sector);
|
||||
PARAM_INT(tag);
|
||||
tagManager.AddSectorTag(sector, tag);
|
||||
maploader->tagManager->AddSectorTag(sector, tag);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -366,9 +368,9 @@ DEFINE_ACTION_FUNCTION(DLevelCompatibility, SetThingSkills)
|
|||
PARAM_INT(thing);
|
||||
PARAM_INT(skillmask);
|
||||
|
||||
if ((unsigned)thing < MapThingsConverted.Size())
|
||||
if ((unsigned)thing < maploader->MapThingsConverted.Size())
|
||||
{
|
||||
MapThingsConverted[thing].SkillFilter = skillmask;
|
||||
maploader->MapThingsConverted[thing].SkillFilter = skillmask;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -380,9 +382,9 @@ DEFINE_ACTION_FUNCTION(DLevelCompatibility, SetThingXY)
|
|||
PARAM_FLOAT(x);
|
||||
PARAM_FLOAT(y);
|
||||
|
||||
if ((unsigned)thing < MapThingsConverted.Size())
|
||||
if ((unsigned)thing < maploader->MapThingsConverted.Size())
|
||||
{
|
||||
auto& pos = MapThingsConverted[thing].pos;
|
||||
auto& pos = maploader->MapThingsConverted[thing].pos;
|
||||
pos.X = x;
|
||||
pos.Y = y;
|
||||
}
|
||||
|
@ -395,9 +397,9 @@ DEFINE_ACTION_FUNCTION(DLevelCompatibility, SetThingZ)
|
|||
PARAM_INT(thing);
|
||||
PARAM_FLOAT(z);
|
||||
|
||||
if ((unsigned)thing < MapThingsConverted.Size())
|
||||
if ((unsigned)thing < maploader->MapThingsConverted.Size())
|
||||
{
|
||||
MapThingsConverted[thing].pos.Z = z;
|
||||
maploader->MapThingsConverted[thing].pos.Z = z;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -408,9 +410,9 @@ DEFINE_ACTION_FUNCTION(DLevelCompatibility, SetThingFlags)
|
|||
PARAM_INT(thing);
|
||||
PARAM_INT(flags);
|
||||
|
||||
if ((unsigned)thing < MapThingsConverted.Size())
|
||||
if ((unsigned)thing < maploader->MapThingsConverted.Size())
|
||||
{
|
||||
MapThingsConverted[thing].flags = flags;
|
||||
maploader->MapThingsConverted[thing].flags = flags;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -422,11 +424,11 @@ DEFINE_ACTION_FUNCTION(DLevelCompatibility, SetVertex)
|
|||
PARAM_FLOAT(x);
|
||||
PARAM_FLOAT(y);
|
||||
|
||||
if (vertex < level.vertexes.Size())
|
||||
if (vertex < maploader->vertexes.Size())
|
||||
{
|
||||
level.vertexes[vertex].p = DVector2(x, y);
|
||||
maploader->vertexes[vertex].p = DVector2(x, y);
|
||||
}
|
||||
ForceNodeBuild = true;
|
||||
maploader->ForceNodeBuild = true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -438,16 +440,16 @@ DEFINE_ACTION_FUNCTION(DLevelCompatibility, SetLineSectorRef)
|
|||
PARAM_UINT(sectoridx);
|
||||
|
||||
if ( sideidx < 2
|
||||
&& lineidx < level.lines.Size()
|
||||
&& sectoridx < level.sectors.Size())
|
||||
&& lineidx < maploader->lines.Size()
|
||||
&& sectoridx < maploader->sectors.Size())
|
||||
{
|
||||
line_t *line = &level.lines[lineidx];
|
||||
line_t *line = &maploader->lines[lineidx];
|
||||
side_t *side = line->sidedef[sideidx];
|
||||
side->sector = &level.sectors[sectoridx];
|
||||
side->sector = &maploader->sectors[sectoridx];
|
||||
if (sideidx == 0) line->frontsector = side->sector;
|
||||
else line->backsector = side->sector;
|
||||
}
|
||||
ForceNodeBuild = true;
|
||||
maploader->ForceNodeBuild = true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -37,9 +37,10 @@ struct FMD5HashTraits
|
|||
};
|
||||
|
||||
extern TMap<FMD5Holder, FCompatValues, FMD5HashTraits> BCompatMap;
|
||||
class MapLoader;
|
||||
|
||||
void ParseCompatibility();
|
||||
FName CheckCompatibility(MapData *map);
|
||||
void SetCompatibilityParams(FName);
|
||||
void SetCompatibilityParams(MapLoader *ml, FName checksum);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1374,7 +1374,7 @@ void MapLoader::LoadThings (MapData * map)
|
|||
int lumplen = map->Size(ML_THINGS);
|
||||
int numthings = lumplen / sizeof(mapthing_t);
|
||||
|
||||
TArray<uint8_t> mtp;
|
||||
TArray<uint8_t> mtp(lumplen, true);
|
||||
map->Read(ML_THINGS, mtp.Data());
|
||||
auto mt = (mapthing_t*)mtp.Data();
|
||||
|
||||
|
@ -1467,7 +1467,7 @@ void MapLoader::LoadThings2 (MapData * map)
|
|||
MapThingsConverted.Resize(numthings);
|
||||
FMapThing *mti = &MapThingsConverted[0];
|
||||
|
||||
TArray<uint8_t> mtp;
|
||||
TArray<uint8_t> mtp(lumplen, true);
|
||||
map->Read(ML_THINGS, mtp.Data());
|
||||
auto mth = (mapthinghexen_t*)mtp.Data();
|
||||
|
||||
|
@ -1488,7 +1488,7 @@ void MapLoader::LoadThings2 (MapData * map)
|
|||
mti[i].SkillFilter = MakeSkill(mti[i].flags);
|
||||
mti[i].ClassFilter = (mti[i].flags & MTF_CLASS_MASK) >> MTF_CLASS_SHIFT;
|
||||
mti[i].flags &= ~(MTF_SKILLMASK|MTF_CLASS_MASK);
|
||||
if (level->flags2 & LEVEL2_HEXENHACK)
|
||||
if (level && (level->flags2 & LEVEL2_HEXENHACK))
|
||||
{
|
||||
mti[i].flags &= 0x7ff; // mask out Strife flags if playing an original Hexen map.
|
||||
}
|
||||
|
|
|
@ -175,6 +175,7 @@ public:
|
|||
void SetRenderSector();
|
||||
void FixMinisegReferences();
|
||||
void FixHoles();
|
||||
void SetCompatibilityParams(FName checksum);
|
||||
|
||||
void ParseTextMap(MapData *map, FMissingTextureTracker &missingtex);
|
||||
|
||||
|
|
|
@ -49,10 +49,6 @@
|
|||
#include "m_misc.h"
|
||||
#include "g_levellocals.h"
|
||||
|
||||
// should be moved into the map loader later but for now it is referenced from too many parts elsewhere.
|
||||
extern TArray<FMapThing> MapThingsConverted;
|
||||
|
||||
|
||||
CVAR(Bool, gl_cachenodes, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
||||
CVAR(Float, gl_cachetime, 0.6f, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
||||
|
||||
|
|
|
@ -279,7 +279,6 @@ void MapLoader::VavoomSlope(sector_t * sec, int id, const DVector3 &pos, int whi
|
|||
void MapLoader::SetSlopesFromVertexHeights()
|
||||
{
|
||||
TMap<int, double> vt_heights[2];
|
||||
FMapThing *mt;
|
||||
bool vt_found = false;
|
||||
|
||||
for (unsigned i=0;i<MapThingsConverted.Size(); i++)
|
||||
|
|
|
@ -563,6 +563,7 @@ void P_SetupLevel (const char *lumpname, int position, bool newGame)
|
|||
MapLoader maploader(level, &tagManager);
|
||||
maploader.maptype = level.maptype;
|
||||
maploader.ForceNodeBuild = gennodes;
|
||||
maploader.level = &level;
|
||||
|
||||
if (ib_compatflags & BCOMPATF_REBUILDNODES)
|
||||
{
|
||||
|
@ -597,7 +598,7 @@ void P_SetupLevel (const char *lumpname, int position, bool newGame)
|
|||
}
|
||||
times[0].Unclock();
|
||||
|
||||
SetCompatibilityParams(checksum);
|
||||
maploader.SetCompatibilityParams(checksum);
|
||||
|
||||
maploader.LoopSidedefs (true);
|
||||
|
||||
|
|
|
@ -126,11 +126,6 @@ enum
|
|||
// namespace for each game
|
||||
};
|
||||
|
||||
void SpawnMapThing(int index, FMapThing *mt, int position);
|
||||
extern bool ForceNodeBuild;
|
||||
extern TArray<FMapThing> MapThingsConverted;
|
||||
|
||||
|
||||
#define CHECK_N(f) if (!(namespace_bits&(f))) break;
|
||||
|
||||
|
||||
|
@ -1967,7 +1962,7 @@ public:
|
|||
{
|
||||
Printf ("Removing 0-length line %d\n", i+skipped);
|
||||
ParsedLines.Delete(i);
|
||||
ForceNodeBuild = true;
|
||||
maploader->ForceNodeBuild = true;
|
||||
skipped++;
|
||||
}
|
||||
else
|
||||
|
@ -2134,10 +2129,10 @@ public:
|
|||
FMapThing th;
|
||||
unsigned userdatastart = maploader->MapThingsUserData.Size();
|
||||
ParseThing(&th);
|
||||
MapThingsConverted.Push(th);
|
||||
maploader->MapThingsConverted.Push(th);
|
||||
if (userdatastart < maploader->MapThingsUserData.Size())
|
||||
{ // User data added
|
||||
maploader->MapThingsUserDataIndex[MapThingsConverted.Size()-1] = userdatastart;
|
||||
maploader->MapThingsUserDataIndex[maploader->MapThingsConverted.Size()-1] = userdatastart;
|
||||
// Mark end of the user data for this map thing
|
||||
FUDMFKey ukey;
|
||||
ukey.Key = NAME_None;
|
||||
|
|
Loading…
Reference in a new issue