view LightClone/Source/GameOverScreen.cpp @ 73:0574e2cf8bac

Additional screen types
author koryspansel
date Tue, 11 Oct 2011 17:44:10 -0700
parents
children 40c0b5305de8
line wrap: on
line source

/*
 * GameOverScreen
 */

#include "GameOverScreen.h"
#include "ScreenManager.h"

/*
 * Initialize
 */
ErrorCode GameOverScreen::Initialize(ServiceProvider* pServiceProvider)
{
	ErrorCode eCode = kInterface.Initialize(pServiceProvider);
	if(eCode == Error_Success)
	{
		pDialog = new MessageDialog();
		pDialog->Initialize(pServiceProvider);
		pDialog->Subscribe(GuiDialog::EventResult, &GameOverScreen::OnResult, this);

		const D3DXVECTOR2& kMessageSize = pDialog->GetDimensions();
		pDialog->SetPosition(0.5f * ((ScreenSizeX - 280) - kMessageSize.x), 0.5f * (ScreenSizeY - kMessageSize.y));
	}

	return Error_Success;
}

/*
 * Terminate
 */
void GameOverScreen::Terminate()
{
	kInterface.Terminate();

	Screen::Terminate();
}

/*
 * Update
 */
void GameOverScreen::Update(float fElapsed)
{
	kInterface.Update(fElapsed);
}

/*
 * Render
 */
void GameOverScreen::Render(RenderContext& kContext)
{
	kCameraController.SetMode(CameraMode_2D);
	kInterface.Render(kContext, kCameraController);
}

/*
 * OnEnter
 */
void GameOverScreen::OnEnter()
{
	pDialog->SetFlag(GuiElementFlag_Visible);
}

/*
 * OnExit
 */
void GameOverScreen::OnExit()
{
	pDialog->ClearFlag(GuiElementFlag_Visible);
}

/*
 * OnResult
 */
void GameOverScreen::OnResult(GuiEventArguments& kArguments)
{
	GuiResultArguments& kResultArguments = (GuiResultArguments&)kArguments;

	if(kResultArguments.nResult == DialogResult_Ok)
	{
		pScreenManager->Set("Main");
	}
}