LifePlay-Revival/Source/LifePlay/LPStringCompat.h

33 lines
1.5 KiB
C
Raw Normal View History

// Portage UE 5.5 (2026.9 beta) - correctif CX-B08 (ERR-027).
//
// UE 5.x a reecrit FString::ParseIntoArray sur UE::String::ParseTokens. Deux comportements
// ont change par rapport a UE 4.27, sans aucun avertissement :
// 1. chaine source vide, CullEmpty=false : UE4 renvoie [] ; UE5 renvoie [""] ;
// 2. recherche du separateur : UE4 respecte la casse (FCString::Strstr) ; UE5 l'ignore.
//
// Le cas 1 casse generatePerson() sans argument : "()" donne Presets=[""], GeneratePerson
// charge alors les 141 presets (suffixe "" + ".lpcharacter") et finit sur un corps legacy
// jamais charge -> personnage invisible et devetu.
//
// ULPStringCompat::ParseIntoArray reproduit a l'identique l'algorithme 4.27 (Source 4.27,
// Runtime/Core/Private/Containers/String.cpp, FString::ParseIntoArray). Ses parametres et
// ses valeurs par defaut sont ceux de UKismetStringLibrary::ParseIntoArray, pour que la
// commandlet LPFixParseIntoArray puisse rebrancher les noeuds existants sans perdre de liaison.
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "LPStringCompat.generated.h"
UCLASS()
class LIFEPLAY_API ULPStringCompat : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
/** ParseIntoArray avec le comportement exact de UE 4.27 (voir en-tete du fichier). */
UFUNCTION(BlueprintPure, Category = "Utilities|String", meta = (DisplayName = "Parse Into Array (UE4)"))
static TArray<FString> ParseIntoArray(const FString& SourceString, const FString& Delimiter = FString(TEXT(" ")), const bool CullEmptyStrings = true);
};