- Fixed some functions that were declared as taking size_t's but defined as taking
unsigned ints.
- Added a dummy object to delete sound environments on exit.
- Fixed: FWarpTexture did not delete its Spans when destroyed.
- Changed wadclusterinfos and wadlevelinfos arrays into TArrays.
- Added the TypeInfo::AutoTypeInfoPtr for TypeInfo::m_RuntimeActors so they can
be automatically deleted.
- Changed TypeInfo::m_Types into a TArray so it will be automatically deleted
on exit.
- Fixed: TArray::Resize() did not deconstruct entries when shrinking the array.
- Changed TArray::Push() so that it calls Grow() instead of duplicating the growth
calculations itself.
- Calling TArray::Grow() for a small amount when the array is short should grow it
a bit more than it was doing.
SVN r76 (trunk)
actually work.
- Turned the list of TabCommands into a TArray because I saw lots of console
commands in the memory leak report at exit. Then I realized those were actually
key bindings, so I changed the Bindings and DoubleBindings arrays into FString
arrays.
- Fixed: FStringCVar was missing a destructor.
- Added TArray::Insert().
- Fixed: TArray::Delete() used memmove().
- Renamed Malloc(), Realloc(), and Calloc() to M_Malloc(), M_Realloc(), and
M_Calloc() so that the debug versions can be defined as macros.
- Enabled the CRT's memory leak detection in WinMain().
- Moved contents of PO_DeInit() into P_FreeLevelData().
- Removed "PolyBlockMap = NULL;" from P_SetupLevel(), because the P_FreeLevelData()
call it makes next does the exact same thing, but also freeing it if needed.
- Fixed: Unneeded memcpy in UnpackUserCmd() when ucmd and basis are the same
SVN r75 (trunk)
its tiles are loaded from the same directory.
- RFF files now load their entire directories into the lumplist.
- Added char * and const char * type coversions for FString, so FStrings can be
freely passed to functions expecting C strings. (Except varargs functions,
which still require manually fetching the C string out of it.)
- Renamed the name class to FName.
- Renamed the string class to FString to emphasize that it is not std::string.
SVN r74 (trunk)
- Removed doom.x, heretic.x and strife.x from the SVN repository. These
are generated files.
- Fixed: A_PainDie has to check whether a valid target exists before
calling IsFriend.
- Fixed: FDecalLib::FindAnimator needs a signed counter to work properly.
May 1, 2006 (Changes by Graf Zahl)
- Added support for game specific pickup messages, if only to be able
to define Raven's invulnerability item in DECORATE.
- Removed A_TreeDeath because it is no longer used.
- Fixed: When picking up a PowerupGiver for an active powerup the
blend color and the duration were transferred to a temorary item
and never took effect. They have to be trnasferred to the newly created
powerup item before trying to give it to the player, not afterward.
- Made the colormap of the InvulnerabilitySphere item specific.
The base power class still needs to have its color adjusted
per game though and since Raven's invulnerability item is used in both
Hexen and Heretic it can't define its own colormap/blend.
- Separated the invulnerability colormaps from the game being played
and made them item specific. They can also be specified as regular
blend colors in DECORATE now.
- Converted a_hereticarmor.cpp and most of a_doomartifacts.cpp,
a_hereticartifacts.cpp and a_heretickeys.cpp to DECORATE.
- Changed the Soulsphere to be a real health item with the Dehacked
modifications made in d_dehacked.cpp as for most other items which
need to be adjusted.
- Added IF_BIGPOWERUP flag to AInventory to expose the RESPAWN_SUPER
dmflag to DECORATE. Also removed the now obsolete ShouldRespawn methods
from AInvulnerabilitySphere and ABlurSphere.
- Converted a_splashes.cpp to DECORATE.
- Converted most of a_debris.cpp to DECORATE.
SVN r73 (trunk)
- Fixed: StreamSong::SetVolume should check the m_stream pointer. This can
happen when a TimiditySong doesn't use FMOD and outputs the sound itself.
- Fixed: 'use' sector actions were using the incorrect sector on several
occasions.
- Added a wi_noautostartmap CVAR and a noautostartmap intermission option
that force the user to manually end the 'entering level' page.
SVN r70 (trunk)
- Added multiple-choice sound sequences. These overcome one of the major
deficiences of the Hexen-inherited SNDSEQ system while still being Hexen
compatible: Custom door sounds can now use different opening and closing
sequences, for both normal and blazing speeds.
- Added a serializer for TArray.
- Added a countof macro to doomtype.h. See the1's blog to find out why
it's implemented the way it is.
<http://blogs.msdn.com/the1/articles/210011.aspx>
- Added a new method to FRandom for getting random numbers larger than 255,
which lets me:
- Fixed: SNDSEQ delayrand commands could delay for no more than 255 tics.
- Fixed: If you're going to have sector_t.SoundTarget, then they need to
be included in the pointer cleanup scans.
- Ported back newer name code from 2.1.
- Fixed: Using -warp with only one parameter in Doom and Heretic to
select a map on episode 1 no longer worked.
- New: Loading a multiplayer save now restores the players based on
their names rather than on their connection order. Using connection
order was sensible when -net was the only way to start a network game,
but with -host/-join, it's not so nice. Also, if there aren't enough
players in the save, then the extra players will be spawned normally,
so you can continue a saved game with more players than you started it
with.
- Added some new SNDSEQ commands to make it possible to define Heretic's
ambient sounds in SNDSEQ: volumerel, volumerand, slot, randomsequence,
delayonce, and restart. With these, it is basically possible to obsolete
all of the $ambient SNDINFO commands.
- Fixed: Sound sequences would only execute one command each time they were
ticked.
- Fixed: No bounds checking was done on the volume sound sequences played at.
- Fixed: The tic parameter to playloop was useless and caused it to
act like a redundant playrepeat. I have removed all the logic that
caused playloop to play repeating sounds, and now it acts like an
infinite sequence of play/delay commands until the sequence is
stopped.
- Fixed: Sound sequences were ticked every frame, not every tic, so all
the delay commands were timed incorrectly and varied depending on your
framerate. Since this is useful for restarting looping sounds that got
cut off, I have not changed this. Instead, the delay commands now
record the tic when execution should resume, not the number of tics
left to delay.
SVN r57 (trunk)
partially because the background patch has to be drawn always to
overwrite the old display.
- Fixed: Giving a health item to a non-player caused a crash.
- Added a compatibility option to limit deh.MaxHealth to the health bonus.
Originally this value wasn't used for health packs. Doing this was a bug
in Boom but since there's quite a few maps out there which require
Boom's altered behavior it has to be compatibility optioned.
- Fixed: The health bonus's max health must be defined by deh.MaxHealth,
not deh.MaxSoulsphere. To achieve this deh.MaxHealth's handling had to
be altered because it has to default to 100.
- Fixed: ZDBSP created incorrect side references with compressed sidedefs
and both sidedefs of a linedef being the same. This only affects the
external tool because the internal node builder is run after uncompressing
the sidedefs.
- Added Jim's latest makefile.linux.
- Added a consistency check to the PNAMES loader because one crash log
indicated that it crashed due to a corrupt PNAMES lump.
- Brought back the sector based sound target handling as a compatibility
option. This radical change just broke far too many maps that depend
on the original behavior. Strife's special AI functions are excluded
though because they work better with the new method.
SVN r56 (trunk)
of sync becase the RNG seed was being altered during recording but not
during playback. This was caused by an inappropriate fix for a similar
problem: -record calls G_InitNew() before it actually starts recording
the demo, but -playdemo calls G_InitNew() after it starts playback. So
the rngseed stored in the demo was already altered. The correct thing
to do is not to prevent the rngseed from changing during playback but
to move the call to G_InitNew() after the call to G_BeginRecording().
- Fixed: After respawning in a demo, demo playback was prematurely
terminated.
SVN r50 (trunk)
returning from one function to another function when the function that
was called was used as part of an expression.
- Fixed: Using Thing_Hate with arg0 (hater) set to 0 from an open script
could crash.
- Fixed: Some items along ledges in Hexen's MAP32 (Orchard of Lamentations)
appeared at the bottom of the ledge (and consequently inside it) instead
of on top of it because the items were placed directly on the lines.
AActor::LinkToWorldForMapThing() needs to use the original R_PointOnLineSide()
code to handle situations like this. Previously, it just used the original
code for straight horizontal/vertical lines and used the new code for
diagonal lines.
- Fixed: FWadCollection::MergeLumps() used in incorrect realloc.
- Fixed: FPlayList::NextLine() did not properly handle blank lines in the
playlist.
- Changed: Decals now use lightweight thinkers instead of actors. (76 bytes
versus 396, so you save 320k if you have 1024 decals present.)
- Fixed: Wads added with pullin were loaded immediately after the IWAD.
Exec files are now processed immediately before -file but after autoloading
wads in D_DoomMain().
- Fixed: sdl/i_system.h unconditionally defined SHARE_DIR, preventing
redefinition from the command line.
- Fixed: The standard way to include SDL.h is <SDL.h>, not <SDL/SDL.h>.
- Fixed: Returned FActiveInterpolation::HashKey()'s return type to size_t,
avoiding a pointer truncation warning.
SVN r30 (trunk)