Commit graph

972 commits

Author SHA1 Message Date
Christoph Oelckers
d1caf3a471 - made TObjPtr as trivial as possible.
Mainly to avoid problems with Raze, but eliminating this constructor lets us catch erroneous local definitions via 'auto', which can cause major problems if left undetected.
2022-06-06 15:19:31 +02:00
Rachael Alexanderson
12ed24d066 - separate i_pauseinbackground and i_soundinbackground - they probably should ultimately be moved out of the sound code 2022-01-15 20:17:11 -05:00
Christoph Oelckers
32de663210 - fixed MBF21's A_SeekTracer.
This cannot directly call A_SeekerMissile because that has more parameters. It now maps to a wrapper that takes care of these.
2022-01-07 00:33:56 +01:00
Christoph Oelckers
64ef03428d - added proper range check to the main sound playing function.
We got a report where this crashed on a bad sound index.
2022-01-07 00:16:30 +01:00
Christoph Oelckers
77d74a11d1 - removed most templates.h includes. 2021-10-30 10:49:12 +02:00
Christoph Oelckers
07a181090b - missed some MAX's. 2021-10-30 10:45:58 +02:00
Christoph Oelckers
1d0aed219e - replaced MIN/MAX in all non-common code. 2021-10-30 10:16:52 +02:00
drfrag
d00c6e4ecc - Added missing null pointer check. 2021-07-17 23:23:32 +02:00
alexey.lysiuk
cf4c72d4a7 - fixed potential crash when sound sequence is destroyed
Level can be unset if sound sequence destruction happens after saved game loading failure

https://forum.zdoom.org/viewtopic.php?t=72551
2021-06-14 09:30:51 +03:00
Christoph Oelckers
8b5847d4a2 - corrected the NUL checks in S_FindSkinnedSound. 2021-06-04 08:26:29 +02:00
Zandrewnum
acb4d89f52 APROP_Soundclass update again
- Just set init for SoundClass to empty.
- Removed code block from SetActorProperty for APROP_Soundclass that does nothing
- Lower-cased soundclass in FSerializer
- Created a new const char to read the player's soundclass. If the playerpawn returns NAME_None for it's default, then it will set defaultsoundclass to "player". After running the skin code, the function now returns defaultsoundclass or soundclass, depending if soundclass is empty or not.
- Renamed GetSoundClass to S_GetSoundClass
2021-05-28 20:22:37 +02:00
Zandrewnum
a5cf0c6605 Sound Class renovations
- SoundClass is instantiated to "" by default. Since this property is only used when it is not empty (otherwise GetSoundClass just defaults to player), we can get away with this.
- We may want the soundclass to remain the same if we explicitly set it to the same one that is currently used (say, we set SoundClass to "Caleb" so all other skins can use it)
- GetActorProperty for APROP_SoundClass just calls GetSoundClass,
- CheckActorProperty also just runs GetSoundClass
- GetSoundClass is no longer a static method. We needed to access it in other places.
- Made renovations to GetSoundClass. First of all, SoundClass is no longer instantiated there. Secondly, skinned sounds are now returned if SoundClass is empty. Thirdly, "sclass" in this method will return the default soundclass of the player pawn or SoundClass, depending on if SoundClass is empty. Finally, sclass will retrieve "player" if it is empty.
2021-05-28 20:22:37 +02:00
Zandrewnum
c7cd25cbcc Made S_FindSkinnedSound to use GetSoundClass again
- I couldn't simply init SoundClass to NAME_SoundClass, even after converting it to the appropriate type. Probably because NAME_SoundClass hasn't been parsed from decorate yet. Instead, I change it to NAME_SoundClass through GetSoundClass if it's valid and currently "player".
- The skin checker code in GetSoundClass now checks if the SoundClass is equal to NAME_SoundClass. This mechanism exists so that way reverting the SoundClass to NAME_SoundClass processes the skin soundclass code. If it's different, the code is not processed.
- Just returns sclass. This is never null, so there's no need to check if so.
- S_FindSkinnedSound just uses GetSoundClass. This makes sure skins are checked.
2021-05-28 20:22:37 +02:00
Zandrewnum
f6bdbfe535 APROP_SoundClass inits a default value and checks for null pointers
- Gave default init value to SoundClass as "Player"
- Changed SoundClass detection to use the if/else structure
- Checked for null pointer in S_FindSkinnedSound when reading the player's sound class
2021-05-28 20:22:37 +02:00
Zandrewnum
852a96497d Added APROP_SoundClass
- Added APROP_SoundClass to GetActorProperty, SetActorProperty, CheckActorProperty
2021-05-28 20:22:37 +02:00
Rachael Alexanderson
d3804911cf - Fix the previous commit
Revert "Fixed a missing parameter in S_Sound's ZScript prototype that was causing assertion failures."

