예제 #1
0
ALERROR CLoadingSession::OnInit (CString *retsError)

//	OnInit
//
//	Initialize

	{
	ALERROR error;

	//	Load stargate image

	HBITMAP hDIB;
	if (error = JPEGLoadFromResource(NULL,
			MAKEINTRESOURCE(IDR_STARGATE_IMAGE),
			JPEG_LFR_DIB, 
			NULL, 
			&hDIB))
		return error;

	HBITMAP hBitmask;
	if (error = dibLoadFromResource(NULL,
			MAKEINTRESOURCE(IDR_STARGATE_MASK),
			&hBitmask))
		return error;

	error = m_StargateImage.CreateFromBitmap(hDIB, hBitmask);
	::DeleteObject(hDIB);
	::DeleteObject(hBitmask);
	if (error)
		return error;

	//	Start

	m_iTick = 0;

	return NOERROR;
	}
예제 #2
0
ALERROR CStatsSession::OnInit (CString *retsError)

//	OnInit

	{
	ALERROR error;
	const CVisualPalette &VI = m_HI.GetVisuals();

	//	Load a JPEG of the background image

	HBITMAP hDIB;
	if (error = JPEGLoadFromResource(g_hInst,
			MAKEINTRESOURCE(IDR_GAME_STATS_SCREEN),
			JPEG_LFR_DIB, 
			NULL,
			&hDIB))
		return error;

	error = m_BackgroundImage.CreateFromBitmap(hDIB);
	::DeleteObject(hDIB);
	if (error)
		return error;

	//	Figure out where the stats will go

	RECT rcCenter;
	RECT rcFull;
	VI.GetWidescreenRect(m_HI.GetScreen(), &rcCenter, &rcFull);
	const CG16bitFont &MediumFont = VI.GetFont(fontMedium);
	const CG16bitFont &HeaderFont = VI.GetFont(fontHeader);

	m_rcStats = rcCenter;
	m_rcStats.left = rcCenter.left + RectWidth(rcCenter) / 2;
	m_rcStats.right = rcFull.right - 4 * VI.GetFont(fontHeader).GetHeight();

	//	Create stats animation

	IAnimatron *pAni;
	CreateGameStatsAnimation(m_Stats, m_rcStats, rcCenter.left + 3 * RectWidth(rcCenter) / 4, &pAni);
	SelectGameStat(pAni, 1, RectWidth(m_rcStats));
	StartPerformance(pAni, ID_GAME_STAT_PERFORMANCE, CReanimator::SPR_FLAG_DELETE_WHEN_DONE);

	//	Figure out where task status will go

	m_rcTaskProgress.right = rcCenter.right;
	m_rcTaskProgress.left = m_rcTaskProgress.right - 80 * HeaderFont.GetAverageWidth();
	m_rcTaskProgress.top = rcCenter.bottom + MediumFont.GetHeight();
	m_rcTaskProgress.bottom = m_rcTaskProgress.top + HeaderFont.GetHeight();

	//	OK button

	CUIHelper Helper(m_HI);
	IAnimatron *pTitle;
	Helper.CreateSessionTitle(this, 
			m_Service, 
			NULL_STR, 
			NULL, 
			CUIHelper::OPTION_SESSION_NO_HEADER 
				| CUIHelper::OPTION_SESSION_NO_CANCEL_BUTTON
				| CUIHelper::OPTION_SESSION_OK_BUTTON, 
			&pTitle);
	StartPerformance(pTitle, ID_CTRL_TITLE, CReanimator::SPR_FLAG_DELETE_WHEN_DONE);

	return NOERROR;
	}
예제 #3
0
ALERROR CLoadingSession::OnInit (CString *retsError)

//	OnInit

	{
	ALERROR error;
	const CVisualPalette &VI = m_HI.GetVisuals();

	RECT rcCenter;
	VI.GetWidescreenRect(m_HI.GetScreen(), &rcCenter);

	//	Load a JPEG of the background image

	HBITMAP hDIB;
	if (error = JPEGLoadFromResource(g_hInst,
			MAKEINTRESOURCE(IDR_TITLE_IMAGE),
			JPEG_LFR_DIB, 
			NULL,
			&hDIB))
		return error;

	error = m_TitleImage.CreateFromBitmap(hDIB);
	::DeleteObject(hDIB);
	if (error)
		return error;

	//	Load stargate image

	if (error = JPEGLoadFromResource(g_hInst,
			MAKEINTRESOURCE(IDR_STARGATE_IMAGE),
			JPEG_LFR_DIB, 
			NULL, 
			&hDIB))
		return error;

	HBITMAP hBitmask;
	if (error = dibLoadFromResource(g_hInst,
			MAKEINTRESOURCE(IDR_STARGATE_MASK),
			&hBitmask))
		return error;

	error = m_StargateImage.CreateFromBitmap(hDIB, hBitmask);
	::DeleteObject(hDIB);
	::DeleteObject(hBitmask);
	if (error)
		return error;

	//	Figure out position of copyright text.

	m_cyCopyright = Y_COPYRIGHT_TEXT - (Max(0, m_TitleImage.GetHeight() - RectHeight(rcCenter)) / 2);

	//	Figure out the position of the stargate animation

	int cxScreen = g_pHI->GetScreen().GetWidth();
	int cyScreen = g_pHI->GetScreen().GetHeight();

	m_rcStargate.left = (cxScreen - STARGATE_WIDTH) / 2;
	m_rcStargate.right = m_rcStargate.left + STARGATE_WIDTH;

	if (RectHeight(rcCenter) >= 512)
		{
		m_rcStargate.top = rcCenter.bottom - (STARGATE_HEIGHT / 2);
		m_rcStargate.bottom = m_rcStargate.top + STARGATE_HEIGHT;
		}
	else
		{
		m_rcStargate.bottom = cyScreen;
		m_rcStargate.top = m_rcStargate.bottom - STARGATE_HEIGHT;
		}

	return NOERROR;
	}