Пример #1
0
 public BaseItemAccess(IUExport export) : this()
 {
     if (export.GetExport <ObjectProperty>("access_item") is ObjectProperty accessItem)
     {
         SItem = accessItem.Value.Resource.ObjectName.String;
         PakPackage p = Utils.GetPropertyPakPackage(accessItem.Value.Resource.OuterIndex.Resource.ObjectName.String);
         if (p.HasExport() && !p.Equals(default))
Пример #2
0
        public static bool GetDisplayAssetImage(BaseIcon icon, SoftObjectProperty o, string assetName)
        {
            string imageType = "DetailsImage";

            switch ("DA_Featured_" + assetName)
            {
            case "DA_Featured_Glider_ID_141_AshtonBoardwalk.uasset":
            case "DA_Featured_Glider_ID_150_TechOpsBlue.uasset":
            case "DA_Featured_Glider_ID_131_SpeedyMidnight.uasset":
            case "DA_Featured_Pickaxe_ID_178_SpeedyMidnight.uasset":
            case "DA_Featured_Glider_ID_015_Brite.uasset":
            case "DA_Featured_Glider_ID_016_Tactical.uasset":
            case "DA_Featured_Glider_ID_017_Assassin.uasset":
            case "DA_Featured_Pickaxe_ID_027_Scavenger.uasset":
            case "DA_Featured_Pickaxe_ID_028_Space.uasset":
            case "DA_Featured_Pickaxe_ID_029_Assassin.uasset":
                return(false);

            case "DA_Featured_Glider_ID_070_DarkViking.uasset":
            case "DA_Featured_CID_319_Athena_Commando_F_Nautilus.uasset":
                imageType = "TileImage";
                break;
            }

            string path = o?.Value.AssetPathName.String;

            if (string.IsNullOrEmpty(path))
            {
                path = "/Game/Catalog/DisplayAssets/DA_Featured_" + assetName.Substring(0, assetName.LastIndexOf("."));
            }

            PakPackage p = Utils.GetPropertyPakPackage(path);

            if (p.HasExport() && !p.Equals(default))
Пример #3
0
        public Quest(UObject obj) : this()
        {
            if (obj.TryGetValue("Description", out var d) && d is TextProperty description)
            {
                Description = Text.GetTextPropertyBase(description);
            }
            if (obj.TryGetValue("ObjectiveCompletionCount", out var o) && o is IntProperty objectiveCompletionCount)
            {
                Count = objectiveCompletionCount.Value;
            }

            if (obj.TryGetValue("Objectives", out var v1) && v1 is ArrayProperty a1 &&
                a1.Value.Length > 0 && a1.Value[0] is StructProperty s && s.Value is UObject objectives)
            {
                if (string.IsNullOrEmpty(Description) && objectives.TryGetValue("Description", out var od) && od is TextProperty objectivesDescription)
                {
                    Description = Text.GetTextPropertyBase(objectivesDescription);
                }

                if (Count == 0 && objectives.TryGetValue("Count", out var c) && c is IntProperty count)
                {
                    Count = count.Value;
                }
            }

            if (obj.TryGetValue("RewardsTable", out var v4) && v4 is ObjectProperty rewardsTable)
            {
                PakPackage p = Utils.GetPropertyPakPackage(rewardsTable.Value.Resource.OuterIndex.Resource.ObjectName.String);
                if (p.HasExport() && !p.Equals(default))
Пример #4
0
        public BaseIcon(IUExport export, string assetName, bool forceHR) : this()
        {
            if (export.GetExport <ObjectProperty>("Series") is ObjectProperty series)
            {
                Serie.GetRarity(this, series);
            }
            else if (Properties.Settings.Default.UseGameColors)                          // override default green
            {
                Rarity.GetInGameRarity(this, export.GetExport <EnumProperty>("Rarity")); // uncommon will be triggered by Rarity being null
            }
            else if (export.GetExport <EnumProperty>("Rarity") is EnumProperty rarity)
            {
                Rarity.GetHardCodedRarity(this, rarity);
            }

            if (export.GetExport <ObjectProperty>("HeroDefinition", "WeaponDefinition") is ObjectProperty itemDef)
            {
                LargeSmallImage.GetPreviewImage(this, itemDef, assetName, forceHR);
            }
            else if (export.GetExport <SoftObjectProperty>(forceHR ? "LargePreviewImage" : "SmallPreviewImage", forceHR ? "ItemDisplayAsset" : "SmallImage") is SoftObjectProperty previewImage)
            {
                LargeSmallImage.GetPreviewImage(this, previewImage);
            }
            else if (export.GetExport <ObjectProperty>("access_item") is ObjectProperty accessItem)
            {
                PakPackage p = Utils.GetPropertyPakPackage(accessItem.Value.Resource.OuterIndex.Resource.ObjectName.String);
                if (p.HasExport() && !p.Equals(default))
Пример #5
0
        public Reward(IntProperty quantity, string assetName) : this()
        {
            RewardQuantity = quantity.Value;

            if (assetName.Contains(':'))
            {
                string[] parts = assetName.Split(':');
                if (parts[0].Equals("HomebaseBannerIcon", StringComparison.CurrentCultureIgnoreCase))
                {
                    PakPackage p = Utils.GetPropertyPakPackage("/Game/Banners/BannerIcons");
                    if (p.HasExport() && !p.Equals(default))
Пример #6
0
        public static void GetPreviewImage(BaseIcon icon, ObjectProperty o, string assetName, bool hightRes)
        {
            string path = o.Value.Resource.OuterIndex.Resource.ObjectName.String;

            if (path.Equals("/Game/Athena/Items/Weapons/WID_Harvest_Pickaxe_STWCosmetic_Tier"))
            {
                path += "_" + assetName.Substring(assetName.LastIndexOf(".") - 1, 1);
            }

            PakPackage p = Utils.GetPropertyPakPackage(path);

            if (p.HasExport() && !p.Equals(default))
Пример #7
0
 public static string GetTextPropertyBase(TextProperty t)
 {
     if (t.Value is FText text)
     {
         if (text.Text is FTextHistory.Base b)
         {
             return(b.SourceString.Replace("<Emphasized>", string.Empty).Replace("</>", string.Empty));
         }
         else if (text.Text is FTextHistory.StringTableEntry s)
         {
             PakPackage p = Utils.GetPropertyPakPackage(s.TableId.String);
             if (p.HasExport() && !p.Equals(default))
Пример #8
0
        public BaseBundle(IUExport export, string assetFolder) : this()
        {
            if (export.GetExport <StructProperty>("DisplayStyle") is StructProperty displayStyle)
            {
                DisplayStyle = new Header(displayStyle, assetFolder);
            }
            if (export.GetExport <TextProperty>("DisplayName") is TextProperty displayName)
            {
                DisplayName = Text.GetTextPropertyBase(displayName);
            }

            if (export.GetExport <ArrayProperty>("CareerQuestBitShifts") is ArrayProperty careerQuestBitShifts)
            {
                foreach (SoftObjectProperty questPath in careerQuestBitShifts.Value)
                {
                    PakPackage p = Utils.GetPropertyPakPackage(questPath.Value.AssetPathName.String);
                    if (p.HasExport() && !p.Equals(default))
Пример #9
0
        internal static void SaveAsset(PakPackage package)
        {
            var file = Helpers.ChooseSaveFile("Asset Files (multiple extensions)", "uasset");

            if (file == null)
            {
                return;
            }

            if (file.EndsWith("uasset"))
            {
                file = file.Substring(0, file.Length - 6);
            }
            if (file.EndsWith("."))
            {
                file = file.Substring(0, file.Length - 1);
            }

            foreach (var kv in package.Extensions)
            {
                SaveFile(file, kv.Value.Reader.GetPackageStream(kv.Value.Entry), kv.Key);
            }
        }
Пример #10
0
        public static void GetAmmoData(BaseIcon icon, SoftObjectProperty ammoData)
        {
            PakPackage p = Utils.GetPropertyPakPackage(ammoData.Value.AssetPathName.String);

            if (p.HasExport() && !p.Equals(default))
Пример #11
0
        public static void GetInGameRarity(BaseIcon icon, EnumProperty e)
        {
            PakPackage p = Utils.GetPropertyPakPackage("/Game/Balance/RarityData");

            if (p.HasExport() && !p.Equals(default))
Пример #12
0
        private static string GetCosmeticSet(string setName)
        {
            PakPackage p = Utils.GetPropertyPakPackage("/Game/Athena/Items/Cosmetics/Metadata/CosmeticSets");

            if (p.HasExport() && !p.Equals(default))
Пример #13
0
 public static void GetAmmoData(BaseIcon icon, SoftObjectProperty ammoData)
 {
     if (!ammoData.Value.AssetPathName.String.StartsWith("/Game/Athena/Items/Consumables/"))
     {
         PakPackage p = Utils.GetPropertyPakPackage(ammoData.Value.AssetPathName.String);
         if (p.HasExport() && !p.Equals(default))
Пример #14
0
        public FileViewer(string title, PakPackage package, Func <string, PakPackage> packageFunc)
        {
            InitializeComponent();
            Package = package;
            ExportPanel.ItemsSource = Exports;
            Title = title;

            IniTxt.CurrentHighlighter  = new IniParser();
            JsonTxt.CurrentHighlighter = new JsonParser();

            if (package.Exportable)
            {
                try
                {
                    foreach (var exp in package.Exports)
                    {
                        switch (exp)
                        {
                        case Texture2D tex:
                            var image = tex.GetImage();
                            Exports.Add(new ExportItem($"{image.Width}x{image.Height}", image, ExportType.IMAGE)
                            {
                                Data = image
                            });
                            break;

                        case USkeletalMesh mesh:
                            Exports.Add(new ExportItem("Skeletal Mesh", ExportItem.ModelImage, ExportType.OPENGL)
                            {
                                Data = mesh
                            });
                            ModelInterface = new ModelInterface(mesh, (int)GLPanel.Width, (int)GLPanel.Height, packageFunc);
                            break;

                        case UObject obj:
                            ExtraExports.Add(obj);
                            break;

                        default:
                            ExtraExports.Add(exp);
                            break;
                        }
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }
            foreach (var kv in package.Extensions)
            {
                switch (kv.Key.ToLowerInvariant())
                {
                case "ini":
                    using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry))
                        using (var r = new StreamReader(s))
                            IniTxt.Text = r.ReadToEnd();
                    Exports.Add(new ExportItem("Ini File", ExportItem.IniImage, ExportType.INI));
                    break;

                case "uproject":
                    using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry))
                        using (var r = new StreamReader(s))
                            Exports.Add(new ExportItem("Project File", ExportItem.JsonImage, ExportType.JSON)
                            {
                                Data = r.ReadToEnd()
                            });
                    break;

                case "uplugin":
                    using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry))
                        using (var r = new StreamReader(s))
                            Exports.Add(new ExportItem("Plugin File", ExportItem.JsonImage, ExportType.JSON)
                            {
                                Data = r.ReadToEnd()
                            });
                    break;

                case "upluginmanifest":
                    using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry))
                        using (var r = new StreamReader(s))
                            Exports.Add(new ExportItem("Plugin Manifest", ExportItem.JsonImage, ExportType.JSON)
                            {
                                Data = r.ReadToEnd()
                            });
                    break;

                case "png":
                    using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry))
                    {
                        var img = SKImage.FromEncodedData(s);
                        Exports.Add(new ExportItem($"PNG ({img.Width}x{img.Height})", img, ExportType.IMAGE)
                        {
                            Data = img
                        });
                    }
                    break;

                case "locres":
                    using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry))
                        Exports.Add(new ExportItem($"LocRes File", ExportItem.JsonImage, ExportType.JSON)
                        {
                            Data = JsonConvert.SerializeObject(new LocResFile(s).Entries, Formatting.Indented)
                        });
                    break;

                case "locmeta":
                    using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry))
                        Exports.Add(new ExportItem($"LocMeta File", ExportItem.JsonImage, ExportType.JSON)
                        {
                            Data = JsonConvert.SerializeObject(new LocMetaFile(s), Formatting.Indented)
                        });
                    break;

                case "udic":
                    using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry))
                        using (var reader = new BinaryReader(s))
                        {
                            var udic = new UDicFile(reader);
                            Exports.Add(new ExportItem($"Oodle Header", ExportItem.JsonImage, ExportType.JSON)
                            {
                                Data = JsonConvert.SerializeObject(udic.Header, Formatting.Indented)
                            });
                            Exports.Add(new ExportItem($"Dictionary Data", ExportItem.RawImage, ExportType.RAW)
                            {
                                Data = udic.DictionaryData
                            });
                            Exports.Add(new ExportItem($"Compressor State", ExportItem.RawImage, ExportType.RAW)
                            {
                                Data = udic.CompressorState
                            });
                        }
                    break;

                case "bin":
                    if (!title.Contains("AssetRegistry"))
                    {
                        break;
                    }
                    using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry))
                        using (var reader = new BinaryReader(s))
                        {
                            Exports.Add(new ExportItem($"AssetRegistry", ExportItem.JsonImage, ExportType.JSON)
                            {
                                Data = JsonConvert.SerializeObject(new AssetRegistryFile(s), Formatting.Indented)
                            });
                        }
                    break;
                }

                using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry) as MemoryStream)
                    Exports.Add(new ExportItem($"Raw {kv.Key}", ExportItem.RawImage, ExportType.RAW)
                    {
                        Data = s.ToArray()
                    });
            }

            if (ExtraExports.Count != 0)
            {
                Exports.Insert(0, new ExportItem("Encoded Data", ExportItem.JsonImage, ExportType.JSON)
                {
                    Data = JsonConvert.SerializeObject(ExtraExports, Formatting.Indented)
                });
            }
        }
Пример #15
0
        public static string GetJsonProperties(FPakEntry entry, string mount, bool loadContent)
        {
            PakPackage p = GetPakPackage(entry, mount, loadContent);

            if (!p.Equals(default))
Пример #16
0
 public static void GetUserFacingFlags(List <string> uffs, BaseIcon icon, string exportType)
 {
     if (uffs.Count > 0)
     {
         PakPackage p = Utils.GetPropertyPakPackage("/Game/Items/ItemCategories"); //PrimaryCategories - SecondaryCategories - TertiaryCategories
         if (p.HasExport() && !p.Equals(default))
Пример #17
0
        public static void GetRarity(BaseIcon icon, ObjectProperty o)
        {
            PakPackage p = Utils.GetPropertyPakPackage(o.Value.Resource.OuterIndex.Resource.ObjectName.String);

            if (p.HasExport() && !p.Equals(default))
Пример #18
0
        public static void GetAsset(BaseLabel icon, SoftObjectProperty s)
        {
            PakPackage p = Utils.GetPropertyPakPackage(s.Value.AssetPathName.String);

            if (p.HasExport() && !p.Equals(default))