Exemple #1
0
void CEnemy1::Update(float eTime)
{
	IEnemy::Update(eTime);
	CGameScene *gs = (CGameScene*)this->parent->parent;
	
	if (hp <= 0)
	{
		CParticleSystem *p = gs->PushEffect(pos.x + ani->width/2, pos.y + ani->height/2 + 55.0f);
		p->setScalep(4.0f, 5.0f);
		p->direction = -90;
		p->spread = 30;
		p->setSpeed(400.0f, 700.0f);
		p->start();


		CGSoundManager * sm = App::GetInstance()->g_pSoundManager;
		sm->Play(2);
		
		this->parent->PopScene(this);
		return;
	}

	time += eTime;
	time2 += eTime;
	if (pos.y < 50)
	{
		pos.y += 150 * eTime;
		if (pos.y > 50) pos.y = 50;
	}

	if (time > 3.0f)
	{
		gs->PushEffect(this->pos.x+20, this->pos.y + 140);
		gs->PushArrow(this->pos.x - 65, this->pos.y + 170, D3DX_PI / 2);
		gs->PushArrow(this->pos.x - 65, this->pos.y + 170, D3DX_PI / 2 - 0.4);
		gs->PushArrow(this->pos.x - 65, this->pos.y + 170, D3DX_PI / 2 + 0.4);
		time = 0.f;
	}

	if (time2 > 7.0f)
	{
		pos.y += 700 * eTime;
	}

	if (pos.y > App::HEIGHT)
	{
		this->parent->PopScene(this);
		return;
	}

}
CGameScene::CGameScene() : time(0.0f), delay(1.5f)
{
	m_pBackground = new CBackground();
	PushScene(m_pBackground);
	m_pBoss = new CBoss();
	PushScene(m_pBoss);
	m_pBoss->SetPosition(App::WIDTH / 2 - m_pBoss->stand->width / 2 + 50, -1000);

	m_pFinalBoss = nullptr;
	m_pStandBoss = nullptr;
	m_pPlayer = new CPlayer();
	PushScene(m_pPlayer);
	m_pPlayer->SetPosition(App::WIDTH / 2 - m_pPlayer->normalAni->width / 2,
		App::HEIGHT - m_pPlayer->normalAni->height);

	m_pArrowScene = new CArrowScene();
	PushScene(m_pArrowScene);
	m_pEffectScene = new IScene();
	PushScene(m_pEffectScene);
	speed = 1.0f;

	CGSoundManager *sm = App::GetInstance()->g_pSoundManager;
	sm->AddSoundBuffer(sm->LoadWav(_T("resource/sounds/tok.wav")));
	sm->AddSoundBuffer(sm->LoadWav(_T("resource/sounds/play.wav")));
	sm->AddSoundBuffer(sm->LoadWav(_T("resource/sounds/potal.wav")));
	sm->Play(1, TRUE);

}
void CGameScene::Input(float eTime)
{
	CGSoundManager *sm = App::GetInstance()->g_pSoundManager;
	eTime *= speed;
	IScene::Input(eTime);
	if (App::GetInstance()->g_pInputManager->keyState(VK_LEFT) > 0)
	{
		m_pPlayer->Move(-300 * eTime);
		if (m_pPlayer->pos.x < 0) {
			m_pPlayer->pos.x = 0;
		}
	}
	if (App::GetInstance()->g_pInputManager->keyState(VK_RIGHT) > 0)
	{
		m_pPlayer->Move(300 * eTime);
		if (m_pPlayer->pos.x > (App::GetInstance()->WIDTH - 50)) {
			m_pPlayer->pos.x = (App::GetInstance()->WIDTH - 50);
		}
	}
	if (App::GetInstance()->g_pInputManager->keyState(VK_UP) > 0) {
		m_pPlayer->pos.y -= 200 * eTime;
		if (m_pPlayer->pos.y < 0) {
			m_pPlayer->pos.y = 0;
		}
	}
	if (App::GetInstance()->g_pInputManager->keyState(VK_DOWN) > 0) {
		m_pPlayer->pos.y += 200 * eTime;
	}
	if (App::GetInstance()->g_pInputManager->keyState(VK_SPACE) == 1) {
		sm->Play(2);
		if (speed == 1.0f) {
			speed = 0.0f;
		}
		else {
			speed = 1.0f;
		}
	}
	if (App::GetInstance()->g_pInputManager->keyState(VK_LSHIFT) ==1) {
		if (speed == 1.0f) {
			speed = 0.3f;
		}
		else if (speed == 0.0f) {
			speed = 0.0f;
		}
		else if (speed == 0.3f) {
			speed = 1.0f;
		}
	}
}
void CGameScene::Update(float eTime)
{
	CGSoundManager *sm = App::GetInstance()->g_pSoundManager;
	eTime *= speed;
	IScene::Update(eTime);
	time += eTime;
	bulletTime += eTime;
	if (time >= delay) {
		sm->Play(0);
		delay = 0.1;
		time = 0.f;
		this->PushArrow(rand() % App::WIDTH, -200.0f, -D3DX_PI / 2);
	}//총알

	if (m_pBoss == nullptr && m_pStandBoss != nullptr && bulletTime >= delay) {//에러메시지
		if (m_pStandBoss == nullptr)
			parent->PopScene(this);
		delay = 0.001;
		bulletTime = 0.f;
		switch (cnt) {
		case 30:
		case 31:
		case 32:
		case 33:
		case 34:
		case 35:
			for (int i = 0; i < 15; i++)
			{
				this->PushStandBullet(m_pStandBoss->pos.x + (i * 30),
					m_pStandBoss->pos.y + m_pStandBoss->StandBoss->height / 2,
					D3DX_PI / 2);
				//수직패턴
			}
			++cnt;
			break;
		case 50:
			for (int i = 0; i < 8; i++) {
				float angle = D3DX_PI / 2 - 0.1*(i - 4);
				this->PushStandBullet(m_pStandBoss->pos.x + m_pStandBoss->StandBoss->width / 2,
					m_pStandBoss->pos.y + m_pStandBoss->StandBoss->height / 2,
					angle);
			}
			cnt = 0;
			//방사형패턴 카운트 초기화 해주기 패턴 더 집어넣을거면 카운트 증가 시켜주기
			break;
		default:
			this->PushStandBullet(m_pStandBoss->pos.x + m_pStandBoss->StandBoss->width / 2,
				m_pStandBoss->pos.y + m_pStandBoss->StandBoss->height / 2,
				(rand() % (int)(D3DX_PI * 1 * 100)) / 100.0f);
			cnt++;
			break;
		}
	}
	//에러메시지 끝
	if (m_pBoss != nullptr && bulletTime >= delay) {		//창림
		if (m_pBoss == nullptr) {
			parent->PopScene(this);
		}
		delay = 0.005;
		bulletTime = 0.f;
		switch (cnt) {
		case 35:
		case 36:
		case 37:
		case 38:
		case 39:
		case 40:
		case 41:
		case 42:
		case 43:
		case 44:
		case 45:
		case 46:
		case 47:
		case 48:
		case 49:
		case 50:
			delay = 0.001;
			for (int i = 0; i < 2; i++) {
				this->PushBullet(m_pBoss->pos.x + 40 + (i * 40) + 115,
					m_pBoss->pos.y + 80,
					D3DX_PI / 2);
				/*this->PushBullet(m_pStandBoss->pos.x + m_pBoss->stand->width / 2,
					m_pBoss->pos.y + m_pBoss->stand->height / 2,
					angle);*/
			}
			delay = 0.05;
			++cnt;
			break;
		case 95:
			for (int i = 0; i < 8; i++) {
				float angle = D3DX_PI / 2 - 0.1*(i - 5);
				this->PushBullet(m_pBoss->pos.x + m_pBoss->stand->width / 2 - 52,
					m_pBoss->pos.y + m_pBoss->stand->height / 2 - 35,
					angle);
			}
			cnt = 0;
			break;
		default:
			this->PushBullet(m_pBoss->pos.x + m_pBoss->stand->width / 2 - 52,
				m_pBoss->pos.y + m_pBoss->stand->height / 2 - 35,
				(rand() % (int)(D3DX_PI * 1 * 100)) / 100.0f);
			++cnt;
			break;
		}
	}
	//창림끝

	//장석현
	if (m_pBoss == nullptr && m_pStandBoss == nullptr && bulletTime >= delay && m_pFinalBoss != nullptr) {
		if (m_pFinalBoss == nullptr) {
			parent->PopScene(this);
		}
		bulletTime = 0.f;
		delay = 0.0001;
			switch (cnt) {
			case 25:
			case 26:
			case 27:
			case 28:
			case 29:
			case 30:
			case 31:
			case 32:
			case 33:
			case 34:
			case 35:
				for (int i = 0; i < 15; i++)
				{
					this->PushFinalBullet(m_pFinalBoss->normal->pos.x + m_pFinalBoss->normal->width/2+(i * 30) - 350,
						m_pFinalBoss->pos.y + m_pFinalBoss->normal->height / 2,
						D3DX_PI / 2);
					//수직패턴
				}
				this->PushFinalBullet(m_pFinalBoss->normal->pos.x + m_pFinalBoss->normal->width / 2 - 40,
					m_pFinalBoss->normal->pos.y + m_pFinalBoss->normal->height / 2,
					(rand() % (int)(D3DX_PI * 1 * 100)) / 100.0f);
				++cnt;
				break;
			case 50:
				for (int i = 0; i < 8; i++) {
					float angle = D3DX_PI / 2 - 0.1*(i - 4);
					this->PushFinalBullet(m_pFinalBoss->normal->pos.x + m_pFinalBoss->normal->width / 2-40,
						m_pFinalBoss->pos.y + m_pFinalBoss->normal->height / 2,
						angle);
				}
				for (int i = 0; i < 8; i++) {
					float angle = D3DX_PI / 2 - 0.1*(i - 4);
					this->PushFinalBullet(m_pFinalBoss->normal->pos.x + m_pFinalBoss->normal->width / 2 - 10,
						m_pFinalBoss->pos.y + m_pFinalBoss->normal->height / 2,
						angle);
				}
						cnt = 0;
						//방사형패턴 카운트 초기화 해주기 패턴 더 집어넣을거면 카운트 증가 시켜주기
						break;
			default:
				this->PushFinalBullet(m_pFinalBoss->normal->pos.x + m_pFinalBoss->normal->width / 2 - 40,
					m_pFinalBoss->normal->pos.y + m_pFinalBoss->normal->height / 2,
					(rand() % (int)(D3DX_PI * 1 * 100)) / 100.0f);
				this->PushFinalBullet(m_pFinalBoss->normal->pos.x + m_pFinalBoss->normal->width / 2 - 70,
					m_pFinalBoss->normal->pos.y + m_pFinalBoss->normal->height / 2,
					(rand() % (int)(D3DX_PI * 1 * 100)) / 100.0f);
				this->PushFinalBullet(m_pFinalBoss->normal->pos.x + m_pFinalBoss->normal->width / 2 - 40 - 40,
					m_pFinalBoss->normal->pos.y + m_pFinalBoss->normal->height / 2,
					(rand() % (int)(D3DX_PI * 1 * 100)) / 100.0f);
				this->PushFinalBullet(m_pFinalBoss->normal->pos.x + m_pFinalBoss->normal->width / 2 - 70 - 40,
					m_pFinalBoss->normal->pos.y + m_pFinalBoss->normal->height / 2,
					(rand() % (int)(D3DX_PI * 1 * 100)) / 100.0f);
				cnt++;
					}
				}
	}