Commit graph

318 commits

Author SHA1 Message Date
Christoph Oelckers
1957659b1b - Restructured the action function interface to remove the dependence on
the global CallingState variable.


SVN r1163 (trunk)
2008-08-12 14:30:07 +00:00
Randy Heit
942c8f5e87 - SBARINFO patch: "Apparently my attempts to reduce copy and paste failed." -- Blzut3
SVN r1160 (trunk)
2008-08-12 03:19:35 +00:00
Christoph Oelckers
511c9366f7 - Macro-fied all access to action functions.
SVN r1149 (trunk)
2008-08-10 22:48:37 +00:00
Christoph Oelckers
1983b5c586 - Changed action function definition so that they have to be defined with a
DEFINE_ACTION_FUNCTION macro. This should make it easier to improve the
  whole system.


SVN r1148 (trunk)
2008-08-10 20:48:55 +00:00
Christoph Oelckers
f4c07c45ec - Removed DECORATE's ParseClass because it was only used to add data to fully
internal actor classes which no longer exist.
- Changed the state structure so that the Tics value doesn't need to be hacked
  into misc1 with SF_BIGTIC anymore. 
- Changed sprite processing so that sprite names are converted to indices 
  during parsing so that an additional postprocessing step is no longer needed.
- Fixed: Sprite names in DECORATE were case sensitive.
- Exported AActor's defaults to DECORATE and removed all code for the 
  internal property parser which is no longer needed.


SVN r1146 (trunk)
2008-08-10 14:19:47 +00:00
Christoph Oelckers
023b21a142 - Converted the last of Hexen's inventory items to DECORATE so that I could
export AInventory.
- Added some DECORATE fixes by Gez.

SVN r1138 (trunk)
2008-08-09 17:43:14 +00:00
Christoph Oelckers
ae54e13428 IMPORTANT NOTE: I uncommented some code depending on the missing x86.cpp file to allow this to compile, These changes must be reverted as soon as this file is added (see v_palette.cpp and win32/i_system.cpp.)
- Removed AT_GAME_SET because it's no longer used anywhere.
- Converted the last remaining global classes to DECORATE.
- Fixed: Inventory.PickupFlash requires an class name as parameter not an
  integer. Some Hexen definitions got it wrong.
- Converted Hexen's Pig to DECORATE.
- Replaced the ActorInfo definitions of all internal inventory classes with 
  DECORATE definitions.
- Added option to specify a powerup's duration in second by using a negative
  number.


SVN r1137 (trunk)
2008-08-09 11:35:42 +00:00
Randy Heit
85a6ae7c34 - SBARINFO update:
* Added: The ability to have drawkeybar auto detect spacing.
  * Added: Offset parameter to drawkeybar to allow two key bars with
    different keys.
  * Added: Multi-row/column keybar parameters.  Spacing can also be auto.
    These  defualt to left to right/top to bottom but can be switched.
  * Added: Drawshadow flag to drawnumber.  This will draw a solid color and
    translucent number under the normal number.
  * Added: hexenarmor to drawimage.  This takes a parameter for a hexen
    armor type and will fade the image like the hexen status bar.
  * Added: centerbottom offset to draw(switchable)image.
  * Added: translucent flag to drawinventorybar.
  * Fixed: Accidentally removed flag from DrawTexture that allowed negative
    coordinates to work with fullscreenoffsets.  Hopefully this is the last
    major bug in the fullscreenoffsets system.


SVN r1135 (trunk)
2008-08-09 03:43:29 +00:00
Randy Heit
dda5ddd3c2 - Ported vlinetallasm4 to AMD64 assembly. Even with the increased number of
registers AMD64 provides, this routine still needs to be written as self-
  modifying code for maximum performance. The additional registers do allow
  for further optimization over the x86 version by allowing all four pixels
  to be in flight at the same time. The end result is that AMD64 ASM is about
  2.18 times faster than AMD64 C and about 1.06 times faster than x86 ASM.
  (For further comparison, AMD64 C and x86 C are practically the same for
  this function.) Should I port any more assembly to AMD64, mvlineasm4 is the
  most likely candidate, but it's not used enough at this point to bother.
  Also, this may or may not work with Linux at the moment, since it doesn't
  have the eh_handler metadata. Win64 is easier, since I just need to
  structure the function prologue and epilogue properly and use some
  assembler directives/macros to automatically generate the metadata. And
  that brings up another point: You need YASM to assemble the AMD64 code,
  because NASM doesn't support the Win64 metadata directives.
- Added an SSE version of DoBlending. This is strictly C intrinsics.
  VC++ still throws around unneccessary register moves. GCC seems to be
  pretty close to optimal, requiring only about 2 cycles/color. They're
  both faster than my hand-written MMX routine, so I don't need to feel
  bad about not hand-optimizing this for x64 builds.
- Removed an extra instruction from DoBlending_MMX, transposed two
  instructions, and unrolled it once, shaving off about 80 cycles from the
  time required to blend 256 palette entries. Why? Because I tried writing
  a C version of the routine using compiler intrinsics and was appalled by
  all the extra movq's VC++ added to the code. GCC was better, but still
  generated extra instructions. I only wanted a C version because I can't
  use inline assembly with VC++'s x64 compiler, and x64 assembly is a bit
  of a pain. (It's a pain because Linux and Windows have different calling
  conventions, and you need to maintain extra metadata for functions.) So,
  the assembly version stays and the C version stays out.
- Removed all the pixel doubling r_detail modes, since the one platform they
  were intended to assist (486) actually sees very little benefit from them.
- Rewrote CheckMMX in C and renamed it to CheckCPU.
- Fixed: CPUID function 0x80000005 is specified to return detailed L1 cache
  only for AMD processors, so we must not use it on other architectures, or
  we end up overwriting the L1 cache line size with 0 or some other number
  we don't actually understand.


