Fix some crash on figure loading

This commit is contained in:
Lucas 2024-11-24 14:22:04 +01:00
parent 8521e33d05
commit 27095ae6c7
2 changed files with 13 additions and 3 deletions

View file

@ -206,7 +206,11 @@ uint8* USkyPortalIO::QueryBlock(uint8 FigureIndex, uint8 BlockIndex)
}
}
} while (write == false && (output[0] != 'Q' || (output[1] % 0x10 != FigureIndex && output[1] != 0x01) || output[2] != BlockIndex) && attempt < 10);
} while (write == false && output && (output[0] != 'Q' || (output[1] % 0x10 != FigureIndex && output[1] != 0x01) || output[2] != BlockIndex) && attempt < 10);
if (output == nullptr) {
UE_LOG(LogSkyportalIO, Error, TEXT("Query failed after %d attempts"), attempt);
return 0; // Return early if the loop failed to get valid output
}
UE_LOG(LogSkyportalIO, Verbose, TEXT("Querying block %d - success"), BlockIndex);
UE_LOG(LogSkyportalIO, VeryVerbose, TEXT("Data block %d = \n %s"), BlockIndex,*OutputToString(output));
return output;

View file

@ -71,6 +71,8 @@ void FPortalStatusChecker::CheckPortalStatus()
if (
//!FalsePositive() //filter conflicting infos
true) {
int32 figID = 0;
UFigureData* figData = NewObject<UFigureData>();
//FigureDataBlock FigureData;
switch (CurrentStatusData.StatusArray[i])
{
@ -78,8 +80,12 @@ void FPortalStatusChecker::CheckPortalStatus()
case EFigureStatus::PRESENT:
break;
case EFigureStatus::ADDED:
//figData = PortalHandleRef->ReadFigureBlocks(i);
subref->OnSkylanderAdded.Broadcast(00, i);
figData = PortalHandleRef->ReadFigureBlocks(i);
if (figData)
{
figID = figData->GetFigureID();
}
subref->OnSkylanderAdded.Broadcast(figID, i);
break;
case EFigureStatus::REMOVED:
subref->OnSkylanderRemoved.Broadcast(00, i);