Exemplo n.º 1
0
void LoopingSound::Update()
{
	if (m_bDisabled) return;

	switch (m_state)
	{
	case STATE_MOVE_START:

		if (m_waitTimer < GetTick(TIMER_SYSTEM))
		{
			m_waitTimer = 0;
			//time to kick into the move loop sound
			GetAudioManager()->Stop(m_transitionSoundHandle);
			m_transitionSoundHandle = AUDIO_HANDLE_BLANK;

			PlayMoveSound();
		}
		break;

	case STATE_MOVE_END:

		if (m_waitTimer < GetTick(TIMER_SYSTEM))
		{
			m_waitTimer = 0;
			//time to kick into the move loop sound
			GetAudioManager()->Stop(m_transitionSoundHandle);
			m_transitionSoundHandle = AUDIO_HANDLE_BLANK;

			PlayIdleSound();
		}
		break;

	case STATE_IDLE:
		if (GetEmulatedPlatformID() == PLATFORM_ID_WEBOS)
		{
			//special hack to fix crappy SDL audio issues with looping cutting out
			if (m_loopingSoundHandle > 0 && !GetAudioManager()->IsPlaying(m_loopingSoundHandle))
			{
				//restart it
				#ifdef _DEBUG
				//LogMsg("Kickstarting idle loop again");
				#endif
				PlayIdleSound();
			}
		}


		break;
	}

}
Exemplo n.º 2
0
void LoopingSound::Init( string loopingMove, string moveStart /*= ""*/, string moveEnd /*= ""*/, string loopingIdle /*= ""*/ )
{

	m_loopingIdle = loopingIdle;
	m_loopingMove = loopingMove;
	m_moveStart = moveStart;
	m_moveEnd = moveEnd;

	//preload as needed
	
	if (!m_moveStart.empty()) GetAudioManager()->Preload(m_moveStart);
	if (!m_moveEnd.empty()) GetAudioManager()->Preload(m_moveEnd);

	PlayIdleSound();
	
}
Exemplo n.º 3
0
void LoopingSound::SetMoving( bool bNew )
{
	if (m_bDisabled) return;

	if (bNew == m_bMoving) return; //nothing really changed

	m_bMoving = bNew;
  
	KillAudio();

	if (m_bMoving)
	{
	
		if (m_moveStart.empty())
		{
			//there is no move start sound, so just play the looping moving sound right now
			PlayMoveSound();
		} else
		{
			//play a starting sound first
			m_transitionSoundHandle =  GetAudioManager()->Play(m_moveStart, false, false, m_bAddBasePath);
			GetAudioManager()->SetVol(m_transitionSoundHandle, m_volume);

			m_waitTimer = GetTick(TIMER_SYSTEM)+m_moveStartTimeMS;
			m_state = STATE_MOVE_START;
		}
	} else
	{
		//stop moving and play the idle sound

		if (m_moveEnd.empty())
		{
			PlayIdleSound();
		} else
		{
			//play a stopping sound first
			m_transitionSoundHandle =  GetAudioManager()->Play(m_moveEnd, false, false, m_bAddBasePath);
			GetAudioManager()->SetVol(m_transitionSoundHandle, m_volume);

			m_waitTimer = GetTick(TIMER_SYSTEM)+m_moveEndTimeMS;
			m_state = STATE_MOVE_END;

		}

	}
}
Exemplo n.º 4
0
void LoopingSound::Init( string loopingMove, string moveStart /*= ""*/, string moveEnd /*= ""*/, string loopingIdle /*= ""*/, bool bAddBasePath )
{

	m_loopingIdle = loopingIdle;
	m_loopingMove = loopingMove;
	m_moveStart = moveStart;
	m_moveEnd = moveEnd;

	m_bAddBasePath = bAddBasePath;
	//preload as needed
	
	if (!m_moveStart.empty()) GetAudioManager()->Preload(m_moveStart, false, false, bAddBasePath);
	if (!m_moveEnd.empty()) GetAudioManager()->Preload(m_moveEnd, false, false, bAddBasePath);

	PlayIdleSound();
	
}
Exemplo n.º 5
0
void LoopingSound::SetDisabled( bool bDisabled )
{
	if (bDisabled == m_bDisabled) return; //no change

	if (bDisabled)
	{
		KillAudio();
		m_bMoving = false;
	} else
	{
	  m_state = STATE_IDLE;
	  PlayIdleSound();
	}

	m_bDisabled = bDisabled;


}