This reverts commit 619f44decd.
2021-01-18 04:02:12 -05:00
Chronos Ouroboros
619f44decd Fixed a missing parameter in S_Sound's ZScript prototype that was causing assertion failures. 2021-01-17 22:22:40 -03:00
Rachael Alexanderson
476e59fbab - add sv_instantreaction dmflag 2021-01-13 07:04:18 -05:00
Rachael Alexanderson
65c7b77997 - update $musicalias to allow iwad remapping when used from game_support.pk3
- add music aliases for the unity version of Doom/Doom2 for digitized game soundtrack
- this fixes issue #1268
2021-01-06 06:32:04 -05:00
Christoph Oelckers
6f4dfd9a61 - added the option to look for music by using a truncated 8-character variant of the given name.
This workaround is needed because there's known old mods depending on this legacy behavior.
2020-12-11 11:39:24 +01:00
Christoph Oelckers
d4d187e27b - removed the limiter flags again and addressed the underlying problem properly.
The real issue is that the number of unattenuated sounds was unchecked and the near limit never kicked in.
To do this properly it is necessary to adjust the limit distance by the attenuation - zero attenuation must mean infinite distance and for high attenuations the distance must be lowered for limiting to work as intended.
The limit for the Doom boss sounds was increased to 4 to compensate for this change.

