123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- enum eInjurySoundZones
- {
- NONE = 0,
- LIGHT,
- MEDIUM,
- HEAVY,
-
- // PUT NEW STATES ABOVE
- COUNT
- }
- class InjurySoundHandlerBase extends SoundHandlerBase
- {
- override void Init()
- {
- m_Id = eSoundHandlers.INJURY;
- }
-
- }
- //---------------------------
- // Client
- //---------------------------
- class InjurySoundHandlerClient extends InjurySoundHandlerBase
- {
- const float SOUND_INTERVALS_LIGHT_MIN = 15; const float SOUND_INTERVALS_LIGHT_MAX = 30;
- const float SOUND_INTERVALS_MEDIUM_MIN = 10; const float SOUND_INTERVALS_MEDIUM_MAX = 25;
- const float SOUND_INTERVALS_HEAVY_MIN = 3; const float SOUND_INTERVALS_HEAVY_MAX = 12;
-
- ref HumanMovementState m_MovementState = new HumanMovementState;
- eInjurySoundZones m_InjurySoundZone;
- eInjuryHandlerLevels m_InjuryLevel;
- float m_SoundTime;
-
- eInjurySoundZones DetermineInjuryZone(eInjuryHandlerLevels level)
- {
- if( level == eInjuryHandlerLevels.PRISTINE )
- return eInjurySoundZones.NONE;
-
- m_Player.GetMovementState(m_MovementState);
- int speed = m_MovementState.m_iMovement;
- int stance = m_MovementState.m_iStanceIdx;
-
- //int stance_lvl_down = DayZPlayerConstants.STANCEMASK_PRONE | DayZPlayerConstants.STANCEMASK_CROUCH;
-
- if( speed == 0 )
- return eInjurySoundZones.NONE;
-
- level--;// shift the level so that we play from higher damage
-
- if( stance == DayZPlayerConstants.STANCEIDX_PRONE || stance == DayZPlayerConstants.STANCEIDX_CROUCH )
- {
- level--;
- }
-
- if( speed == DayZPlayerConstants.MOVEMENTIDX_WALK )
- {
- level--;
- }
- else if(speed == DayZPlayerConstants.MOVEMENTIDX_SPRINT)
- {
- level++;
- }
- level = Math.Clamp(level, eInjurySoundZones.NONE, eInjurySoundZones.HEAVY);
- return level;
- }
-
-
- override void Update()
- {
- m_InjuryLevel = m_Player.m_HealthLevel;
-
- if( m_InjuryLevel != eInjuryHandlerLevels.PRISTINE )
- {
- eInjurySoundZones zone = DetermineInjuryZone(m_Player.m_HealthLevel);
- ProcessSound(zone);
- }
- }
-
- void ProcessSound(eInjurySoundZones zone)
- {
- //Print("injury sound zone:"+ zone);
- // process sound here
- if( GetGame().GetTime() > m_SoundTime)
- {
- float offset_time;
- if(zone == eInjurySoundZones.NONE)
- {
- offset_time = 3000;
- m_SoundTime = GetGame().GetTime() + offset_time;
- return;
- }
- if(zone == eInjurySoundZones.LIGHT)
- {
- offset_time = Math.RandomFloatInclusive(SOUND_INTERVALS_LIGHT_MIN, SOUND_INTERVALS_LIGHT_MAX) * 1000;
- }
- else if(zone == eInjurySoundZones.MEDIUM)
- {
- offset_time = Math.RandomFloatInclusive(SOUND_INTERVALS_MEDIUM_MIN, SOUND_INTERVALS_MEDIUM_MAX) * 1000;
- }
- else if(zone == eInjurySoundZones.HEAVY)
- {
- offset_time = Math.RandomFloatInclusive(SOUND_INTERVALS_HEAVY_MIN, SOUND_INTERVALS_HEAVY_MAX) * 1000;
- }
- m_SoundTime = GetGame().GetTime() + offset_time;
- PlaySound(zone);
- }
- }
-
- void PlaySound(eInjurySoundZones zone)
- {
- m_Player.PlaySoundEvent(EPlayerSoundEventID.INJURED_LIGHT);
- }
-
- }
- //---------------------------
- // Server
- //---------------------------
- class InjurySoundHandlerServer extends InjurySoundHandlerBase
- {
-
- }
|