Ejemplo n.º 1
0
void GameWorld::Display(void)
{
	SoundController->loopmain();
	glutSetWindow(1);

	lastdrawn = glutGet(GLUT_ELAPSED_TIME);

	glClearColor(0.0f, 0.0f, 0.0f, 1.0f ); 
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glLoadIdentity();
	camera.Render(playerObj->GetPosition());
	playerObj->Display();
	reticuleObj->Display();
	terrainObj->Display();

	PlayerMovement();
	Vector3 difference = reticuleObj->GetPosition()
		- playerObj->GetPosition();
	double angle = atan(difference.x / difference.z) * (180 / PI);
	if(difference.z < 0)
	{
		playerObj->SetAngle(angle+180);
	}
	else
	{
		playerObj->SetAngle(angle);
	}

	glPushMatrix();
		glScalef(50.0, 50.0, 50.0);
		glTranslatef(0,-0.40,0);
		level.DrawModel();
	glPopMatrix();

	ProjectileManager::UpdateProjectiles();
	
	AImanage->CheckForAICreate();
	AImanage->UpdateAI(playerObj->GetPosition());
	


	glFlush();
	glutSwapBuffers();	

	//std::cout << "x = " << playerObj->GetPosition().x << std::endl;
	//std::cout << "z = " << playerObj->GetPosition().z << std::endl;
}
eStateStatus CGameWorld::Update(float aTimeDelta)
{
	myTextFPS->myText = "FPS " + std::to_string(myTimerManager.GetMasterTimer().GetFPS());
	myTextFPS->myPosition = { 0.5f - myTextFPS->GetWidth() / 2, 0.05f };

	if (myInputManager.KeyPressed(DIK_F1) == true)
	{
		ResolutionManager::GetInstance()->ToggleFullscreen();
	}

#ifdef _DEBUG
	if (myInputManager.KeyPressed(DIK_F2) == true)
	{
		myShouldRenderDebug = !myShouldRenderDebug;
	}
#endif

	if (myInputManager.KeyPressed(DIK_F3) == true)
	{
		myShouldRenderFPS = !myShouldRenderFPS;
	}

	if (myInputManager.KeyPressed(DIK_F4) == true)
	{
		myShouldRenderNavPoints = !myShouldRenderNavPoints;
	}

#ifdef _DEBUG
	if (myInputManager.KeyPressed(DIK_SPACE) == true)
	{
		ChangeLevel("kitchen");
		ResetGame();

		std::cout << "Resetted game" << std::endl;
	}
#endif

	float fadeSpeed = 2.0f;
	if (myDoFadeIn == true)
	{
		myFadeIn -= aTimeDelta * fadeSpeed;
		if (myFadeIn <= 0.0f)
		{
			myFadeIn = 0.0f;
		}
	}
	else
	{
		myFadeIn += aTimeDelta * fadeSpeed;
		if (myFadeIn >= 1.0f)
		{
			myFadeIn = 1.0f;
		}
	}

	if (myResettedGame == true)
	{
		myResettedGame = false;
		return eStateStatus::eKeepState;
	}

	myPlayerIsPresent = false;
	myRenderPasses.RemoveAll();
	bool hasMoved = false;

	if (myCurrentRoom != nullptr)
	{
		for (unsigned int i = 0; i < myCurrentRoom->GetObjectList()->Size(); ++i)
		{
			UpdateObject((*myCurrentRoom->GetObjectList())[i], aTimeDelta);
		}
		if (myOptionsMenu.GetActive() == true)
		{
			PlayerMovement(false, false, false, aTimeDelta);
			hasMoved = true;
		}
	}
	if (myOptionsMenu.GetActive() == false)
	{
		bool myCachedTalkIsOn = myTalkIsOn;
		bool input = EventManager::GetInstance()->Update(aTimeDelta, myTalkIsOn);
		if (myResettedGame == true)
		{
			return eStateStatus::eKeepState;
		}
		if (myCurrentRoom != nullptr && hasMoved == false)
		{
			PlayerMovement(input, myCachedTalkIsOn, true, aTimeDelta);
		}
	}

	myOptionsMenu.Update(aTimeDelta);
	//std::cout << myRenderPasses.Size() << std::endl;

	if (myDoQuit == true)
	{
		return eStateStatus::ePopMainState;
	}

	return eStateStatus::eKeepState;
}