SVN r1134 (trunk)
2008-08-09 03:13:43 +00:00
Christoph Oelckers
14e94b86e2 - Replaced the ActorInfo definitions of several internal classes with DECORATE definitions
SVN r1133 (trunk)
2008-08-08 22:52:04 +00:00
Christoph Oelckers
ef2c9243c5 - Converted teleport fog and destinations to DECORATE.
- AActor::PreExplode is gone now that the last item that was using it has been converted.
- Converted the Sigil and the remaining things in a_strifeitems.cpp to DECORATE.


SVN r1132 (trunk)
2008-08-08 19:47:18 +00:00
Christoph Oelckers
bd50321357 - Exported Point pushers, CustomSprite and AmbientSound to DECORATE.
SVN r1131 (trunk)
2008-08-08 16:16:40 +00:00
Christoph Oelckers
e010561088 - Changed increased lightning damage for Centaurs into a damage factor.
- Changed PoisonCloud and Lightning special treatment in P_DamageMobj to use damage
  types instead to keep dependencies on specific actor types out of the main engine code.
- Added Korax DECORATE conversion by Gez and a few others by Karate Chris.


SVN r1130 (trunk)
2008-08-08 15:18:23 +00:00
Christoph Oelckers
b695330e90 - Removed FourthWeaponClass and based Hexen's fourth weapons on the generic weapon
pieces.
- Added DECORATE conversions for Hexen's Fighter weapons by Karate Chris.
- Added aWeaponGiver class to generalize the standing AssaultGun.
- converted a_Strifeweapons.cpp to DECORATE, except for the Sigil.


SVN r1129 (trunk)
2008-08-08 10:24:08 +00:00
Christoph Oelckers
6ab69165c7 - Added more DECORATE conversions by Karate Chris.
SVN r1128 (trunk)
2008-08-08 07:40:41 +00:00
Christoph Oelckers
6b3325b358 - Converted the rest of a_strifestuff.cpp to DECORATE.
- Fixed: AStalker::CheckMeleeRange did not perform all checks of AActor::CheckMeleeRange.
  I replaced this virtual override with a new flag MF5_NOVERTICALMELEERANGE so that
  this feature can also be used by other actors.
- Converted Strife's Stalker to DECORATE.
- Converted ArtiTeleport to DECORATE.


SVN r1126 (trunk)
2008-08-07 20:16:07 +00:00
Christoph Oelckers
344f1072a6 - Fixed. The Firedemon was missing a game filter.
SBARINfO update:
- Added: disablegrin, disableouch, disablepain, and disablerampage flags to
  drawmugshot.
- Fixed: LowerHealthCap did not work properly.
- Fixed: Various bugs I noticed in the fullscreenoffsets code.

SVN r1122 (trunk)
2008-08-07 07:17:29 +00:00
Christoph Oelckers
bf281a4372 - Removed AT_GAME_SET(PowerInvulnerable) due to the problems it caused. The two
occurences in the code that depended on it were changed accordingly.
  Invulnerability colormaps are now being set by the items exclusively.
- Changed many checks for the friendly Minotaur to a new flag MF5_SUMMONEDMONSTER
  so that it can hopefully be generalized to be usable elsewhere later.
- Added Gez's submission for converting the Minotaur to DECORATE.


SVN r1120 (trunk)
2008-08-06 19:25:59 +00:00
Christoph Oelckers
3908c71510 (SBARINfO update)
- Added: fullscreenoffsets flag for status bars.  This changes the coordinate
  system to be relative to the top left corner of the screen.  This is useful
  for full screen status bars.
- Changed: drawinventorybar will use the width of artibox or invcurs (strife)
  to determine the spacing.  Let me know if this breaks any released mods.
- Fixed: If a status bar height of 0 was specified in SBarInfo the wrong bar
  would be shown.
- Fixed: If a static inventory bar was used the user still had to press invuse
  in order to get rid of the "overlay".
- Fixed: forcescaled would not work if the height of the bar was 0.
- Added: keyslot to drawswitchableimage.
- Fixed: The transition effects for the log and keys popups were switched.


SVN r1116 (trunk)
2008-08-06 07:38:21 +00:00
Christoph Oelckers
43715c5249 - Added DECORATE conversions for Hexen's Cleric weapons by Karate Chris.
- Added a check to Zipdir that excludes files with a .orig extension. These
  can be left behind by patch.exe and create problems.
- fixed: Unmorphing from chicken caused a crash when reading non-existent
  meta-data strings.


SVN r1112 (trunk)
2008-08-05 16:04:37 +00:00
Christoph Oelckers
d5cc9e01d0 - Converted the PhoenixRod and associated classes to DECORATE to make
the Heretic conversion complete.


SVN r1110 (trunk)
2008-08-04 22:30:45 +00:00
Christoph Oelckers
affd0e5034 - Converted the mace and all related actors to DECORATE and generalized
the spawn function that only spawns one mace per level.
- Moved Mace respawning code into AInventory so that it works properly
  for replacement actors.


SVN r1107 (trunk)
2008-08-03 19:10:48 +00:00
Christoph Oelckers
bf0ee1342c - Cleaned up the new bridge code and exported all related actors to
DECORATE so that the exported code pointers can be used.
- Separated Heretic's and Hexen's invulnerability items for stability 
  reasons.


SVN r1105 (trunk)
2008-08-03 12:00:36 +00:00
Christoph Oelckers
8d3e67ac88 - Added Gez's submission for custom bridge things.
- Fixed: ASpecialSpot must check the array's size before dividing by it.


SVN r1103 (trunk)
2008-08-02 16:17:19 +00:00
Christoph Oelckers
76a0086744 - Fixed: The mugshot drawe ignored the accuracy parameter.
- Fixed: The Alt HUD's weapon drawer didn't check properly for invalid icons.


SVN r1102 (trunk)
2008-08-02 10:51:00 +00:00
Christoph Oelckers
fddf69e950 - Added DECORATE conversions for Hexen's Cleric Mace, Firedemon and fog by
Karate Chris.
- Added several type checks to the weapon slot code.
- Changed: Players no longer respawn in instant death sectors with 
  the 'Respawn where died' flag on.


