Counter Strike : Global Offensive Source Code
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

177 lines
6.4 KiB

  1. //========= Copyright � 1996-2005, Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose:
  4. //
  5. // $NoKeywords: $
  6. //=============================================================================//
  7. #ifndef SOUNDFLAGS_H
  8. #define SOUNDFLAGS_H
  9. #if defined( _WIN32 )
  10. #pragma once
  11. #endif
  12. //-----------------------------------------------------------------------------
  13. // channels
  14. //-----------------------------------------------------------------------------
  15. enum
  16. {
  17. CHAN_REPLACE = -1,
  18. CHAN_AUTO = 0,
  19. CHAN_WEAPON = 1,
  20. CHAN_VOICE = 2,
  21. CHAN_ITEM = 3,
  22. CHAN_BODY = 4,
  23. CHAN_STREAM = 5, // allocate stream channel from the static or dynamic area
  24. CHAN_STATIC = 6, // allocate channel from the static area
  25. CHAN_VOICE_BASE = 7, // allocate channel for network voice data
  26. };
  27. enum
  28. {
  29. CHAN_USER_BASE = (CHAN_VOICE_BASE+128) // Anything >= this number is allocated to game code.
  30. };
  31. //-----------------------------------------------------------------------------
  32. // common volume values
  33. //-----------------------------------------------------------------------------
  34. #define VOL_NORM 1.0f
  35. //-----------------------------------------------------------------------------
  36. // common attenuation values
  37. //-----------------------------------------------------------------------------
  38. #define ATTN_NONE 0.0f
  39. #define ATTN_NORM 0.8f
  40. #define ATTN_IDLE 2.0f
  41. #define ATTN_STATIC 1.25f
  42. #define ATTN_RICOCHET 1.5f
  43. // HL2 world is 8x bigger now! We want to hear gunfire from farther.
  44. // Don't change this without consulting Kelly or Wedge (sjb).
  45. #define ATTN_GUNFIRE 0.27f
  46. enum soundlevel_t
  47. {
  48. SNDLVL_NONE = 0,
  49. SNDLVL_20dB = 20, // rustling leaves
  50. SNDLVL_25dB = 25, // whispering
  51. SNDLVL_30dB = 30, // library
  52. SNDLVL_35dB = 35,
  53. SNDLVL_40dB = 40,
  54. SNDLVL_45dB = 45, // refrigerator
  55. SNDLVL_50dB = 50, // 3.9 // average home
  56. SNDLVL_55dB = 55, // 3.0
  57. SNDLVL_IDLE = 60, // 2.0
  58. SNDLVL_60dB = 60, // 2.0 // normal conversation, clothes dryer
  59. SNDLVL_65dB = 65, // 1.5 // washing machine, dishwasher
  60. SNDLVL_STATIC = 66, // 1.25
  61. SNDLVL_70dB = 70, // 1.0 // car, vacuum cleaner, mixer, electric sewing machine
  62. SNDLVL_NORM = 75,
  63. SNDLVL_75dB = 75, // 0.8 // busy traffic
  64. SNDLVL_80dB = 80, // 0.7 // mini-bike, alarm clock, noisy restaurant, office tabulator, outboard motor, passing snowmobile
  65. SNDLVL_TALKING = 80, // 0.7
  66. SNDLVL_85dB = 85, // 0.6 // average factory, electric shaver
  67. SNDLVL_90dB = 90, // 0.5 // screaming child, passing motorcycle, convertible ride on frw
  68. SNDLVL_95dB = 95,
  69. SNDLVL_100dB = 100, // 0.4 // subway train, diesel truck, woodworking shop, pneumatic drill, boiler shop, jackhammer
  70. SNDLVL_105dB = 105, // helicopter, power mower
  71. SNDLVL_110dB = 110, // snowmobile drvrs seat, inboard motorboat, sandblasting
  72. SNDLVL_120dB = 120, // auto horn, propeller aircraft
  73. SNDLVL_130dB = 130, // air raid siren
  74. SNDLVL_GUNFIRE = 140, // 0.27 // THRESHOLD OF PAIN, gunshot, jet engine
  75. SNDLVL_140dB = 140, // 0.2
  76. SNDLVL_150dB = 150, // 0.2
  77. SNDLVL_180dB = 180, // rocket launching
  78. // NOTE: Valid soundlevel_t values are 0-255.
  79. // 256-511 are reserved for sounds using goldsrc compatibility attenuation.
  80. };
  81. #define MAX_SNDLVL_BITS 9 // Used to encode 0-255 for regular soundlevel_t's and 256-511 for goldsrc-compatible ones.
  82. #define MIN_SNDLVL_VALUE 0
  83. #define MAX_SNDLVL_VALUE ((1<<MAX_SNDLVL_BITS)-1)
  84. #define ATTN_TO_SNDLVL( a ) (soundlevel_t)(int)((a) ? (50 + 20 / ((float)a)) : 0 )
  85. #define SNDLVL_TO_ATTN( a ) ( (a > 50) ? (20.0f / (float)(a - 50)) : ( (a == 0) ? (0.0f) : (4.0f) ) )
  86. // This is a limit due to network encoding.
  87. // It encodes attenuation * 64 in 8 bits, so the maximum is (255 / 64)
  88. #define MAX_ATTENUATION 3.98f
  89. //-----------------------------------------------------------------------------
  90. // Flags to be or-ed together for the iFlags field
  91. //-----------------------------------------------------------------------------
  92. enum SoundFlags_t
  93. {
  94. SND_NOFLAGS = 0, // to keep the compiler happy
  95. SND_CHANGE_VOL = (1<<0), // change sound vol
  96. SND_CHANGE_PITCH = (1<<1), // change sound pitch
  97. SND_STOP = (1<<2), // stop the sound
  98. SND_SPAWNING = (1<<3), // we're spawning, used in some cases for ambients
  99. // not sent over net, only a param between dll and server.
  100. SND_DELAY = (1<<4), // sound has an initial delay
  101. SND_STOP_LOOPING = (1<<5), // stop all looping sounds on the entity.
  102. SND_SPEAKER = (1<<6), // being played again by a microphone through a speaker
  103. SND_SHOULDPAUSE = (1<<7), // this sound should be paused if the game is paused
  104. SND_IGNORE_PHONEMES = (1<<8),
  105. SND_IGNORE_NAME = (1<<9), // used to change all sounds emitted by an entity, regardless of scriptname
  106. SND_IS_SCRIPTHANDLE = (1<<10), // server has passed the actual SoundEntry instead of wave filename
  107. SND_UPDATE_DELAY_FOR_CHOREO = (1<<11), // True if we have to update snd_delay_for_choreo with the IO latency.
  108. SND_GENERATE_GUID = (1<<12), // True if we generate the GUID when we send the sound.
  109. SND_OVERRIDE_PITCH = (1<<13), // The pitch given in code overrides what is present in the sound entry.
  110. };
  111. #define SND_FLAG_BITS_ENCODE 13
  112. #define MAX_SOUND_INDEX_BITS 13
  113. #define MAX_SOUNDS (1<<MAX_SOUND_INDEX_BITS)
  114. // Todo: Morasky, we need to test against this #!
  115. // MAX_MEASURED_SOUNDENTRIES
  116. #if !defined( IN_XBOX_CODELINE )
  117. // +/-4096 msec
  118. #define MAX_SOUND_DELAY_MSEC_ENCODE_BITS (13)
  119. #else
  120. // +/-65536 msec, 64 seconds
  121. #define MAX_SOUND_DELAY_MSEC_ENCODE_BITS (17)
  122. #endif
  123. // Subtract one to leave room for the sign bit
  124. #define MAX_SOUND_DELAY_MSEC (1<<(MAX_SOUND_DELAY_MSEC_ENCODE_BITS-1)) // 4096 msec or about 4 seconds
  125. #define MAX_SOUND_SEED_BITS 6 // Used to encode 0-63 for seeding client side sound operators
  126. // NOTE: The LSB also carries the server side wave file selection
  127. #define MIN_SOUND_SEED_VALUE 0
  128. #define MAX_SOUND_SEED_VALUE ((1<<MAX_SOUND_SEED_BITS)-1)
  129. #define MAX_SOUND_RNDWAVE_NUM MAX_SOUND_SEED_VALUE
  130. //-----------------------------------------------------------------------------
  131. // common pitch values
  132. //-----------------------------------------------------------------------------
  133. #define PITCH_NORM 100 // non-pitch shifted
  134. #define PITCH_LOW 95 // other values are possible - 0-255, where 255 is very high
  135. #define PITCH_HIGH 120
  136. #define DEFAULT_SOUND_PACKET_VOLUME 1.0f
  137. #define DEFAULT_SOUND_PACKET_PITCH 100
  138. #define DEFAULT_SOUND_PACKET_DELAY 0.0f
  139. #endif // SOUNDFLAGS_H