Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
playersoundeventhandler.c
Go to the documentation of this file.
1// defined in animEventsSoundVoice.hpp
43
44class PlayerSoundEventHandler extends SoundEventHandler
45{
47 const int SOUND_EVENTS_MAX = EPlayerSoundEventID.ENUM_COUNT;
48 static ref PlayerSoundEventBase m_AvailableStates[SOUND_EVENTS_MAX];
49 static ref map<int,int> m_ConfigIDToScriptIDmapping = new map<int,int> ;
52
53
55 {
56 m_Player = player;
57
58 if(!m_UpdateTimer && !m_Player.IsControlledPlayer())
59 {
60 m_UpdateTimer = new Timer();
61 m_UpdateTimer.Run(1, this, "OnTick", null, true);//ticking for remotes, the controlled player is ticking on command handler at higher intervals
62 }
63
74 RegisterState(new DamageHeavySoundEvent());
81 RegisterState(new MeleeAttackHeavyEvent());
91 RegisterState(new StaminaLowFilterLower());
93 RegisterState(new DrowningEvent2());
97 RegisterState(new ForceDrinkSoundEvent());
98
99 }
100
102 {
103 int index = state.GetSoundEventID();
104 m_AvailableStates[index] = state;
105 m_ConfigIDToScriptIDmapping.Insert(state.GetSoundVoiceAnimEventClassID(),index);
106 }
107
108
109 void OnTick(float delta_time)
110 {
111 if (m_CurrentState)
112 {
113 if( m_CurrentState.IsFinished())
114 m_CurrentState = null;
115 else
116 m_CurrentState.OnTick(delta_time);
117 }
118 }
119
120 int ConvertAnimIDtoEventID(int anim_id)
121 {
122 return m_ConfigIDToScriptIDmapping.Get(anim_id);
123 }
124
125 override static EPlayerSoundEventType GetSoundEventType(int id)
126 {
127 return m_AvailableStates[id].GetSoundEventType();
128 }
129
131 {
133 {
134 return m_CurrentState.GetSoundEventID();
135 }
136 return -1;
137 }
138
140 {
142 {
143 return m_CurrentState.GetSoundEventType();
144 }
145 return -1;
146 }
147
148 override bool PlayRequestEx(EPlayerSoundEventID id, bool sent_from_server = false, int param = 0)
149 {
150 if (id < 0 || id > (SOUND_EVENTS_MAX - 1))
151 {
152 Error("EPlayerSoundEventID out of bounds");
153 }
154
155 PlayerSoundEventBase requested_state = m_AvailableStates[id];
156 if ( sent_from_server && (param & EPlayerSoundEventParam.SKIP_CONTROLLED_PLAYER) && m_Player.GetInstanceType() == DayZPlayerInstanceType.INSTANCETYPE_CLIENT )
157 {
158 return false;
159 }
160
161 if ( !requested_state.CanPlay(m_Player) )
162 {
163 return false;
164 }
165
166 if (m_CurrentState)
167 {
168 if (param & EPlayerSoundEventParam.HIGHEST_PRIORITY)
169 {
170 m_CurrentState.Stop();
171 }
172 else
173 {
174 int current_type = m_CurrentState.GetSoundEventType();
175 //int requested_type = requested_state.GetSoundEventType();
176
177 if ( (requested_state.GetPriorityOverTypes() & current_type) == 0 )
178 {
179 return false;
180 }
181 if (!requested_state.HasPriorityOverCurrent(m_Player, id, current_type) )
182 {
183 return false;
184 }
185
186 m_CurrentState.Stop();
187 }
188 }
189 m_CurrentState = PlayerSoundEventBase.Cast(requested_state.ClassName().ToType().Spawn());
190 m_CurrentState.InitEx(m_Player, param);
191 if (m_CurrentState.Play())
192 {
193 m_CurrentState.OnPlay(m_Player);
194 }
195 return true;
196 }
197
198
199 override bool PlayRequest(EPlayerSoundEventID id, bool sent_from_server = false)
200 {
201 return PlayRequestEx(id, sent_from_server);
202 }
203
204}
class DamageSoundEvents extends PlayerSoundEventBase DamageLightSoundEvent()
DayZPlayerInstanceType
defined in C++
class DrowningSoundEventBase extends PlayerSoundEventBase DrowningEvent1()
void Error(string err)
Messagebox with error message.
Definition endebug.c:90
DayZPlayer m_Player
Definition hand_events.c:42
class RattlingTeethSoundEvent extends HeatComfortEventsBase HotSoundEvent()
void RattlingTeethSoundEvent()
class HeatComfortEventsBase extends PlayerSoundEventBase FreezingSoundEvent()
class ExhaustedBreathSoundEvent extends HoldBreathSoundEventBase ReleaseBreathSoundEvent()
void ExhaustedBreathSoundEvent()
class HoldBreathSoundEventBase extends PlayerSoundEventBase HoldBreathSoundEvent()
ref InfectedSoundEventBase m_CurrentState
override int GetCurrentStateEventID()
enum EInfectedSoundEventID SOUND_EVENTS_MAX
override int GetCurrentStateEventType()
class InjuryMediumSoundEvent extends InjurySoundEvents InjuryHeavySoundEvent()
class InjurySoundEvents extends PlayerSoundEventBase InjuryLightSoundEvent()
void InjuryMediumSoundEvent()
class JumpEventsBase extends PlayerSoundEventBase JumpSoundEvent()
Definition jumpevents.c:35
class MeleeAttackSoundEvents extends PlayerSoundEventBase MeleeAttackLightEvent()
Definition meleeattack.c:33
class ForceConsumeSoundEvent extends PlayerSoundEventBase ForceFeedSoundEvent()
Definition miscevents.c:34
class PickupHeavySoundEvent extends PlayerSoundEventBase ThirstSoundEvent()
Definition miscevents.c:14
void PickupHeavySoundEvent()
Definition miscevents.c:15
EPlayerSoundEventType
override bool PlayRequestEx(EPlayerSoundEventID id, bool sent_from_server=false, int param=0)
void RegisterState(PlayerSoundEventBase state)
void PlayerSoundEventHandler(PlayerBase player)
@ EXHAUSTED_BREATH
@ STAMINA_UP_LIGHT
@ MELEE_ATTACK_LIGHT
@ STAMINA_LOW_FILTER_LOWER
@ STAMINA_NORMAL_DUMMY
@ STAMINA_LOW_FILTER_UPPER
@ STAMINA_DOWN_LIGHT
@ STAMINA_DOWN_HEAVY
@ STAMINA_LOW_FILTER_MID
int ConvertAnimIDtoEventID(int anim_id)
ref Timer m_UpdateTimer
Definition radialmenu.c:20
EAnimPlayState PlayRequest()
int GetSoundEventType()
class StaminaDownHeavy extends StaminaSoundEventBase StaminaUpHeavy()
class StaminaUpLight extends StaminaSoundEventBase StaminaUpEnd()
void StaminaDownHeavy()
class StaminaSoundEventBase extends PlayerSoundEventBase StaminaDownLight()
void StaminaNormalDummy()
void StaminaUpLight()
void StaminaLowFilterUpper()
class StaminaLowFilterUpper extends StaminaLowFilterBase StaminaLowFilterMid()
class SymptomSoundEventBase extends PlayerSoundEventBase CoughSoundEvent()
void GaspSoundEvent()
void LaugherSoundEvent()
class GaspSoundEvent extends SymptomSoundEventBase FatigueSoundEvent()
class LaugherSoundEvent extends SymptomSoundEventBase SneezeSoundEvent()