SVN r1101 (trunk)
2008-08-02 08:38:07 +00:00
Randy Heit
35b40534fe - Fixed: The ouch face fix was lost when SBARINFO mugshot became the only
mugshot present.


SVN r1098 (trunk)
2008-07-31 18:51:15 +00:00
Randy Heit
ff2680baa9 - Removed new warning when using CMake 2.6.
- Fixed compilation of snes_spc on GCC <4.3.
- Fixed compilation of zstring.h on 32-bit MinGW, where SIZE_MAX
  and UINT_MAX are not considered identical by the preprocessor.

SVN r1096 (trunk)
2008-07-31 17:13:21 +00:00
Randy Heit
e15416dc71 - Applied Blzut3's 5:4 SBARINFO patch. (At least I think that's what it's
for.)



SVN r1095 (trunk)
2008-07-25 02:36:25 +00:00
Randy Heit
fb50df2c63 About a week's worth of changes here. As a heads-up, I wouldn't be
surprised if this doesn't build in Linux right now. The CMakeLists.txt
were checked with MinGW and NMake, but how they fair under Linux is an
unknown to me at this time.

- Converted most sprintf (and all wsprintf) calls to either mysnprintf or
  FStrings, depending on the situation.
- Changed the strings in the wbstartstruct to be FStrings.
- Changed myvsnprintf() to output nothing if count is greater than INT_MAX.
  This is so that I can use a series of mysnprintf() calls and advance the
  pointer for each one. Once the pointer goes beyond the end of the buffer,
  the count will go negative, but since it's an unsigned type it will be
  seen as excessively huge instead. This should not be a problem, as there's
  no reason for ZDoom to be using text buffers larger than 2 GB anywhere.
- Ripped out the disabled bit from FGameConfigFile::MigrateOldConfig().
- Changed CalcMapName() to return an FString instead of a pointer to a static
  buffer.
- Changed startmap in d_main.cpp into an FString.
- Changed CheckWarpTransMap() to take an FString& as the first argument.
- Changed d_mapname in g_level.cpp into an FString.
- Changed DoSubstitution() in ct_chat.cpp to place the substitutions in an
  FString.
- Fixed: The MAPINFO parser wrote into the string buffer to construct a map
  name when given a Hexen map number. This was fine with the old scanner
  code, but only a happy coincidence prevents it from crashing with the new
  code
- Added the 'B' conversion specifier to StringFormat::VWorker() for printing
  binary numbers.
- Added CMake support for building with MinGW, MSYS, and NMake. Linux support
  is probably broken until I get around to booting into Linux again. Niceties
  provided over the existing Makefiles they're replacing:
  * All command-line builds can use the same build system, rather than having
    a separate one for MinGW and another for Linux.
  * Microsoft's NMake tool is supported as a target.
  * Progress meters.
  * Parallel makes work from a fresh checkout without needing to be primed
    first with a single-threaded make.
  * Porting to other architectures should be simplified, whenever that day
    comes.
- Replaced the makewad tool with zipdir. This handles the dependency tracking
  itself instead of generating an external makefile to do it, since I couldn't
  figure out how to generate a makefile with an external tool and include it
  with a CMake-generated makefile. Where makewad used a master list of files
  to generate the package file, zipdir just zips the entire contents of one or
  more directories.
- Added the gdtoa package from netlib's fp library so that ZDoom's printf-style
  formatting can be entirely independant of the CRT.

SVN r1082 (trunk)
2008-07-23 04:57:26 +00:00
Christoph Oelckers
a8c283dacd - fixed: Morphing to a class without a face definition crashed.
- Converted all of Heretic's actors except the weapons to DECORATE.
- Added the option to define the ActorInfos for native classes in DECORATE.


SVN r1078 (trunk)
2008-07-21 17:03:30 +00:00
Christoph Oelckers
5cc1b4991c - converted the boss brain to DECORATE.
- added an abstract base class for special map spots that are maintained in 
  lists and rewrote the boss brain, the mace and DSparil to use it.
- fixed: RandomSpawners didn't destroy themselves after finishing their work.


SVN r1076 (trunk)
2008-07-20 14:42:54 +00:00
Christoph Oelckers
5dc42121b7 - Fixed: When Heretic's Mace was replaced by a non-child class A_SpawnMace still
treated it as a mace and wrote into some undefined memory.
- Fixed: A_BishopMissileWeave didn't initialize special2 for proper movement.
- Added a speed parameter to A_SkullAttack.
- Fixed: Black as first or only blood color didn't work.
- Fixed: Sounds played in wi_stuff.cpp and f_finale.cpp need the CHAN_UI flag.
- Fixed: Spawning a player could play the *gasp sound.
- Fixed: SBARINFO's health display didn't scale to the proper maximum.
- Added Skulltag's Teleport_NoStop action special.


SVN r1074 (trunk)
2008-07-19 12:40:10 +00:00
Christoph Oelckers
448b8955c5 - Changed: AInventory::Tick now only calls the super method if the item is not
owned. Having owned inventory items interact with the world is not supposed
  to happen.
- Fixed: case PCD_SECTORDAMAGE in p_acs.cpp was missing a terminating 'break'.
- Fixed: When a weapon is destroyed, its sister weapon must also be destroyed.


SVN r1068 (trunk)
2008-07-05 19:06:30 +00:00
Christoph Oelckers
ac4fb23c35 - last commit was incomplete. Forgot to save 2 files.
SVN r1067 (trunk)
2008-07-05 10:31:36 +00:00
Christoph Oelckers
d2f1515aa6 - Fixed: When a weapon is destroyed, its sister weapon must also be destroyed.
- Added a check for PUFFGETSOWNER to A_BFGSpray.
- Moved the PUFFGETSOWNER check into P_SpawnPuff and removed the limitation
  to players only.
- Fixed: P_SpawnMapThing still checked FMapThing::flags for the class bits 
  instead of FMapThing::ClassFilter.
- Fixed: A_CustomMissile must not let P_SpawnMissile call P_CheckMissileSpawn.
  It must do this itself after setting the proper owner.
- Fixed: CCMD(give) increased the total item count.
- Fixed: A_Stop didn't set the player specific variables to 0.


