123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- const float TICK_INTERVAL = 1;
- const float STAMINA_SOUND_TR1 = 0.55;
- const float STAMINA_SOUND_TR2 = 0.25;
- enum eStaminaZones
- {
- ZONE0,
- ZONE1,
- ZONE2,
- }
- enum eStaminaTendency
- {
- UP,
- DOWN,
- }
- enum eStaminaState
- {
- ZONE0_UP = 1,
- ZONE0_DOWN,
- ZONE1_UP,
- ZONE1_DOWN,
- ZONE2_UP,
- ZONE2_DOWN,
- //count bellow, add above
- COUNT
- }
- class SoundHandlerBase
- {
- eSoundHandlers m_Id;
- PlayerBase m_Player;
-
- void Update();
-
- eSoundHandlers GetID()
- {
- return m_Id;
- }
-
- void SoundHandlerBase(PlayerBase player)
- {
- m_Player = player;
- Init();
- }
-
- void Init();
- }
- class StaminaSoundHandlerBase extends SoundHandlerBase
- {
- override void Init()
- {
- m_Id = eSoundHandlers.STAMINA;
- }
-
- eStaminaState GetStaminaState(eStaminaTendency tendency, eStaminaZones zone)
- {
- eStaminaState stamina_state;
-
- zone = Math.Clamp(zone, eStaminaZones.ZONE0, eStaminaZones.ZONE2);
-
- if(zone == eStaminaZones.ZONE1 && tendency == eStaminaTendency.DOWN)
- {
- stamina_state = eStaminaState.ZONE1_DOWN;
- }
-
- if(zone == eStaminaZones.ZONE1 && tendency == eStaminaTendency.UP)
- {
- stamina_state = eStaminaState.ZONE1_UP;
- }
-
- if(zone == eStaminaZones.ZONE2 && tendency == eStaminaTendency.DOWN)
- {
- stamina_state = eStaminaState.ZONE2_DOWN;
- }
-
- if(zone == eStaminaZones.ZONE2 && tendency == eStaminaTendency.UP)
- {
- stamina_state = eStaminaState.ZONE2_UP;
- }
-
- if(zone == eStaminaZones.ZONE0 && tendency == eStaminaTendency.UP)
- {
- stamina_state = eStaminaState.ZONE0_UP;
- }
-
- if(zone == eStaminaZones.ZONE0 && tendency == eStaminaTendency.DOWN)
- {
- stamina_state = eStaminaState.ZONE0_DOWN;
- }
-
- return stamina_state;
- }
- }
- //---------------------------
- // Server
- //---------------------------
- class StaminaSoundHandlerServer extends StaminaSoundHandlerBase
- {
- float m_Stamina;
- StaminaHandler m_StaminaHandler;
- float m_StaminaLastValue;
- int m_StaminaZoneOffset;
-
- void SetStaminaZoneOffset(int zone_offset)
- {
- m_StaminaZoneOffset = zone_offset;
- }
-
- // ! Called from command handler
- override void Update()
- {
- m_Stamina = m_Player.GetStaminaHandler().GetStamina();
- float stamina_delta = m_StaminaLastValue - m_Stamina;
- eStaminaTendency stamina_tendency;
- eStaminaZones stamina_zone;
-
- //if( stamina_delta == 0 ) return;
-
- if( stamina_delta > 0 )
- {
- stamina_tendency = eStaminaTendency.DOWN;
- }
- if( stamina_delta <= 0 )
- {
- stamina_tendency = eStaminaTendency.UP;
- }
-
- m_StaminaLastValue = m_Stamina;
-
- stamina_zone = GetZone(m_Stamina);
- m_Player.SetStaminaState( GetStaminaState(stamina_tendency, stamina_zone + m_StaminaZoneOffset) );
-
- //EPlayerSoundEventID sound_event_id = GetPlayerSoundEventID();
- /*
- //PrintString("stamina delta " +stamina_delta.ToString());
- //PrintString("stamina zone " +m_StaminaZone.ToString());
- //PrintString("stamina tendency " +m_StaminaTendency.ToString());
- */
- //PrintString(" sound event id " +sound_event_id.ToString());
-
-
- //if( sound_event_id !=0 ) m_Player.SendSoundEvent(sound_event_id);
- }
- eStaminaZones GetZone(float stamina)
- {
- float stamina_normalized = Math.InverseLerp(0, m_Player.GetStaminaHandler().GetStaminaCap(), stamina);
- stamina_normalized = Math.Clamp(stamina_normalized,0,1);
- //PrintString(" stamina_normalized " +stamina_normalized.ToString());
- eStaminaZones stamina_zone = eStaminaZones.ZONE0;
-
- if( stamina_normalized < STAMINA_SOUND_TR1)
- {
- stamina_zone = eStaminaZones.ZONE1;
- }
-
- if( stamina_normalized < STAMINA_SOUND_TR2)
- {
- stamina_zone = eStaminaZones.ZONE2;
- }
-
- return stamina_zone;
- }
- }
- //---------------------------
- // Client
- //---------------------------
- class StaminaSoundHandlerClient extends StaminaSoundHandlerBase
- {
- float m_PostponeTime = -1;
- float m_LastTick;
- bool m_UpdateTimerRunning;
- bool m_StaminaUpEndPlayed = true;
- ref Timer m_ClientCharacterTick = new Timer;
- ref Timer m_ClientCharacterDistanceCheck = new Timer;
-
- void PostponeStamina(float time)
- {
- m_PostponeTime = GetGame().GetTime() + time;
- }
-
- override void Update()
- {
- if( GetGame().GetTime() < m_PostponeTime || m_Player.GetPlayerSoundEventHandler().m_CurrentState )
- {
- return;
- }
- //Print(Math.RandomFloat01());
- eStaminaState stamina_state = m_Player.GetStaminaState();
- switch(stamina_state)
- {
- case eStaminaState.ZONE1_DOWN:
- if(m_Player.PlaySoundEvent(EPlayerSoundEventID.STAMINA_DOWN_LIGHT))
- {
- m_StaminaUpEndPlayed = false;
- }
- break;
-
- case eStaminaState.ZONE1_UP:
- if(m_Player.PlaySoundEvent(EPlayerSoundEventID.STAMINA_UP_LIGHT))
- {
- m_StaminaUpEndPlayed = false;
- }
- break;
-
- case eStaminaState.ZONE2_DOWN:
- if(m_Player.PlaySoundEvent(EPlayerSoundEventID.STAMINA_DOWN_HEAVY))
- {
- m_StaminaUpEndPlayed = false;
- }
- break;
-
- case eStaminaState.ZONE2_UP:
- if(m_Player.PlaySoundEvent(EPlayerSoundEventID.STAMINA_UP_HEAVY))
- {
- m_StaminaUpEndPlayed = false;
- }
- break;
-
- case eStaminaState.ZONE0_UP:
- if(!m_StaminaUpEndPlayed && m_Player.PlaySoundEvent(EPlayerSoundEventID.STAMINA_UP_END))
- {
- m_StaminaUpEndPlayed = true;
- }
- else
- {
- m_Player.PlaySoundEvent(EPlayerSoundEventID.STAMINA_NORMAL_DUMMY);
- }
- break;
-
- case eStaminaState.ZONE0_DOWN:
- m_Player.PlaySoundEvent(EPlayerSoundEventID.STAMINA_NORMAL_DUMMY);
- break;
- }
- }
- }
|