# Conflicts:
#	src/common/audio/sound/oalsound.cpp
2020-10-28 21:30:25 +01:00
Nikolay Ambartsumov
10c833f37e Raise SNDSEQ limit to 4096 sequences 2020-10-25 15:58:30 +01:00
Christoph Oelckers
a6842b6482 - ensure that sfxinfo_t is always fully initialized, regardless how the setup is performed.
The recent pitch additions did not do this on all possible paths.
2020-10-16 22:57:30 +02:00
Christoph Oelckers
cd6ef67209 - fixed sounds not stopping in sound sequences.
The sound sequence code used S_GetSoundPlayingInfo incorrectly, so let it check for a valid sound ID first to restore the old behavior.
2020-09-28 18:38:05 +02:00
Kyle Johnson
e281f992af Disallow sound to be played on destroyed actors
It's possible for an actor to call Destroy() in a ZScript method (such
as Tick()) and then subsequently call A_StartSound() to play a sound.
Generally speaking this doesn't happen within a given class, but with a
class hierarchy, Destroy() may be called unbeknownst to a mod developer.
Even though checking bDestroyed is likely good practice, this ensures
that sounds won't be started on actors flagged for cleanup.
2020-09-12 21:38:56 +02:00
MajorCooke
c57e669044
Added an optional extra float parameter to $pitchshift. (#1150)
- This allows for setting a randomized range for the pitch each time the sound is initialized.
2020-08-27 12:49:59 -04:00
Major Cooke
a85ee5826e Added $PitchSet <logical name> <float> for SNDINFO.
- Sets the direct pitch of the sound to the specific float. Default is 0.0, meaning do not set a specific pitch. Regular pitch is 1.0.
- Only works for direct sound definitions.
- Overrides $PitchShift unless value is <= 0.0
- Overridden by A_StartSound's pitch parameter if the value > 0.0.
2020-07-24 08:05:44 +02:00
Christoph Oelckers
248aa8b5a7 - moved s_reverbedit.cpp to 'common'. 2020-06-14 12:39:59 +02:00
Christoph Oelckers
712d80006a - split game dependent parts out of menudef.cpp. 2020-06-14 00:27:32 +02:00
Christoph Oelckers
9be63a5093 Merge branch 'master' into texture_rework 2020-04-29 08:04:15 +02:00
Christoph Oelckers
ddef3f7b98 - made video base code game independent 2020-04-28 22:54:53 +02:00
Christoph Oelckers
12e69adec3 - system backend cleanup.
This is mainly for running CI on Linux and macOS. Windws is already working.
2020-04-22 19:57:14 +02:00
alexey.lysiuk
426f40dd52 - fixed crash when loading saved game that has no music 2020-04-20 15:08:33 +03:00
alexey.lysiuk
5a56f209d3 - fixed conditions with SND_PlayerReserve flag
src/sound/s_advsound.cpp:953:9: warning: logical not is only applied to the left hand side of this bitwise operator [-Wlogical-not-parentheses]
src/sound/s_advsound.cpp:1264:20: warning: logical not is only applied to the left hand side of this bitwise operator [-Wlogical-not-parentheses]
src/sound/s_advsound.cpp:1426:6: warning: logical not is only applied to the left hand side of this bitwise operator [-Wlogical-not-parentheses]
2020-04-12 11:49:47 +03:00
Christoph Oelckers
ce4c2be3c7 - use the 2d drawer's size where appropriate. 2020-04-11 20:20:58 +02:00
Christoph Oelckers
b18faacab0 - 2D drawer cleanup. 2020-04-11 20:20:58 +02:00
Christoph Oelckers
7b292cca57 - split the serializer in two to keep the Doom specific parts out of the main file. 2020-04-11 20:20:53 +02:00
Christoph Oelckers
f74efcf721 - split the TObjPtr serializers into a separate file to avoid polluting everything that needs to use the serializer.
To use these it is necessary to include dobject.h and all its dependencies, so this should not be done unless necessary.
2020-04-11 20:20:53 +02:00
Christoph Oelckers
f8ac9a2662 - moved DObject and core parts of the VM to 'common'.
# Conflicts:
#	src/common/objects/dobject.h
2020-04-11 20:20:51 +02:00
Christoph Oelckers
be24023722 - split animation management out of the texture manager into a separate class. 2020-04-11 20:20:36 +02:00
Christoph Oelckers
a13c7bd053 - moved sound code to "common". 2020-04-11 20:20:35 +02:00
Christoph Oelckers
018794f1dd - moved game specific data out of the sound backend.
In Raze I already had a user data array for that so this gets used here, too, now.
Also copied a few other fixes.
2020-04-11 20:20:35 +02:00
Christoph Oelckers
50e1efa965 - minor sound code cleanup
# Conflicts:
#	src/sound/backend/oalsound.cpp
2020-04-11 20:20:34 +02:00
Christoph Oelckers
cd9e2d3795 - moved music code to "common". 2020-04-11 20:19:55 +02:00
Christoph Oelckers
7d36af8840 - put things in their proper place. 2020-04-11 20:19:55 +02:00
Christoph Oelckers
00bbc48e70 - music.cpp include cleanup
- use a TMap to store music volume settings instead of using a homegrown linked list.
2020-04-11 20:19:54 +02:00
Christoph Oelckers
f0534afde6 - separated the game-dependent music lookup parts from the core player. 2020-04-11 20:19:54 +02:00
Christoph Oelckers
4af96bab47 - some cleanup on music code.
* change the license of the main file because there is no more id-based code here licensed under the GPL.
* moved VM interface definition out of the implementation.
* moved idmus CCMD out of implementation because it is dependent on Doom level definitions.
* moved s_music.cpp into the music folder with the rest of the music code.
2020-04-11 20:19:54 +02:00
Christoph Oelckers
4a50f78bfe - more work on console code. 2020-04-11 20:19:24 +02:00
alexey.lysiuk
0d420a75b7 - fixed compilation for Linux and macOS 2020-04-11 20:36:36 +03:00