SVN r1066 (trunk)
2008-07-05 10:17:10 +00:00
Randy Heit
a3e8a0cefd - Removed the S_Sound() variant that allows for pointing the origin at an
arbitrary point. It has been replaced with a variant that takes a polyobject
  as a source, since that was the only use that couldn't be rewritten with the
  other variants. This also fixes the bug that polyobject sounds were not
  successfully saved and caused a crash when reloading the game. Note that
  this is a significant change to how equality of sound sources is determined,
  so some things may not behave quite the same as before. (Which would be a
  bug, but hopefully everything still sounds the same.)


SVN r1059 (trunk)
2008-07-01 04:06:56 +00:00
Randy Heit
9c6e40e192 - Fixed: PickNext/PrevWeapon() did not check for NULL player actors.
SVN r1046 (trunk)
2008-06-24 03:32:28 +00:00
Christoph Oelckers
4ff07b68ee - Added support for ST's QUARTERGRAVITY flag.
- Added a generalized version of Skulltag's A_CheckRailReload function.
- Fixed: DrawImage didn't take 0 as a valid image index.
- Added Gez's RandomSpawner submission with significant changes.
- Added optional blocks for MAPINFO map definitions. ZDoom doesn't use
  this feature itself but it allows other ports based on ZDoom
  to implement their own sets of options without making such a MAPINFO 
  unreadable by ZDoom.


SVN r1044 (trunk)
2008-06-22 09:13:19 +00:00
Christoph Oelckers
b899fbeabe - Fixed: Picking up a weapon would sometimes not activate the grin.
SVN r1043 (trunk)
2008-06-16 23:43:31 +00:00
Christoph Oelckers
a86774fcdd - Changed: Line_SetIdentification will ignore extended parameters when
used in maps defined Hexen style in MAPINFO.


SVN r1042 (trunk)
2008-06-16 22:38:23 +00:00
Christoph Oelckers
8ca7c05e9d - Changed FImageCollection to return translated texture indices so
that animated icons can be done with it.
- Changed FImageCollection to use a TArray to hold its data.
- Fixed: SetChanHeadSettings did an assignment instead of comparing
  the channel ID witg CHAN_CEILING.
- Changed sound sequence names for animated doors to FNames.
- Automatically fixed: DCeiling didn't properly serialize its texture id.
- Replaced integers as texture ID representation with a specific new type
  to track down all potentially incorrect uses and remaining WORDs used
  for texture IDs so that more than 32767 or 65535 textures can be defined.


SVN r1036 (trunk)
2008-06-15 18:36:26 +00:00
Randy Heit
7c40cf9ce0 - Increased the duration of respawn invulnerability by one second.
- DF2_YES_RESPAWN_INVUL and DF_FORCE_RESPAWN now apply to all multiplayer 
  games, not just deathmatch, without the need for turning on
  alwaysapplydmflags.
- Fixed: DF2_YES_RESPAWN_INVUL only worked in deathmatch, even with
  alwaysapplydmflags turned on.
- Fixed: DF_COOP_LOSE_ARMOR did not empty the starting armor items.


SVN r1035 (trunk)
2008-06-15 03:46:04 +00:00
Randy Heit
9e42cdaf08 - Replaced the naive area sound implementation with one that takes into
consideration the size and shape of the sector producing the sound. See
  the lifts on Doom 2 MAP30 and compare with previous versions.
- Fixed: The stop sound for sector-based sound sequences was not played with
  the CHAN_AREA flag.
- Removed the distinction between S_Sound() and S_SoundID() functions. Use
  S_Sound() for both names and IDs from now on.


SVN r1034 (trunk)
2008-06-15 02:25:09 +00:00
Christoph Oelckers
70ff0e8d2e - Fixed: SBARINFO's popup code used 1-based indices to address a C++ array.
SVN r1030 (trunk)
2008-06-11 23:12:27 +00:00
Christoph Oelckers
4e7a6c54ef - Added scaling to double size for idmypos display.
- Changed: Players don't telefrag when they are spawned now but after all
  actors have been spawned to avoid accidental voodoo doll telefragging.
- Fixed: ACS scripts for non-existent maps were started on the current one.
- Added a 'wallbouncefactor' property to AActor.
- Reverted forceunderwater change from r1026 and fixed the problem for real:
  SECF_FORCEDUNDERWATER only has meaning when coming from the heightsec.
  So the initial check of the current sector in AActor::UpdateWaterLevel
  must only check for SECF_UNDERWATER, not SECF_UNDERWATERMASK.

SVN r1027 (trunk)
2008-06-10 09:16:01 +00:00
Randy Heit
000f3e0ef1 - Fixed: There was still an inventory bar check in FMugShot::GetFace() after
separating it from DDoomStatusBar.


SVN r1024 (trunk)
2008-06-06 23:41:05 +00:00
Christoph Oelckers
165875c7df - Fixed: Drawing the amount of an inventory item in the player's inventory did
not work
- Added: PowerupTime to drawnumber and drawbar.  You must specify a
  powerupgiver.  Although drawnumber goes in seconds the powerup has left
  drawbar will use ticks for extra accuracy.
- I have increased cross-port compatibility with Skulltag.  If an unknown
  game mode is provided for sbarinfo's gamemode command it will ignore it and
  continue.


SVN r1015 (trunk)
2008-06-03 07:21:11 +00:00
Christoph Oelckers
8d5d742287 - Fixed: Ouch state was far to easy to achieve.
SVN r1013 (trunk)
2008-06-01 22:41:46 +00:00
Christoph Oelckers
71b0d4d074 - Renamed player_s to player_t globally to get rid of the duplicate names for this class.
SVN r1011 (trunk)
2008-06-01 07:52:33 +00:00
Randy Heit
4850a98c13 - Consolidated the mug shot code shared by DSBarInfo and DDoomStatusBar
into a single place.
- Fixed: Setting an invalid mug shot state crashed the game.
- Fixed my attempts to be clever with strings yesterday.


