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; }
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; }
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; }