void CDirectXFramework::Render()
{
	// If the device was not created successfully, return
	if(!m_pD3DDevice)
		return;
	//player
	D3DXMATRIX identity;
	D3DXMatrixIdentity(&identity);
	m_pD3DSprite->SetTransform(&identity);

	m_pD3DDevice->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER | D3DCLEAR_STENCIL, D3DXCOLOR(0.0f, 0.4f, 0.8f, 1.0f), 1.0f, 0);
	//////////////////////////////////////////////////////////////////////////
	// All draw calls between swap chain's functions, and pre-render and post- 
	// render functions (Clear and Present, BeginScene and EndScene)
	/////////////////////////////////////////////////////////////////////////
	m_pD3DDevice->BeginScene();
	m_pD3DSprite->Begin(D3DXSPRITE_ALPHABLEND);
	
		
	// draw nick fury back ground
	drawBkgd();
	// you win the game!
	if(enemy.KillCounter >= 3 && enemy2.KillCounter >= 3)
	{
		drawWinScreen();
	}
	if(enemy.enemyDead == false)
	{
		m_pD3DSprite->Draw(enemy.enemySprite,&enemy.enemySheetRect,&D3DXVECTOR3(0,0,0),&enemy.enemyPosition,D3DCOLOR_ARGB(255, 255, 255, 255));
		explosion.enemyExplosionIndex = 0;
	}
	if(enemy.enemyDead == true)
		if(enemy.KillCounter <= 3)
		m_pD3DSprite->Draw(explosion.enemyExplosion,&explosion.enemySheetRectExplosion,&D3DXVECTOR3(0,0,0),&enemy.enemyPosition,D3DCOLOR_ARGB(255, 255, 255, 255));
	if(enemy2.enemyDead == true)
		if(enemy2.KillCounter <= 3)
		m_pD3DSprite->Draw(explosion2.enemyExplosion,&explosion2.enemySheetRectExplosion,&D3DXVECTOR3(0,0,0),&enemy2.enemyPosition,D3DCOLOR_ARGB(255, 255, 255, 255));
	if(enemy2.enemyDead == false)
	{
		m_pD3DSprite->Draw(enemy2.enemySprite,&enemy2.enemySheetRect,&D3DXVECTOR3(0,0,0),&enemy2.enemyPosition,D3DCOLOR_ARGB(255, 255, 255, 255));
		explosion2.enemyExplosionIndex = 0;
	}
	if(playerWon == false)
	{
	m_pD3DSprite->Draw(player.playerSprite, &player.playerSheetRect, &D3DXVECTOR3(0,0,0), &player.playerPosition, D3DCOLOR_ARGB(255, 255, 255, 255));
	if(player.shootRight || player.shootDown || player.shootLeft || player.shootUp == true)
	{
	m_pD3DSprite->Draw(player.projectile.projectileSprite,&player.projectile.projectileSheetRect,&D3DXVECTOR3(0,0,0),&player.projectile.projectilePosition,D3DCOLOR_ARGB(255, 255, 255, 255));
	}
	}
	m_pD3DSprite->End();

	// EndScene, and Present the back buffer to the display buffer
	m_pD3DDevice->EndScene();
	m_pD3DDevice->Present(0, 0, 0, 0);

}
예제 #2
0
void PlayState::draw() const
{
	p_rtexture_->draw(background_);

	for (GameObject* obj : p_objects_)
		if (obj->getAlive())
			p_rtexture_->draw(*obj);

	p_rtexture_->draw(map_);
	p_rtexture_->draw(scoreText_);

	switch (gameplayState_)
	{
	case Paused:
		drawPauseScreen();
		break;
	case DeathScreen:
		drawDeathScreen();
		break;
	case WinScreen:
		drawWinScreen();
		break;
	}
}
예제 #3
0
void display(){
  if(exitting) {
    exit(0);
    return;
  }
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
  glClearColor(0.0f,0.0f,0.0f,0.0f);	// Black Background
  glPushMatrix();
  gluLookAt(cam.getCamX(), cam.getCamY(), cam.getCamZ(),
    cam.getLookAtX(), cam.getLookAtY(), cam.getLookAtZ(),
    0.0, 1.0, 0.0);

  place_lights();
  if(!gameOver)
  {
    if(starting)
	{
		glPushMatrix();
			//glTranslatef(.5,.5,.5);
			drawIntroScreen();
		glPopMatrix();
	}
	glPushMatrix();
    scene.draw();
    glPopMatrix();

    glPushMatrix();
    if(placingTower){
      setMaterial(Exp);
      glNormal3f(0.0, 1.0, 0.0);
      glBegin(GL_POLYGON);{
        glVertex3f(worldX - GRID_SIZE*2.0, 0.001, worldZ - GRID_SIZE*2.0);
        glVertex3f(worldX - GRID_SIZE*2.0, 0.001, worldZ + GRID_SIZE*2.0);
        glVertex3f(worldX + GRID_SIZE*2.0, 0.001, worldZ + GRID_SIZE*2.0);
        glVertex3f(worldX + GRID_SIZE*2.0, 0.001, worldZ - GRID_SIZE*2.0);
      }glEnd();
    }
    if(towerSelected){
      setMaterial(Exp);
      glNormal3f(0.0, 1.0, 0.0);
      glBegin(GL_POLYGON);{
        glVertex3f(towerSelect->getX() - GRID_SIZE*2.0 + P1_POSX, 0.001, towerSelect->getZ() - GRID_SIZE*2.0 + P1_POSZ);
        glVertex3f(towerSelect->getX() - GRID_SIZE*2.0 + P1_POSX, 0.001, towerSelect->getZ() + GRID_SIZE*2.0 + P1_POSZ);
        glVertex3f(towerSelect->getX() + GRID_SIZE*2.0 + P1_POSX, 0.001, towerSelect->getZ() + GRID_SIZE*2.0 + P1_POSZ);
        glVertex3f(towerSelect->getX() + GRID_SIZE*2.0 + P1_POSX, 0.001, towerSelect->getZ() - GRID_SIZE*2.0 + P1_POSZ);
      }glEnd();
    }
    p1.draw(placingTower); // GL_RENDER for normal, GL_SELECT for picking.
    opponent.player.draw(false);
    //drawProjectiles();
    glPopMatrix();

    vfc::extractPlanes();
    glColor3f(0.8, 0.5, 0.3);
    float lx = tlx*2.0*GRID_SIZE - GRID_SIZE*float(GRID_WIDTH) + GRID_SIZE + (GRID_SIZE * 2);
    float lz = tly*2.0*GRID_SIZE - GRID_SIZE*float(GRID_HEIGHT) + GRID_SIZE + (GRID_SIZE * 2);

    // draw root directories
    glPushMatrix();
    glTranslatef(0.0, 2 * GRID_SIZE, 1.0 * GRID_HEIGHT * GRID_SIZE + (GRID_SIZE * 8));

    glPushMatrix(); 
    glScalef(0.25, 0.25, 0.25);
    glCallList(vtd_dl::rootDL);
    glPopMatrix();

    glTranslatef(GRID_WIDTH * GRID_SIZE * 3, 0.0, 0.0);

    glPushMatrix(); 
    glScalef(0.25, 0.25, 0.25);
    glCallList(vtd_dl::rootDL);
    glPopMatrix();
    glPopMatrix();

    if(!starting){
      glPushMatrix();
      renderUI(GW, GH,&p1,&opponent.player,((CYCLE_TIME-last_cycle)/1000.0), GL_RENDER);
      glPopMatrix();
    }

    drawMouseBox(clicked);
  }
  else
  {
    if(winner == COMPUTER_WIN)
      drawBlueScreen();
    else
      drawWinScreen();
  }

  glPopMatrix();
  glutSwapBuffers();
}