bool FEpicSurvey::PromptSurvey( const FGuid& SurveyIdentifier ) { for (int Index = 0; Index < Surveys.Num(); Index++) { const TSharedRef< FSurvey > Survey = Surveys[ Index ]; if ( Survey->GetIdentifier() == SurveyIdentifier ) { SetActiveSurvey( Survey, false ); return true; } } return false; }
void FEpicSurvey::SubmitSurvey( const TSharedRef< FSurvey >& Survey ) { if ( GEditor->AccessGameAgnosticSettings().CompletedSurveys.Contains( Survey->GetIdentifier() ) ) { return; } Survey->Submit(); GEditor->AccessGameAgnosticSettings().CompletedSurveys.Add( Survey->GetIdentifier() ); GEditor->AccessGameAgnosticSettings().InProgressSurveys.Remove( Survey->GetIdentifier() ); GEditor->AccessGameAgnosticSettings().PostEditChange(); SetActiveSurvey( NULL ); SurveyWindow.Pin()->RequestDestroyWindow(); }
void FEpicSurvey::SubmitSurvey( const TSharedRef< FSurvey >& Survey ) { auto* Settings = GetMutableDefault<UEditorSettings>(); if ( Settings->CompletedSurveys.Contains( Survey->GetIdentifier() ) ) { return; } Survey->Submit(); Settings->CompletedSurveys.Add( Survey->GetIdentifier() ); Settings->InProgressSurveys.Remove( Survey->GetIdentifier() ); Settings->PostEditChange(); SetActiveSurvey( NULL ); SurveyWindow.Pin()->RequestDestroyWindow(); }
void FEpicSurvey::OnReadFileComplete( bool bSuccess, const FString& DLName ) { if ( bSuccess ) { if ( DLName == SurveyIndexCloudFile.DLName ) { LoadSurveyIndexFile(); } else { int32 FileHeaderIndex = INDEX_NONE; TArray< FCloudFileHeader > FileHeaders; TitleCloud->GetFileList( FileHeaders ); for (int Index = 0; Index < FileHeaders.Num(); Index++) { if ( FileHeaders[ Index ].DLName == DLName ) { FileHeaderIndex = Index; break; } } if ( FileHeaderIndex > INDEX_NONE ) { const FCloudFileHeader FileHeader = FileHeaders[ FileHeaderIndex ]; const FString FileExtension = FPaths::GetExtension( FileHeader.FileName ); if ( FileExtension == TEXT("json") ) { TArray< uint8 > FileContents; TitleCloud->GetFileContents( DLName, FileContents ); FString SurveyJson; FFileHelper::BufferToString( SurveyJson, FileContents.GetData(), FileContents.Num() ); TSharedPtr< FJsonObject > SurveyObject = NULL; TSharedRef< TJsonReader<> > Reader = TJsonReaderFactory<TCHAR>::Create( SurveyJson ); if ( FJsonSerializer::Deserialize( Reader, SurveyObject ) ) { TSharedPtr< FSurvey > NewSurvey = FSurvey::Create( SharedThis( this ), SurveyObject.ToSharedRef() ); if ( NewSurvey.IsValid() ) { switch( NewSurvey->GetSurveyType() ) { case ESurveyType::Normal: { auto* Settings = GetDefault<UEditorSettings>(); Surveys.Add( NewSurvey.ToSharedRef() ); const bool IsActiveSurveyInProgress = ActiveSurvey.IsValid() ? Settings->InProgressSurveys.Contains( ActiveSurvey->GetIdentifier() ) : false; if ( !IsActiveSurveyInProgress ) { const bool HasBeenCompleted = Settings->CompletedSurveys.Contains( NewSurvey->GetIdentifier() ); if ( !HasBeenCompleted ) { const bool IsInProgress = Settings->InProgressSurveys.Contains( NewSurvey->GetIdentifier() ); if ( NewSurvey->CanAutoPrompt() ) { SetActiveSurvey( NewSurvey ); } else if ( IsInProgress ) { SetActiveSurvey( NewSurvey ); } } } } break; case ESurveyType::Branch: BranchSurveys.Add( FileHeader.FileName, NewSurvey ); break; } } } else { UE_LOG(LogEpicSurvey, Verbose, TEXT("Parsing JSON survey failed. Filename: %s Message: %s"), *FileHeader.FileName, *Reader->GetErrorMessage()); } } else if ( FileExtension == TEXT("png") ) { TArray< FOnBrushLoaded > MapResults; FilenameToLoadCallbacks.MultiFind( FileHeaders[ FileHeaderIndex ].FileName, MapResults ); if ( MapResults.Num() > 0 ) { TArray< uint8 > FileContents; TitleCloud->GetFileContents( DLName, FileContents ); for (int Index = 0; Index < MapResults.Num(); Index++) { MapResults[ Index ].Execute( LoadRawDataAsBrush( *(FString(TEXT("EpicSurvey.")) + FileHeaders[ FileHeaderIndex ].FileName), FileContents ) ); } FilenameToLoadCallbacks.Remove( FileHeaders[ FileHeaderIndex ].FileName ); } } } } } else { InitializationState = EContentInitializationState::Failure; } }