Advertisement
dragonbane

[Wreckage] Smooth Level Switch Code

Mar 7th, 2018
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.28 KB | None | 0 0
  1. http://prntscr.com/irkyk4
  2. check if libtsec decrypts snippet in InitContext or RunUCode
  3.  
  4. void CFlashMenuObject::OnLoadingStart(ILevelInfo *pLevel)
  5. {  
  6.     if(gEnv->pSystem->IsEditor() || gEnv->pSystem->IsDedicated()) return;
  7.  
  8.     m_bInLoading = true;
  9.     string levelName = pLevel->GetName();
  10.  
  11.     IGameTokenSystem *pGameTokenSystem = gEnv->pGame->GetIGameFramework()->GetIGameTokenSystem();
  12.  
  13.     string previousLevel;
  14.     pGameTokenSystem->GetTokenValueAs("Game.General.Previous_Level", previousLevel);
  15.  
  16.     CryLogAlways("Wreckage: Previous Level: %s", previousLevel);
  17.  
  18.     if (previousLevel == "Wreckage_Part2" && levelName == "Wreckage_Part3")
  19.     {
  20.         CryLog("Wreckage: Start part 3 with smooth transition");        
  21.  
  22.         //Capture framebuffer
  23.         gEnv->pRenderer->ScreenShot("Mods/Wreckage/Game/Levels/Wreckage_Part3/wreckage_03_loading_new.jpg", gEnv->pRenderer->GetWidth());
  24.  
  25.         LoadTransitionScreen(pLevel);
  26.  
  27.         CryLog("Wreckage: Loading part 3 initiated");
  28.     }
  29. }
  30.  
  31. void CFlashMenuObject::LoadTransitionScreen(ILevelInfo *pLevel)
  32. {
  33.     if(pLevel)
  34.     {
  35.         m_iMaxProgress = pLevel->GetDefaultGameType()->cgfCount;
  36.     }
  37.     else
  38.     {
  39.         m_iMaxProgress = 100;
  40.     }
  41.  
  42.     if(!m_apFlashMenuScreens[MENUSCREEN_FRONTENDLOADING_TRANSITION]->IsLoaded())
  43.     {
  44.         CryLog("Wreckage: Load transition flash file");
  45.  
  46.         m_apFlashMenuScreens[MENUSCREEN_FRONTENDLOADING_TRANSITION]->Load("Libs/UI/Menus_Loading_Wreckage_Part3.gfx");
  47.         m_apFlashMenuScreens[MENUSCREEN_FRONTENDLOADING_TRANSITION]->GetFlashPlayer()->SetFSCommandHandler(>span class="br0">);
  48.         m_apFlashMenuScreens[MENUSCREEN_FRONTENDLOADING_TRANSITION]->Invoke("SetProgress", 0.0f);
  49.  
  50.         UpdateMenuColor();
  51.     }
  52.  
  53.     m_pCurrentFlashMenuScreen = m_apFlashMenuScreens[MENUSCREEN_FRONTENDLOADING_TRANSITION];
  54.  
  55.     //Prepare static loading texture
  56.     IRenderer* pRenderer = gEnv->pRenderer;
  57.     assert( pRenderer != NULL );
  58.  
  59.     if (pRenderer)
  60.     {
  61.         IUIDraw *m_pUiDraw = gEnv->pGame->GetIGameFramework()->GetIUIDraw();
  62.         assert( m_pUiDraw != NULL );
  63.  
  64.         if (m_pUiDraw)
  65.         {
  66.             char fileName[255];
  67.             sprintf(fileName,"Game/Levels/Wreckage_Part3/wreckage_03_loading_new.jpg");
  68.  
  69.             m_LoadingTexture = m_pUiDraw->CreateTexture(fileName);
  70.  
  71.             pRenderer->SetState( GS_BLSRC_SRCALPHA | GS_BLDST_ONEMINUSSRCALPHA | GS_NODEPTHTEST );
  72.  
  73.             m_bIsQuickLevelSwitchLoading = true;
  74.         }
  75.     }
  76.  
  77.     m_bUpdate = true;
  78.     m_nBlackGraceFrames = 0;  
  79.  
  80.     //Remove gameplay HUD
  81.     if(g_pGame)
  82.         g_pGame->DestroyHUD();
  83. }
  84.  
  85. void CFlashMenuObject::OnPostUpdate(float fDeltaTime)
  86. {
  87.     //Wreckage MOD: Draw loading texture if needed
  88.     if (m_bIsQuickLevelSwitchLoading && m_LoadingTexture != 0)
  89.     {
  90.         IRenderer* pRenderer = gEnv->pRenderer;
  91.         assert( pRenderer != NULL );
  92.      
  93.         if (pRenderer)
  94.         {
  95.             pRenderer->Draw2dImage(0.0f,-0.5f, 800.0f,600.0f, m_LoadingTexture, 0.0f,1.0f,1.0f,0.0f, 0.0f);      
  96.            
  97.             if (m_bInLoading == false && m_nBlackGraceFrames == 0)
  98.             {
  99.                 m_bIsQuickLevelSwitchLoading = false; //Loading has finished, stop rendering texture after this frame
  100.             }
  101.         }
  102.      }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement