Ejemplo n.º 1
0
        // https://github.com/EpicGames/UnrealEngine/blob/7d9919ac7bfd80b7483012eab342cb427d60e8c9/Engine/Source/Runtime/Core/Private/Internationalization/Text.cpp#L769
        internal FText(PackageReader reader)
        {
            Flags = (ETextFlag)reader.ReadUInt32();

            // "Assuming" the reader/archive is persistent
            Flags &= ETextFlag.ConvertedProperty | ETextFlag.InitializedFromString;

            // Execute if UE4 version is at least VER_UE4_FTEXT_HISTORY

            // The type is serialized during the serialization of the history, during deserialization we need to deserialize it and create the correct history
            var HistoryType = (ETextHistoryType)reader.ReadSByte();

            // Create the history class based on the serialized type
            // https://github.com/EpicGames/UnrealEngine/blob/283e412aa843210f2d6e9ed0236861cf749b3429/Engine/Source/Runtime/Core/Private/Internationalization/TextHistory.h
            // https://github.com/EpicGames/UnrealEngine/blob/bf95c2cbc703123e08ab54e3ceccdd47e48d224a/Engine/Source/Runtime/Core/Private/Internationalization/TextHistory.cpp
            switch (HistoryType)
            {
            case ETextHistoryType.Base:
                Text = new FTextHistory.Base(reader);
                break;

            case ETextHistoryType.AsDateTime:
                Text = new FTextHistory.DateTime(reader);
                break;

            case ETextHistoryType.NamedFormat:
            case ETextHistoryType.OrderedFormat:
                Text = new FTextHistory.OrderedFormat(reader);
                break;

            case ETextHistoryType.AsNumber:
            case ETextHistoryType.AsPercent:
            case ETextHistoryType.AsCurrency:
                Text = new FTextHistory.FormatNumber(reader);
                break;

            case ETextHistoryType.StringTableEntry:
                Text = new FTextHistory.StringTableEntry(reader);
                break;

            case ETextHistoryType.AsTime:
                Text = new FTextHistory.AsTime(reader);
                break;

            case ETextHistoryType.AsDate:
                Text = new FTextHistory.AsDate(reader);
                break;

            case ETextHistoryType.ArgumentFormat:
                Text = new FTextHistory.ArgumentDataFormat(reader);
                break;

            case ETextHistoryType.Transform:
                Text = new FTextHistory.Transform(reader);
                break;

            case ETextHistoryType.TextGenerator:
                throw new NotImplementedException(string.Format(FModel.Properties.Resources.ParsingNotSupported, HistoryType));

            default:
                Text = new FTextHistory.None(reader);
                break;
            }
        }
Ejemplo n.º 2
0
 internal FText(ETextFlag flags, FTextHistory text)
 {
     Flags = flags;
     Text  = text;
 }