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)); } } }
public Loadout(STULoadout loadout) { MovieGUID = loadout.m_infoMovie; Category = loadout.m_category; Name = GetString(loadout.m_name); Description = GetString(loadout.m_description); }
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); }
public Loadout(ulong key) { STULoadout loadout = STUHelper.GetInstance <STULoadout>(key); if (loadout == null) { return; } Init(key, loadout); }
public static Loadout GetLoadout(ulong key) { STULoadout loadout = STUHelper.GetInstance <STULoadout>(key); if (loadout == null) { return(null); } return(new Loadout(loadout)); }
public Loadout(ulong key) { STULoadout stu = STUHelper.GetInstance <STULoadout>(key); if (stu == null) { return; } Init(stu, key); }
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())); }
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; }
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")); } } } }
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}"); } } }
public Loadout(ulong key, STULoadout loadout) { Init(key, loadout); }
public Loadout(STULoadout stu) { Init(stu); }
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)}\""); } }
public Loadout(STULoadout loadout) { Init(loadout); }