Exemplo n.º 1
0
        public Hero(STUHero hero)
        {
            Name        = GetString(hero.m_0EDCE350);
            Description = GetDescriptionString(hero.m_3446F580);
            Gender      = hero.m_gender;
            Size        = hero.m_heroSize;

            GalleryColor = hero.m_heroColor;

            //if (hero.m_skinThemes != null) {
            //    SkinThemes = new List<HeroSkinTheme>();
            //    foreach (STU_63172E83 skinTheme in hero.m_skinThemes) {
            //        SkinThemes.Add(new HeroSkinTheme(skinTheme));
            //    }
            //}

            if (hero.m_heroLoadout != null)
            {
                Loadouts = new List <Loadout>();
                foreach (teResourceGUID loadout in hero.m_heroLoadout)
                {
                    STULoadout stuLoadout = GetInstance <STULoadout>(loadout);
                    if (stuLoadout == null)
                    {
                        continue;
                    }

                    Loadouts.Add(new Loadout(stuLoadout));
                }
            }
        }
Exemplo n.º 2
0
        public Loadout(STULoadout loadout)
        {
            MovieGUID = loadout.m_infoMovie;

            Category = loadout.m_category;

            Name        = GetString(loadout.m_name);
            Description = GetString(loadout.m_description);
        }
Exemplo n.º 3
0
        private void Init(ulong key, STULoadout loadout)
        {
            GUID      = key;
            MovieGUID = loadout.m_infoMovie;

            Category = loadout.m_category;

            Name        = GetString(loadout.m_name);
            Description = GetString(loadout.m_description);
        }
Exemplo n.º 4
0
        public Loadout(ulong key)
        {
            STULoadout loadout = STUHelper.GetInstance <STULoadout>(key);

            if (loadout == null)
            {
                return;
            }
            Init(key, loadout);
        }
Exemplo n.º 5
0
        public static Loadout GetLoadout(ulong key)
        {
            STULoadout loadout = STUHelper.GetInstance <STULoadout>(key);

            if (loadout == null)
            {
                return(null);
            }
            return(new Loadout(loadout));
        }
Exemplo n.º 6
0
        public Loadout(ulong key)
        {
            STULoadout stu = STUHelper.GetInstance <STULoadout>(key);

            if (stu == null)
            {
                return;
            }
            Init(stu, key);
        }
Exemplo n.º 7
0
        public AbilityInfo GetAbility(Common.STUGUID key)
        {
            STULoadout ability = GetInstance <STULoadout>(key);

            if (ability == null)
            {
                return(null);
            }

            return(new AbilityInfo(key, GetString(ability.Name), GetString(ability.Description), ability.Category.ToString()));
        }
Exemplo n.º 8
0
        public void Init(STULoadout loadout, ulong key = default)
        {
            GUID        = (teResourceGUID)key;
            MovieGUID   = loadout.m_infoMovie;
            TextureGUID = loadout.m_texture;
            Category    = loadout.m_category;

            Name        = GetString(loadout.m_name);
            Description = GetString(loadout.m_description);

            Button             = GetString(STUHelper.GetInstance <STU_C5243F93>(loadout.m_logicalButton)?.m_name);
            ButtonUnk          = GetString(STUHelper.GetInstance <STU_C5243F93>(loadout.m_9290B942)?.m_name);
            DescriptionButtons = loadout.m_B1124918?.Select(x => GetString(STUHelper.GetInstance <STU_C5243F93>(x)?.m_name)).ToArray();

            // If the ability isn't shown in the UI (weapons, zoom ability)
            IsHiddenAbility = loadout.m_0E679979 >= 1;

            // Mercy, Bastion and Torbjorn all have 2 weapons, this is only set on their secondary weapons??
            IsSecondaryWeapon = loadout.m_0E679979 == 2;
        }
Exemplo n.º 9
0
        public static void SaveAbilities(ICLIFlags toolFlags)
        {
            string basePath;

            if (toolFlags is ExtractFlags flags)
            {
                basePath = flags.OutputPath;
            }
            else
            {
                throw new Exception("no output path");
            }

            const string folderName = "Abilities";

            foreach (ulong key in TrackedFiles[0x9E])
            {
                STULoadout loadout = GetInstance <STULoadout>(key);
                if (loadout == null)
                {
                    continue;
                }

                string name = GetValidFilename(GetString(loadout.m_name)?.TrimEnd().Replace(".", "_")) ?? $"Unknown{teResourceGUID.Index(key):X}";

                Combo.ComboInfo info = new Combo.ComboInfo();
                Combo.Find(info, loadout.m_texture);

                var context = new SaveLogic.Combo.SaveContext(info);
                SaveLogic.Combo.SaveLooseTextures(flags, Path.Combine(basePath, folderName, name), context);
                context.Wait();

                using (Stream videoStream = OpenFile(loadout.m_infoMovie)) {
                    if (videoStream != null)
                    {
                        videoStream.Position = 128; // wrapped in "MOVI" for some reason
                        WriteFile(videoStream, Path.Combine(basePath, folderName, name, $"{teResourceGUID.LongKey(loadout.m_infoMovie):X12}.bk2"));
                    }
                }
            }
        }