SVN r1009 (trunk)
2008-06-01 03:35:47 +00:00
Randy Heit
6a264daa04 - Fixed: DDoomStatusBar::UpdateState() needed the same fix as DSBarInfo::updateState(), since it
received a code infusion from there.

SVN r1007 (trunk)
2008-05-31 03:49:56 +00:00
Randy Heit
496e28aa7a - Fixed: DSBarInfo::updateState() sprung leaks and didn't allocate enough
space for the fullStateName string.


SVN r1003 (trunk)
2008-05-31 01:30:53 +00:00
Randy Heit
51adf36efc - Reverted unintended change to sbarinfo_display.cpp that I had forgotten about.
SVN r998 (trunk)
2008-05-30 01:06:01 +00:00
Randy Heit
ee1039f04e - Fixed building with libdumb on Linux.
SVN r997 (trunk)
2008-05-30 01:02:35 +00:00
Christoph Oelckers
ab6b5e337e - Reworked a few options that previously depended on LEVEL_HEXENFORMAT
(actors being forced to the ground by instantly moving sectors, strife
  railing handling and shooting lines with a non-zero but unassigned tag.)
  With UDMF such semantics have to be handled diffently. 
- finalized UDMF 1.0 implementation.
- Added Martin Howe's latest morph update.


SVN r987 (trunk)
2008-05-22 19:35:38 +00:00
Randy Heit
befdd0b41f - Fixed: With hardware 2D, the console and menu need not reimplement palette
flashes to ensure their visibility.
- Fixed: DFlashFader::Destroy() did not call its super method.


SVN r985 (trunk)
2008-05-21 01:47:34 +00:00
Randy Heit
34f6aa8ad3 - Fixed: If a player was morphed into a class with a taller view height,
their perceived view height would not change until they walked up a step.


