- VC++ doesn't seem to like the TArray serializer so I added a workaround

to be able to save the 3dMidtex attachment info.
- Fixed: The TArray serializer needs to be declared as a friend of TArray
  in order to be able to access its fields.
- Since there are no backwards compatibility issues due to savegame version
  bumping I closed all gaps in the level flag set.
- Bumped min. Savegame version and Netgame version for 3dMidtex related
  changes.
- Changed Jump and Crouch DMFlags into 3-way switches:
  0: map default, 1: off, 2: on. Since I needed new bits the rest of
  the DMFlag bit values had to be changed as a result.
- fixed: PTR_SlideTraverse didn't check ML_BLOCKMONSTERS for sliding
  actors without MF3_NOBLOCKMONST.
- Added MAPINFO commands 'checkswitchrange' and 'nocheckswitchrange'
  that can enable or disable switch range checking globally per map.
- Changed ML_3DMIDTEX to force ML_CHECKSWITCHRANGE.
- Added a ML_CHECKSWITCHRANGE flag which allows checking whether the 
  player can actually reach the switch he wants to use.
- Made DActiveButton::EWhere global so that I can use it outside thr
  DActiveButton class.

March 17, 2008 (Changes by Graf Zahl)
- Changed P_LineOpening to pass its result in a struct instead of global
  variables.
- Added Eternity's 3DMIDTEX feature (no Eternity code used though.)
  It should be feature complete with the exception of the ML_BLOCKMONSTERS
  flag handling. That particular part of Eternity's implementation is
  sub-optimal because it hijacks an existing flag and doesn't seem to make
  much sense to me. Maybe I'll implement it as a separate flag later.


SVN r810 (trunk)
This commit is contained in:
Christoph Oelckers 2008-03-18 18:18:18 +00:00
commit 7c87465d35
30 changed files with 2361 additions and 5243 deletions

View file

@ -333,6 +333,8 @@ void P_SerializeWorld (FArchive &arc)
<< sec->FloorSkyBox << sec->CeilingSkyBox
<< sec->ZoneNumber
<< sec->oldspecial;
sec->e->Serialize(arc);
if (arc.IsStoring ())
{
arc << sec->ColorMap->Color
@ -406,6 +408,48 @@ void P_SerializeWorld (FArchive &arc)
}
}
#if 0
// VC++ produces a linker error when using the templated << operator
void extsector_t::Serialize(FArchive &arc)
{
arc << Midtex.Floor.AttachedLines
<< Midtex.Floor.AttachedSectors
<< Midtex.Ceiling.AttachedLines
<< Midtex.Ceiling.AttachedSectors;
}
#else
// Remove this when the problem above has been sorted out.
template<class T>
void SaveArray (FArchive &arc, TArray<T> &self)
{
unsigned int i;
if (arc.IsStoring())
{
arc.WriteCount(self.Size());
}
else
{
DWORD numStored = arc.ReadCount();
self.Resize(numStored);
}
for (i = 0; i < self.Size(); ++i)
{
arc << self[i];
}
}
void extsector_t::Serialize(FArchive &arc)
{
SaveArray(arc, Midtex.Floor.AttachedLines);
SaveArray(arc, Midtex.Floor.AttachedSectors);
SaveArray(arc, Midtex.Ceiling.AttachedLines);
SaveArray(arc, Midtex.Ceiling.AttachedSectors);
}
#endif
//
// Thinkers