Exemplo n.º 10
0
        public void Parse(Dictionary <ushort, List <ulong> > track, Dictionary <ulong, Record> map, CASCHandler handler, bool quiet, OverToolFlags flags)
        {
            foreach (ulong key in track[0x9E])
            {
                if (!map.ContainsKey(key))
                {
                    continue;
                }

                using (Stream input = Util.OpenFile(map[key], handler)) {
                    if (input == null)
                    {
                        continue;
                    }
                    ISTU stu = ISTU.NewInstance(input, uint.MaxValue);
                    if (stu.Instances == null)
                    {
                        continue;
                    }

                    STULoadout ability = stu.Instances.First() as STULoadout;
                    if (ability == null)
                    {
                        continue;
                    }

                    Console.Out.WriteLine(Util.GetString(ability.Name, map, handler));
                    if (ability.Category == STULib.Types.Enums.LoadoutCategory.Weapon)
                    {
                        Console.Out.WriteLine($"\t{ability.Category}: {ability.WeaponIndex}");
                    }
                    else
                    {
                        Console.Out.WriteLine($"\t{ability.Category}");
                    }
                    Console.Out.WriteLine($"\t{Util.GetString(ability.Description, map, handler)}");

                    // Console.Out.WriteLine($"{Util.GetString(achieve.Name, map, handler)}, {achieve.AbilityType}, {achieve.WeaponIndex}, {achieve.Unknown3}");
                }
            }
        }
Exemplo n.º 11
0
 public Loadout(ulong key, STULoadout loadout)
 {
     Init(key, loadout);
 }
Exemplo n.º 12
0
 public Loadout(STULoadout stu)
 {
     Init(stu);
 }
Exemplo n.º 13
0
            private string DumpGUID(IndentHelper indentHelper, ulong guid)
            {
                string baseString = $"\r\n{indentHelper + 1}[{GetGUIDTypeName(guid)}]";

                STUInstance[] instances;
                switch (GUID.Type(guid))
                {
                default:
                    return("");

                case 0x7C:
                case 0xA9:
                    return($"{baseString} \"{GetOWString(guid, _handler, _map)}\"");

                case 0x90:
                    instances = GetInstances(guid, _handler, _map);
                    if (instances[0] == null)
                    {
                        return(null);
                    }
                    STUEncryptionKey encryptionKey = instances[0] as STUEncryptionKey;
                    return($"{baseString} {encryptionKey?.KeyNameProper}:{encryptionKey?.Key}");

                case 0xA5:
                    instances = GetInstances(guid, _handler, _map);
                    STUUnlock unlock      = instances.OfType <STUUnlock>().First();
                    string    baseString2 = $"\r\n{indentHelper + 1}[{GetGUIDTypeName(guid)}";
                    if (unlock == null)
                    {
                        return(null);
                    }
                    if (unlock is STUUnlock_Currency)
                    {
                        return($"{baseString2}:Credits] {(unlock as STUUnlock_Currency).Amount} Credits");
                    }
                    else if (unlock is STULevelPortrait)
                    {
                        STULevelPortrait portrait = unlock as STULevelPortrait;
                        return
                            ($"{baseString2}:Credits] {portrait.Tier} Star:{portrait.Star} Level:{portrait.Level}");
                    }
                    else if (unlock is STUCompetitiveCurrencyReward)
                    {
                        STUCompetitiveCurrencyReward competitiveCurrencyReward = unlock as STUCompetitiveCurrencyReward;
                        return
                            ($"{baseString2}:CompetitivePoints] {competitiveCurrencyReward.Amount} points");
                    }
                    else
                    {
                        return($"{baseString2}:{unlock.GetType().Name}] \"{GetOWString(unlock.CosmeticName, _handler, _map)}\"");
                    }

                case 0x9E:
                    instances = GetInstances(guid, _handler, _map);
                    if (instances[0] == null)
                    {
                        return(null);
                    }
                    STULoadout ability = instances[0] as STULoadout;
                    return($"{baseString} \"{GetOWString(ability?.Name, _handler, _map)}\" ({ability?.Category})");

                case 0xC5:
                    instances = GetInstances(guid, _handler, _map);
                    if (instances[0] == null)
                    {
                        return(null);
                    }
                    STUGamemode gamemode = instances[0] as STUGamemode;
                    return($"{baseString} \"{GetOWString(gamemode?.DisplayName, _handler, _map)}\"");

                case 0xC6:
                    instances = GetInstances(guid, _handler, _map);
                    if (instances[0] == null)
                    {
                        return(null);
                    }
                    STUGameRulesetSchema gameRulsetSchema = instances[0] as STUGameRulesetSchema;
                    return($"{baseString} \"{GetOWString(gameRulsetSchema?.Name, _handler, _map)}\"");

                case 0x75:
                    instances = GetInstances(guid, _handler, _map);
                    if (instances[0] == null)
                    {
                        return(null);
                    }
                    STUHero hero = instances[0] as STUHero;
                    return($"{baseString} \"{GetOWString(hero?.Name, _handler, _map)}\"");
                }
            }
Exemplo n.º 14
0
 public Loadout(STULoadout loadout)
 {
     Init(loadout);
 }