コード例 #1
0
ファイル: GameDlg.cpp プロジェクト: jiaozi721/LianLianKan
void CGameDlg::OnTimer(UINT_PTR nIDEvent)
{
	if (nIDEvent == PLAY_TIMER_ID && m_bPlaying && !m_bPause)
	{
		m_GameProgress.StepIt();
		DrawGameTime();
		if(m_GameProgress.GetPos()==10)
			if(!mute)
			m_nSound.TimeCaution();
		if (m_GameProgress.GetPos()==0)
		{
			if(!mute){
			m_nSound.Stop();
			m_nSound.Lose();
			}
			KillTimer(1);
			m_bPlaying = false;
			GetDlgItem(IDC_BTN_START)->EnableWindow(TRUE);
			CGameResult result;
			result.TotalScore = Score+TimeBonus;
			result.TotalCombo = TotalCombo;
			result.TimeBonus = TimeBonus;
			result.DoModal();

		}
	}
	CDialogEx::OnTimer(nIDEvent);
}
コード例 #2
0
ファイル: GameDlg.cpp プロジェクト: jiaozi721/LianLianKan
void CGameDlg::OnBnClickedBtnStart()
{
	if(!mute)
	m_nSound.ButtonClick();
	m_nSound.InGameBGM();
	m_GameProgress.SetRange(0,SetTime);
	m_GameProgress.SetStep(-1);
	m_GameProgress.SetPos(300);
	SetTimer(PLAY_TIMER_ID, 1000,NULL);
	ShowScore();
	DrawGameTime();
	GetDlgItem(IDC_BTN_START)->EnableWindow(m_bPlaying);
	m_bPlaying = true;
	m_bPause = false;
	m_GameC.StartGame();
	UpdateMap();
}
コード例 #3
0
void GameMainScene::Render()
{
	glPushAttrib(GL_ALL_ATTRIB_BITS);
	{
		//ビューポートの設定
		const int width = oka::Screen::GetInstance()->GetWidth();
		const int height = oka::Screen::GetInstance()->GetHeight();
		glViewport(0, 0, width, height);

	if (nullptr != oka::CharacterManager::GetInstance()->GetPlayer())
	{
		//カメラの注視点
		glm::vec3 target = oka::CharacterManager::GetInstance()->GetPlayer()->m_transform.m_position;

		//攻撃を受けている際は注視点を揺らす
		const bool isHit = oka::CharacterManager::GetInstance()->GetPlayer()->GetIsHitAttack();
		if (isHit)
		{
			glm::vec3 shake;

			std::random_device rnd;
			std::mt19937 mt(rnd());
			std::uniform_int_distribution<> x(-1, 1);
			std::uniform_int_distribution<> y(-1, 1);
			std::uniform_int_distribution<> z(-1, 1);

			shake.x = x(mt);
			shake.y = y(mt);
			shake.z = z(mt);

			shake *= 0.02f;

			target += shake;
		}

		g_camera->SetTarget(target);

		const glm::vec3 toVec = oka::CharacterManager::GetInstance()->GetPlayer()->m_transform.m_myToVec;
		const glm::vec3 upVec = oka::CharacterManager::GetInstance()->GetPlayer()->m_transform.m_myUpVec;
	
		//カメラの座標
		glm::vec3 pos;
		pos += upVec*3.0f;
		pos += target - (toVec * 8.0f);
		
		g_camera->SetPos(pos);

		//カメラの上
		glm::vec3 up = g_camera->GetUp();
		up = up + (upVec - up)*0.05f;
		up = glm::normalize(up);
		g_camera->SetUp(up);
	}

		g_camera->Perspective();
		g_camera->SetViewMatrix();
		g_camera->MultViewMatrix();

		/* 光の位置 */
		float light[] = { 0.0f, 1.0f, 0.0f, 0 };
		glLightfv(GL_LIGHT0, GL_POSITION, light);

		//全オブジェクトの描画
		auto itr = oka::GameManager::GetInstance()->m_gameObjects.begin();
		auto end = oka::GameManager::GetInstance()->m_gameObjects.end();

		while (itr != end)
		{
			itr->second->Draw();

			itr++;
		}

		if (nullptr != oka::CharacterManager::GetInstance()->GetPlayer())
		{
			oka::CharacterManager::GetInstance()->GetPlayer()->DrawTarget();
		}

		glDisable(GL_LIGHTING);
		glDisable(GL_DEPTH_TEST);

		const float left = 0.0f;
		const float right = (float)oka::Screen::GetInstance()->GetWidth();
		const float bottom = 0.0f;
		const float top = (float)oka::Screen::GetInstance()->GetHeight();

		g_camera->Ortho(left, right, bottom, top, 1.0f, -1.0f);

		if (nullptr != oka::CharacterManager::GetInstance()->GetPlayer())
		{			
			bool isHit = oka::CharacterManager::GetInstance()->GetPlayer()->GetIsHitAttack();

			//マスク
			if (isHit)
			{
				oka::Screen::GetInstance()->SetMask(glm::vec4(1.0f, 0.0f, 0.0f, 0.3f));
			}

			oka::ScoreManager::GetInstance()->DrawScore();
			oka::CharacterManager::GetInstance()->GetPlayer()->DrawRadarPos();

			DrawGameTime();
			DrawRadar();

			auto itr = oka::CharacterManager::GetInstance()->GetCharacters()->begin();
			auto end = oka::CharacterManager::GetInstance()->GetCharacters()->end();

			while (itr != end)
			{
				(*itr)->DrawRadarPos();

				itr++;
			}

			//操作方法
			glColor3f(0.0f, 0.0f, 0.0f);
			oka::MyString::Draw("[Lstick]Control", glm::vec2(300.0f, 100.0f), glm::vec2(0.2f, 0.2f));
			oka::MyString::Draw("[LB/RB]Roll", glm::vec2(500.0f, 100.0f), glm::vec2(0.2f, 0.2f));
			oka::MyString::Draw("[A]Accel", glm::vec2(300.0f, 50.0f), glm::vec2(0.2f, 0.2f));
			oka::MyString::Draw("[X]Shot", glm::vec2(400.0f, 50.0f), glm::vec2(0.2f, 0.2f));
			oka::MyString::Draw("[Y]HomingShot", glm::vec2(500.0f, 50.0f), glm::vec2(0.2f, 0.2f));
		}

		fps();

	}
	glPopAttrib();
}