97 lines
2.0 KiB
C++
97 lines
2.0 KiB
C++
// Project Lab - NHTV Igad
|
|
|
|
#include "UnrealProject.h"
|
|
#include "SplashScreen.h"
|
|
#include "SplashScreenItem.h"
|
|
#include "DefaultGameInstance.h"
|
|
#include "SessionManager.h"
|
|
|
|
USplashScreen::USplashScreen(const FObjectInitializer& init)
|
|
: Super(init)
|
|
{
|
|
}
|
|
|
|
void USplashScreen::NativeConstruct()
|
|
{
|
|
m_currentItem = -1;
|
|
Super::NativeConstruct();
|
|
}
|
|
void USplashScreen::NativeTick(const FGeometry& MyGeometry, float InDeltaTime)
|
|
{
|
|
Super::NativeTick(MyGeometry, InDeltaTime);
|
|
if(m_currentItem == -1)
|
|
return;
|
|
|
|
if(m_currentItem >= m_activeScreens.Num())
|
|
{
|
|
OnEnd();
|
|
// Send done event
|
|
onDone.Broadcast();
|
|
m_currentItem = -1;
|
|
}
|
|
else
|
|
{
|
|
m_switcher->SetActiveWidget(m_activeScreens[m_currentItem]);
|
|
if(m_activeScreens[m_currentItem]->GetRate() >= 1.0f)
|
|
{
|
|
m_activeScreens[m_currentItem]->End();
|
|
m_currentItem++;
|
|
if(m_currentItem < m_activeScreens.Num())
|
|
{
|
|
m_activeScreens[m_currentItem]->Start();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void USplashScreen::NativeOnMenuAction(EMenuActionBinding binding)
|
|
{
|
|
if(binding == EMenuActionBinding::Start)
|
|
{
|
|
if(m_currentItem >= 0 && m_currentItem < m_activeScreens.Num())
|
|
{
|
|
m_activeScreens[m_currentItem]->Skip();
|
|
}
|
|
}
|
|
}
|
|
|
|
void USplashScreen::OnEnd_Implementation()
|
|
{
|
|
|
|
}
|
|
|
|
void USplashScreen::Init(UWidgetSwitcher* witcher)
|
|
{
|
|
m_switcher = witcher;
|
|
m_currentItem = 0;
|
|
|
|
for(int32 i = 0; i < splashItems.Num(); i++)
|
|
{
|
|
USplashScreenItem* item = CreateWidget<USplashScreenItem>(GetWorld(), splashItems[i]);
|
|
m_activeScreens.Add(item);
|
|
m_switcher->AddChild(item);
|
|
if(i == 0)
|
|
{
|
|
item->Start();
|
|
if((i + 1) == splashItems.Num())
|
|
item->fadeEnabled = false;
|
|
m_switcher->SetActiveWidget(item);
|
|
}
|
|
}
|
|
}
|
|
|
|
float USplashScreen::GetFade() const
|
|
{
|
|
if(m_currentItem == -1)
|
|
return 0.0f;
|
|
if(m_currentItem >= m_activeScreens.Num())
|
|
{
|
|
return 0.0f;
|
|
}
|
|
if((m_currentItem + 1) == m_activeScreens.Num())
|
|
{
|
|
return m_activeScreens[m_currentItem]->GetFadeOut();
|
|
}
|
|
return 1.0f;
|
|
}
|