SVN r984 (trunk)
2008-05-21 01:30:00 +00:00
Randy Heit
5b8055bfc7 - Since KDIZD is the only mapset I know of that used reverb, and it didn't
define any new ones of its own, I'm pre-emptively renaming the SNDEAX lump
  to REVERBS to remove any possible misunderstanding that this is something
  that requires EAX hardware support. (Ideally, it would have been REVERBDEF,
  but that's 10 characters long.) The eaxedit console command has also been
  renamed to reverbedit for the same reason.
- Fixed: The Palette part of FRemapTable was not initialized with alpha values
  other than 0. I'm not sure if it would be better to fix this in the game
  palette that it copies from or not, but right now, they get set
  unconditionally to 255.

SVN r983 (trunk)
2008-05-20 04:02:49 +00:00
Randy Heit
01e1295c50 - Replaced all instances of "flags +=" in sbarinfo_parser.cpp with "flags |="
so that using the same flag multiple times will not have unexpected results.
- sbarinfo update #21
  * Added: sigil image type to correctly draw the sigil's icon.
  * Added: Strife inventory bar style.  This is the only style that is radically
    different from the others.  First of all it changes the SELECTBO to be
    INVCURS and draws it before the icons.  Each box is changed to have a width
    of 35 pixels instead of 31 pixels.  And the INVCURS graphic is drawn at
    (x-6, y-2).
  * Added: whennnotzero flag to drawnumber which will cause it to draw nothing if
    the value is 0.
  * Fixed: New mugshot code would not leave the god state when it was supposed to
    enter the rampage state.
  * Fixed: The ouch state was mostly broken.


SVN r981 (trunk)
2008-05-19 23:07:08 +00:00
Christoph Oelckers
35ea94c014 May 18, 2008 (SBarInfo Update #20)
- Added: hasweaponpiece command to check for custom weapon pieces.
- Added: usessecondaryammo command to check if the current weapon has a second
  ammo type.
- Most of SBarInfo's mugshot scripting can be used with the default Doom status
  bar.
- Fixed: By default drawmugshot would never come out of normal god mode state.
  In addition the state change to and from god mode was not quite as responsive
  as the original code.

SVN r980 (trunk)
2008-05-18 15:48:03 +00:00
Randy Heit
ff4446a3a0 - Fixed: FBarShader::GetColumn() passed incorrect information to the software
renderer for horizontal bars.


SVN r972 (trunk)
2008-05-14 23:39:40 +00:00
Randy Heit
a0d5463b49 - Added the C99 printf size specifiers 't' (ptrdiff_t) and 'z' (size_t) to
FString::Format() so that I can fix all the problem printf strings that a
  64-bit GCC compile finds.



SVN r968 (trunk)
2008-05-14 03:39:30 +00:00
Christoph Oelckers
6c21616c85 - Changed: HIRESTEX 'define' textures now replace existing textures
of type MiscPatch with the same name.
- Added UDMF line trigger types MonsterUse and MonsterPush.
- Separated skill and class filter bits from FMapThing::flags so that
  UDMF can define up to 16 of each. Also separated easy/baby and
  hard/nightmare and changed default MAPINFO definitions.
- Changed: Crosshair drawing uses the current player class's default health instead
  of 100 to calculate the color for the crosshair.
- Added SECF_NOFALLINGDAMAGE flag plus Sector_ChangeFlags to set it. Also separated
  all user settable flags from MoreFlags into their own Flags variable.


SVN r964 (trunk)
2008-05-11 21:16:32 +00:00
Christoph Oelckers
d5563fe478 - Changed all thing coordinates that were stored as shorts into fixed_t.
- Separated mapthing2_t into mapthinghexen_t and the internal FMapThing so
  that it is easier to add new features in the UDMF map format.
- Added some initial code to read UDMF maps.


SVN r956 (trunk)
2008-05-08 08:06:26 +00:00
Christoph Oelckers
60b236fdc5 - added latest SBARINFO patch.
SVN r946 (trunk)
2008-04-27 07:06:26 +00:00
Christoph Oelckers
c27ee7faa1 - Fixed compiler warnings and errors in SBARINFO update.
SVN r940 (trunk)
2008-04-25 09:50:43 +00:00
Christoph Oelckers
0d29164522 SBarinfo Update #18
- Simplified the DrawGraphic function in sbarinfo_display.cpp
- Added xOffset, yOffset, and alpha to every drawing function in
  sbarinfo_display.cpp.  So Strife popups can be handeled better and allow for
  other effects (translucent bars?).  I'm thinking about making a struct for
  these five (also x and y) arguments so that the argument lists don't become a
  mess.
- Changed DRAWIMAGE in sbarinfo_display.cpp to not use so many calls to
  DrawGraphic.
- DrawKeyBar wasn't using screen->DrawTexture.
- Added a Fade transition for popups.  It takes two args fade in rate and fade
  out rate.  Both are floats (1.0 = 1 tic to complete 0.5 = 2 tics to complete
  and so on).
- Added a translucency arg to statusbars.  1.0 = opaque and 0.0 = invisible.

SVN r939 (trunk)
2008-04-25 09:40:08 +00:00
Christoph Oelckers
24f4c93803 - a_flashfader wasn't saved for last commit.
SVN r936 (trunk)
2008-04-24 17:24:52 +00:00
Christoph Oelckers
29c6615e50 - Fixed: DFlashFader did some operations in its destructor that had to be moved
to its Destroy method.
- Fixed: Dropped weapons from dying players should not double ammo. 

SVN r935 (trunk)
2008-04-24 17:17:46 +00:00
Randy Heit
d8166e0e5e - Fixed: MugShotFrame::getTexture() allocated space for the sprite name that
it never freed. I'm not sure it's a good assumption that 9 characters is
  always long enough, either, since you can have longer file names than that
  inside a zip.
- Fixed: DSBarInfo::DrawGem() crashed if chain or gem was NULL.


SVN r929 (trunk)
2008-04-20 00:23:07 +00:00
Randy Heit
eb1e17db06 - Fixed: The music stream needs to zero the FMOD_REVERB_CHANNELPROPERTIES
before sending it to Channel::getReverbProperties().
- Fixed: The earthquake effect did not play its sound as an actual looping
  sound. I'm a bit surprised this only recently started causing problems.


SVN r923 (trunk)
2008-04-18 03:26:48 +00:00
Christoph Oelckers
5d0dc65044 - Added Martin Howe's fixes for morphing and DECORATE function prototypes.
- Minor fixes in texture code.


SVN r922 (trunk)
2008-04-17 20:34:58 +00:00
Christoph Oelckers
52eeff6db8 - Emergency morph fix
SVN r917 (trunk)
2008-04-15 23:03:28 +00:00
Christoph Oelckers
b2bfad0c50 - Added translation support to multipatch textures. Incomplete and not tested yet!
- Added Martin Howe's morph weapon update.


SVN r916 (trunk)
2008-04-15 22:17:30 +00:00
Christoph Oelckers
adc9f090ef - Added rotation 90° angles only) and mirroring to the Multipatch texture
composition code.
- Fixed: The game crashed when a level was ended while a player was morphed
  by a powerup. 

SVN r912 (trunk)
2008-04-14 18:51:05 +00:00
Christoph Oelckers
6b2a7b8b03 - Added Martin Howe's morph system update.
- Added support for defining composite textures in HIRESTEX. It is not fully tested
  and right now can't do much more than the old TEXTUREx method.
- Added a few NULL pointer checks to the texture code.
- Made duplicate class names in DECORATE non-fatal. There is really no stability
  concern here and the worst that can happen is that the wrong actor is spawned.
  This was a constant hassle when testing with WADs that contain duplicate resources.


SVN r905 (trunk)
2008-04-12 15:31:18 +00:00
Christoph Oelckers
a0356a45cd SBarInfo Update #17:
- Fixed: SBarInfo tried to calculate scaled offsets on unscaled status bars.
- Added: createpopup to SBarInfo.  No we don't have custom popups yet.  It only
  defines the transition effect.  Currently none or slideinbottom.
- Made the first argument of DrawMugShot optional (think of it as an overloaded
  function).  The use of the first argument is deprecated due to the event of
  per player class faces.
- More changes from DrawImage to screen->DrawTexture().  I guess I didn't get
  them all just yet.


SVN r897 (trunk)
2008-04-09 07:32:33 +00:00
Christoph Oelckers
4dc1b9579e - Removed the check for Heretic when playing *evillaugh when using the
Chaos Device. This sound is not defined by the other games so it won't
  play by default.
- Added MORPH_UNDOBYTOMEOFPOWER and MORPH_UNDOBYCHAOSDEVICE flags
  for the morph style so that the special behavior of these two items
  can be switched on and off. 

SVN r890 (trunk)
2008-04-08 09:52:50 +00:00
Christoph Oelckers
a424a2f2a9 - Added Martin Howe's morph system enhancement.
SVN r889 (trunk)
2008-04-08 08:53:42 +00:00
Christoph Oelckers
ebd17de30a - Fixed: PIT_FindFloorCeiling required tmx and tmy to be set but
P_FindFloorCeiling never did that.
- Merged Check_Sides and PIT_CrossLine into A_PainShootSkull.
- Replaced P_BlockLinesIterator with FBlockLinesIterator in all places it was
  used. This also allowed to remove all the global variable saving in
  P_CreateSecNodeList.
- Added a new FBlockLinesIterator class that doesn't need a callback
  function because debugging the previous bug proved to be a bit annoying
  because it involved a P_BlockLinesIterator loop.
- Fixed: The MBF code to move monsters away from dropoffs did not work as 
  intended due to some random decisions in P_DoNewChaseDir. When in the
  avoiding dropoff mode these are ignored now. This should cure the problem
  that monsters hanging over a dropoff tended to drop down. 

SVN r887 (trunk)
2008-04-06 17:33:43 +00:00
Christoph Oelckers
d938121378 - Added a NOTIMEFREEZE flag that excludes actors from being affected by
the time freezer powerup.
- Changed: Empty pickup messages are no longer printed. 

SVN r886 (trunk)
2008-04-06 09:24:41 +00:00
Christoph Oelckers
e105a29e99 - Externalized all default episode definitions. Added an 'optional' keyword
to handle M4 and 5 in Doom and Heretic.
- Added P_CheckMapData functions and replaced all calls to P_OpenMapData that
  only checked for a map's presence with it.
- Added Martin Howe's player statusbar face submission.
- Added an 'adddefaultmap' option for MAPINFO. This is the same as 'defaultmap'
  but keeps all existing information in the default and just adds to it. This
  is needed because Hexen and Strife set some information in their base
  MAPINFO and using 'defaultmap' in a PWAD would override that.
- Fixed: Using MAPINFO's f1 option could cause memory leaks.
- Added option to load lumps by full name to several places:
  * Finale texts loaded from a text lump
  * Demos
  * Local SNDINFOs
  * Local SNDSEQs
  * Image names in FONTDEFS
  * intermission script names
- Changed the STCFN121 handling. The character is not an 'I' but a '|' so
  instead of discarding it it should be inserted at position 124.
- Renamed indexfont.fon to indexfont so that I could remove a special case
  from V_GetFont that was just added for this one font.
- Added a 'dumpspawnedthings' CVAR that enables a listing of all things in 
  the map and the actor type they spawned.


SVN r882 (trunk)
2008-04-05 12:14:33 +00:00
Christoph Oelckers
7b23f6eb8b SBarInfo Update #16:
- Added: fillzeros flag for drawnumber.  When set the string will always have
  a length of the specified size and zeros will fill in for the missing places.
  If the number is negative the negative sign will take the place of the last
  digit.
- Added: globalarray type to drawnumber which will display the value in a
  global array with the index set to the player's number.  Untested.
- Added: isselected command to SBarInfo.
- Fixed: Bi and Tri colored numbers didn't work.
- Fixed: Crash when using nullimage as the last image in drawswitchableimage.
- Applied Graf suggestion to include the y coord when calulating heights to fix
  most of the gaps caused by round off errors.  At least for now anyways and it
  is only applied for drawimage.
- SBarInfo inventory bars have been converted to use screen->DrawTexture() 

SVN r881 (trunk)
2008-04-05 07:06:26 +00:00
Randy Heit
d2c275bbb3 - Changed FScanner so that opening a lump gives the complete wad+lump name
rather than a generic one, so identifying errors among files that all have
  the same lump name no longer involves any degree of guesswork in
  determining exactly which file the error occurred in.
- Added a check to S_ParseSndSeq() for SNDSEQ lumps with unterminated final
  sequences.
- Fixed: Parts of s_sndseq.cpp that scan the Sequences array need NULL
  pointer checks, in case an improper sequence was encountered during
  parsing but not early enough to avoid creating a slot for it in the array.


SVN r874 (trunk)
2008-04-03 03:19:21 +00:00
Christoph Oelckers
d5c3693fd9 - Added SnowKate709's A_DamageMaster/A_DamageChildren patch.
- Added a SFX_TRANSFERAMBUSHFLAG for A_SpawnItemEx.
- Added "Shaded" as a valid parameter for DECORATE's RenderStyle.
- Added Karate Chris's patch for a MAPINFO option making Strife conversations
  not halt the game.
- Extended the $limit fix that $alias and $random definitions can have their
  own $limit now.
- Fixed: When resolving a linked sound the limit of the current sound was
  ignored and the one of the referenced sound being used. This was particularly
  noticable when using the chaingun in a group of Zombiemen.
- Added a namespc parameter to FWadCollection::CheckNumForFullName which is
  used when a normal lump name has to be looked up and changed all
  CheckNumForFullName/CheckNumForName combinations in the source to use
  the extended version of CheckNumForFullName only to have consistent
  behavior for lump name lookup. 

SVN r865 (trunk)
2008-03-29 22:59:41 +00:00
Randy Heit
776d89428d - Changed D3DFB to explicitly request double buffering instead of assuming
that the drivers will treat a BackBufferCount of 0 as a request for
  double buffering.
- Fixed: Unsetting a cvar did not remove it from the list of tab
  completions.
- Added "" as a synonym for "nullimage" in SBARINFO.
- Fixed: MAKESAVESIG's stringifier in version.h did not work as expected.
  It stringified the passed macro name, not the value of the macro.
- Moved DCajunMaster off the DObject hierarchy.
- Changed DCajunMaster::getspawned into a TArray of FStrings. It was
  mysteriously being left pointing to uninitialized memory during the
  final GC at exit and crashing.
- Fixed: The code that removed hexdd.wad from the list of IWADs when
  hexen.wad was not present did not work.


SVN r861 (trunk)
2008-03-28 00:38:17 +00:00
Christoph Oelckers
670edb2356 - Added Jim' Linux fix.
- Added MartinHowe's fix for mugshot display in status bars.


SVN r856 (trunk)
2008-03-26 08:50:54 +00:00
Christoph Oelckers
7e900c1016 - Reverted changes of r715 in v_collection.cpp because they broke loading
of status bar face graphics belonging to skins.
SBARINFO update #15
- Fixed: Monospacing fonts wasn't quite correct.
- Fixed: The new mug shot code forgot to use the first arg of drawmugshot (the
  one that picks the default sprite prefix).
- Added: lowerHealthCap variable to SBarInfo, which is set to true by default.
- Added: ininventory event to SBarInfo to detect if one or two items are in (or
  not in) the player's inventory.
- Added: The ability to print global vars using drawnumber.  I need someone to
  test it though.
- Added: aspectratio command to detect what the user's aspect ratio is.
- Added: missing spacing argument to drawstring.
- Changed the sbarinfo display routine for drawnumber to not use cmd.value to
  store what it is about to display.  Now it uses a new variable.
- More conversions from DrawImage to screen->DrawTexture.  I think only the
  inventory bar drawing functions have to be changed now.



SVN r846 (trunk)
2008-03-24 17:48:55 +00:00
Christoph Oelckers
5ccb358875 - Fixed: The Sequence pointer in ASoundSequenceSlot was not declared as
a pointer and it was missing both read and write barriers.


SVN r845 (trunk)
2008-03-23 22:19:04 +00:00
Christoph Oelckers
eef724b58e - Added more options to Light_ForceLightning: Setting the first arg to 0
will behave as before, setting it to 1 will create exactly one lighting
  and setting it to 2 will terminate lightning for the current level
  completely. And it will also work on maps that don't have lightning set
  in MAPINFO now.


SVN r837 (trunk)
2008-03-22 12:41:36 +00:00
Christoph Oelckers
9adf1d4ddc - Fixed: The serializer for side_t::part never read the texture information
from a savegame.
- Fixed: side_t::StopInterpolation called setinterpolation instead of
  stopinterpolation. Also moved the clearinterpolation call in 
  P_SetupLevel after the P_FreeLevelData to make absolutely sure that
  nothing in there can leave an interpolator behind by accident.
- Applied Linux fixes by Jim.
SBARINFO update by Blzut3:
- Fixed: the playerclass command needed a null pointer check to prevent
  crashing on respawn.
- Fixed: Mug Shot states were not reset on respawn.
- Removed keepoffsets flag since apparently it was keeping the offsets by
  default.  The means that the only thing not affected by the offsets was using
  nullimage as a background.  Since I wasn't able to get a result I liked I'm
  going to say that if you want a black background with high res positioning
  you will have to create your own bar image.  Maybe I'll fix it some other
  time.
- Added: monospacefonts variable which allows for all of the fonts to be
  monospaced by a specified character (from their fontset of corse).
- Made SBarInfo recognize the bar names for the Strife popups but they don't
  do anything beyond that.  The names are: popuplog, popupkeys, and popupstatus.
- Started converting the drawing routine to be more flexable towards high
  resolution status bars.  (Only did one call so far.)


SVN r835 (trunk)
2008-03-22 09:26:59 +00:00
Christoph Oelckers
cab572c008 - r_interpolate.h was in the g_shared directory but should be in src.
SVN r833 (trunk)
2008-03-21 19:05:22 +00:00
Christoph Oelckers
e77f83fbf6 - Added new Scroll_Wall special to allow more control over wall scrolling.
Since it uses fixed point parameters it can only be used in scripts though.
- Added flags parameters to all wall scroller specials that didn't use
  all 5 args.
- Separated scrolling of the 3 different texture parts of a sidedef.
  While doing this I did some more restructuring of the sidedef structure
  and changed it so that all state changes to sidedefs that affect rendering 
  have to be made with access functions. This is not of much use to the
  software renderer but it allows far easier caching of rendering data
  for OpenGL because the only place I need to check is in the access functions.


SVN r832 (trunk)
2008-03-21 17:35:49 +00:00
Randy Heit
10920ffe75 - Removed some debug output from SBarInfo::ParseSBarInfo().
- Fixed: Heretic linetype translations included the wrong file.
- Removed all 2D sound positioning code from s_sound.cpp. Everything uses
  FMOD's 3D engine now.
- Removed all the channel selection code from s_sound.cpp. FMOD has code to
  handle this sort of thing, so let's use it.
- Replaced S_StopSoundID() with S_CheckSingular(). There is no longer a limit
  on the number of copies of a particular sound that can be playing at once,
  aside from Strife's special singular sounds. (Sorry, Heretic and Hexen.)
  Consequently, the SNDINFO $limit command is now ignored.
- Removed ATTN_SURROUND, since FMOD Ex doesn't exactly support it, and it
  only worked as intended on stereo speakers anyway.
- Cleaned out ancient crud from i_sound.cpp.


SVN r826 (trunk)
2008-03-21 05:13:59 +00:00
Randy Heit
087e34bbb3 - Fixed: The source no longer built with GCC.
- Added a cheap pitch shifting for underwater environments that should be fairly
  close to Duke's. It sounds okay for some sounds, but others like the BFG, where
  the timing of the sound actually matters, don't sound good. I shall have to
  replace it with a real pitch shifter DSP unit.


SVN r819 (trunk)
2008-03-19 23:03:14 +00:00
Christoph Oelckers
5b9073add4 - Added copyright/license headers to a few files.
- Fixed: ACS SetMugShotState needs to check the StatusBar pointer for the
  proper object type.
- Move SBarInfo loading code in d_main.cpp into a static method of DSBarInfo.
- Removed dobject.err from the repository. It only contained a list of compiler
  errors for some very old version of dobject.cpp.
- Fixed: A_JumpIfCloser was missing a z-check.
- Added Blzut3's SBARINFO update #13:
- Split sbarinfo.cpp into two files sbarinfo_display.cpp and sbarinfo_parser.cpp
- Rewrote the mug shot system for SBarInfo to allow for scripting and custom
  states for different means of death.
- SBarInfo now loads all SBarInfo lumps instead of just the last one.  Clashing
  status bar definitions will now be cleared before the bar is read.
- Fixed: When using transparency with bars the new drawing method (bg over fg)
  didn't work.  In the case that the border value is set to 0 it will revert to
  the old method (fg over bg).
- Fixed: drawbar lost any high res information it was given.
- Added: ACS command SetMugShotState(str state) which sets the mug shot state
  for the activating player.
- Added: keepoffsets flag to drawbar.  When set the offsets in the fg image will
  also be applied when displaying the bar.


SVN r812 (trunk)
2008-03-19 09:53:23 +00:00
Christoph Oelckers
07e795e656 - Changed DObject's pointer substitution so that the pointers inside an
object are handled by a virtual function. This allows subclasses to
  implement their own handling if they need it.


SVN r797 (trunk)
2008-03-12 16:27:47 +00:00
Randy Heit
f2660dc336 - Merged the GC branch back into the trunk, so now it can receive more
testing from the people who download SVN trunk builds.

SVN r795 (trunk)
2008-03-12 02:56:11 +00:00
Randy Heit
ef99d9c057 - Fixed: PTR_BounceTraverse only checked for projectiles that were too
high to pass through two-sided lines, but not ones that were too low.
- Fixed: SBARINFO couldn't detect the extreme death damage type for the
  player face animation.


SVN r782 (trunk)
2008-03-04 00:56:22 +00:00