Example #1
0
void cAudio :: Close( void )
{
	if( bInitialised )
	{
		if( bSounds )
		{
			StopSounds();

			for( unsigned int i = 0; i < AUDIO_MAX_SOUNDS; i++ )
			{
				Sound[i] = NULL;
			}
		}

		if( bMusic )
		{
			Mix_FreeMusic( Music );
			Music = NULL;
		}

		Mix_CloseAudio();

		bInitialised = 0;
	}
}
Example #2
0
void cAudio :: ToggleSounds( void )
{
	bSounds = !bSounds;

	if( !bSounds )
	{
		StopSounds();
	}
	else
	{
		Init();
		PlaySound( SOUNDS_DIR "/audio_on.ogg" );
	}
}
//------------------------------------------------------------------------
void CVehicleMovementHelicopter::OnEvent(EVehicleMovementEvent event, const SVehicleMovementEventParams& params)
{
	switch (event)
	{
	case eVME_Repair:
		{
			if(params.fValue < 0.25)
			{
				m_damageActual = 0.0f;
				m_damage = 0.0f;
			}
		}
		break;

  case eVME_Collision:
    {
      if (0)
      {
        m_isEnginePowered = false;

        pe_simulation_params simParams;
        simParams.dampingFreefall = 0.01f;
        simParams.gravity = Vec3(0.0f, 0.0f, -9.8f);
        GetPhysics()->SetParams(&simParams);
      }
    }
    break;

	case eVME_GroundCollision:
		{
			const float stopOver = 1.0f;
		}
		break;

	case eVME_Damage:
		{
      if (!m_pVehicle->IsIndestructable())
      {
			  const float stopOver = 1.0f;

			  m_damage = params.fValue;

        if (m_damage > 0.95f)
        {
          m_isEngineDisabled	= true;
          m_isEnginePowered	= false;

          StopExhaust();
          StopSounds();

					IPhysicalEntity * pPhysicalEntity = GetPhysics();

          pe_action_impulse impulse;
          impulse.angImpulse = Vec3(0.1f, 100.f, 0.0f);
          pPhysicalEntity->Action(&impulse);

          pe_simulation_params simParams;
          simParams.dampingFreefall = 0.01f;
          simParams.gravity = Vec3(0.0f, 0.0f, -9.8f);
          pPhysicalEntity->SetParams(&simParams);

          SVehicleEventParams eventParams;
          eventParams.entityId = 0;
          m_pVehicle->BroadcastVehicleEvent(eVE_Destroyed, eventParams);

          if (m_pVehicle)
          {
            if (IEntity *entity = m_pVehicle->GetEntity())
            {
              if (IAIObject *aiobject = entity->GetAI())
              {
                aiobject->Event(AIEVENT_DISABLE, NULL);
              }
            }
          }
        }
      }
		}
		break;

	case eVME_WarmUpEngine:
		m_enginePower = m_enginePowerMax;
		break;

	//case eVME_Turbulence:
	//	m_turbulence = max(m_turbulence, params.fValue);
	//	break;

	default:
		CVehicleMovementBase::OnEvent(event, params);
		break; 
	}
}
Example #4
0
void CGameView::OnTimer(UINT_PTR nIDEvent)
{
	// 심장소리 음악
	if (!gv_min && gv_sec < 10 && !gv_timeDV){	// 분이 0이고 초가 10초 미만일 때 시간제한 음악 켬
		StopSounds (gv_bgDV) ;
		PlaySounds (gv_timeDV) ;
	}

	CClientDC dc (this) ;
	CRect rect ;
	GetClientRect (&rect) ;
	CFont myFont, *pOldFont ;
	CString str;
	
	// Text 설정 Part
	myFont.CreateFont (25, 0, 0, 0, FW_BOLD, true, false, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, gv_font) ;
	pOldFont =dc.SelectObject (&myFont) ;
	dc.SetBkColor (gv_bgColor) ;		// 글자의 배경은 바탕과 같이 
	dc.SetTextColor (0x00FFFFFF & ~gv_bgColor) ;		// 글자 색을 바탕화면의 반대 색으로

	// 시간에 따른 출력부
	if (!gv_scoreTF) {
		if (gv_min < 10 && gv_min) gv_minStr.Format (_T(" 0%d"), gv_min) ;
		else if (!gv_min) gv_minStr.Format (_T (" 00")) ;
		else gv_minStr.Format (_T (" %d"), gv_min) ;
		
		if (gv_sec < 10 && gv_sec) gv_secStr.Format (_T("0%d"), gv_sec) ;
		else if (!gv_sec) gv_secStr.Format (_T ("00")) ;
		else gv_secStr.Format (_T ("%d"), gv_sec) ;

		if (gv_csec < 10 && gv_csec) gv_csecStr.Format (_T("0%d"), gv_csec) ;
		else if (!gv_csec) gv_csecStr.Format (_T ("00")) ;
		else gv_csecStr.Format (_T ("%d"), gv_csec) ;

		str.Format (_T (" %s : %s : %s "), gv_minStr, gv_secStr, gv_csecStr) ;
		dc.SetTextAlign (TA_RIGHT) ;
		dc.TextOutW (rect.Width () -20, rect.top +45, str) ;

		// 초계산
		if (--gv_csec < 0) {
			if (!gv_min && !gv_sec) OnSuccess () ;
			gv_csec =99 ;
			gv_sec-- ;
			pTimeDlg ->timeCtrl.StepIt () ;		// 초가 줄때마다 실행
		}
		if (gv_sec < 0 && gv_min) {
			gv_sec =59 ;
			gv_min-- ;
		}

		// 카운트 출력
		str.Format (_T (" CLICK COUNT : %u "), gv_cnt) ;
		dc.TextOutW (rect.Width () -20, rect.top +20, str) ;

		// 점수 출력
		dc.SetTextAlign (TA_CENTER) ;
		str.Format (_T (" Score : %u "), gv_point) ;
		dc.TextOutW (rect.Width () /2, rect.top +25, str) ;
	}
	else {
		while (gv_tempMin-- > 0) gv_tempSec +=60 ;		// 분이 남아 있다면 초로 옮김
		// 시간 감소 및 포인트 증가
		if (gv_tempSec > 0) {					// 초가 0보다 클때까지
			gv_point+=3 ; gv_tempSec-- ;			// 점수는 3증가 초는 1증감
			pTimeDlg ->timeCtrl.StepIt () ;
			dc.SetTextAlign (TA_CENTER) ;
			str.Format (_T (" Score :%u "), gv_point) ;	
			dc.TextOutW (rect.Width () /2 , rect.top +25, str) ;
		}
	}
	dc.SelectObject (myFont) ;
	myFont.DeleteObject () ;
	CView::OnTimer(nIDEvent);
}
Example #5
0
// 성공했을때
void CGameView::OnSuccess(void)
{
	// 랭크 기록 여부
	KillTimer (true) ;	// 메세지 박스를 선택 안해도 시간이 흐르지 않도록
	int res;
	StopSounds (gv_bgDV) ;
	StopSounds (gv_timeDV) ;		// 시간이 지나거나 성공하면 음악을 끔
	
	if(gv_sec != 0){
		PlaySounds (gv_successDV) ;
		gv_scoreTF =!gv_scoreTF ;		// 스코어 타이머 가동
		gv_tempMin =gv_min ; gv_tempSec =gv_sec ;

		SetTimer (true, 40, NULL) ;	// 점수에 남은 시간에 대한 포인트를 더한다.
		res =AfxMessageBox (_T ("축하드립니다! 랭크를 기록 하시겠습니까?"), MB_YESNO) ;
		
		// 기록 할 때
		if (res == IDYES) {
			CRankNameDlg dlgName ;
			dlgName.DoModal () ;

			CRankDlg *mem =new CRankDlg (dlgName.name, gv_minStr, gv_secStr, gv_csecStr, gv_cnt, gv_lev, gv_rank, gv_point) ;
			mem ->DoModal () ;
		}
	}
	else{
		PlaySounds (gv_failDV) ;
		res =AfxMessageBox (_T ("안타깝네요. 다시 하시겠습니까?"), MB_YESNO) ;
		gv_TF =true ;		// 재시작을 다시 묻지 않기 위해
		StopSounds (gv_failDV) ;		// 대화상자를 닫으면 음악을 끄게한다.
	}
	// 재시작 여부
	if(gv_TF == false){		// 게임 끝내면 gv_TF는 원래 값으로 되돌아옴
		KillTimer (true) ;		
		gv_scoreTF =!gv_scoreTF ;		// 스코어 타이머 해제
		StopSounds (gv_successDV) ;		// 대화상자가 뜨기전 음악을 끈다.
		res = AfxMessageBox(_T("다시 시작하시겠습니까?"), MB_YESNO);
	}

	if(res == IDYES){
		gv_cnt = gv_point = gv_min = 0 ;
		gv_csec =100 ;
		CGameDoc* pDoc = GetDocument();
		gv_sec = pDoc->gd_time;
		pDoc->gd_bRandom = TRUE; // 랜덤하게 그림의 ID변경

		for(int n=0;n<pDoc->gd_nRow;n++)
			for(int m=0;m<pDoc->gd_nCol;m++)
				pDoc->gd_bShow[n][m] = FALSE;
		
		// 아무 그림도 선택하지 않은것으로 인식하기 위한 초기화
		pDoc->gd_nBmpFirstID = pDoc->gd_nBmpSecondID = 0 ;
		pDoc->gd_bMouse = FALSE;
		gv_nMatchCount = 0; 
		isInit = TRUE;
		Invalidate();
	}
	else{ // 다시 하지 않으면 종료
		PlaySound (L"C:\\image\\벌써가게흐흥.wav", NULL, SND_SYNC) ;
		PostMessageW(WM_QUIT);
	}
}