Skip to content

Instantly share code, notes, and snippets.

@pushedx
Last active April 20, 2017 18:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pushedx/2628cf2710c87eba97742577fc3b29ea to your computer and use it in GitHub Desktop.
Save pushedx/2628cf2710c87eba97742577fc3b29ea to your computer and use it in GitHub Desktop.
private HashSet<MetadataFlags> _flags;
/// <summary>
/// Does this item have a specific Metadata flag?
/// </summary>
/// <param name="flags">The flags to check.</param>
/// <returns>true if all the metadata flags exists and false if not.</returns>
public bool HasMetadataFlags(params MetadataFlags[] flags)
{
if (_flags == null)
{
if (!BITC.MetadataFlagLookup.TryGetValue(Metadata, out _flags))
{
return false;
}
}
foreach (var flag in flags)
{
if (!_flags.Contains(flag))
{
return false;
}
}
return true;
}
/// <summary>
/// Does this item have any of the specific Metadata flag?
/// </summary>
/// <param name="flags">The flags to check.</param>
/// <returns>true if any of the metadata flags exists and false if not.</returns>
public bool AnyMetadataFlags(params MetadataFlags[] flags)
{
if (_flags == null)
{
if (!BITC.MetadataFlagLookup.TryGetValue(Metadata, out _flags))
{
return false;
}
}
foreach (var flag in flags)
{
if (_flags.Contains(flag))
{
return true;
}
}
return false;
}
#region Temp Metadata Processing
/// <summary>
/// Returns true if this item is of the helmet type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Helmets)")]
public bool IsHelmetType => HasMetadataFlags(MetadataFlags.Helmets);
/// <summary>
/// Returns true if this item is of the Leaguestones type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Leaguestones)")]
public bool IsLeaguestoneType => HasMetadataFlags(MetadataFlags.Leaguestones);
/// <summary>
/// Returns true if this item is of the essence type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.CurrencyItemisedProphecy)")]
public bool IsProphecyType => HasMetadataFlags(MetadataFlags.CurrencyItemisedProphecy);
/// <summary>
/// Returns true if this item is of the Labyrinth item type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Labyrinth)")]
public bool IsLabyrinthType => HasMetadataFlags(MetadataFlags.Labyrinth);
/// <summary>
/// Returns true if this item is of the skill gem type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Gems)")]
public bool IsSkillGemType => HasMetadataFlags(MetadataFlags.Gems);
/// <summary>
/// Returns true if this item is of the quest type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.QuestItems)")]
public bool IsQuestType => HasMetadataFlags(MetadataFlags.QuestItems);
/// <summary>
/// Returns true if this item is of the jewel type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Jewels)")]
public bool IsJewelType => HasMetadataFlags(MetadataFlags.Jewels);
/// <summary>
/// Returns true if this item is of the talisman type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Talismans)")]
public bool IsTalismanType => HasMetadataFlags(MetadataFlags.Talismans);
/// <summary>
/// Returns true if this item is of the divination card type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.DivinationCards)")]
public bool IsDivinationCardType => HasMetadataFlags(MetadataFlags.DivinationCards);
/// <summary>
/// Returns true if this item is of the map type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Maps)")]
public bool IsMapType => HasMetadataFlags(MetadataFlags.Maps);
/// <summary>
/// Returns true if this item is of the map fragment type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.MapFragments)")]
public bool IsMapFragmentType => HasMetadataFlags(MetadataFlags.MapFragments);
/// <summary>
/// Returns true if this item is of the currency type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Currency) && !HasMetadataFlags(MetadataFlags.CurrencyItemisedProphecy)")]
public bool IsCurrencyType => HasMetadataFlags(MetadataFlags.Currency) && !HasMetadataFlags(MetadataFlags.CurrencyItemisedProphecy);
/// <summary>
/// Returns true if this item is of the belt type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Belts)")]
public bool IsBeltType => HasMetadataFlags(MetadataFlags.Belts);
/// <summary>
/// Returns true if this item is of the amulet type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Amulets)")]
public bool IsAmuletType => HasMetadataFlags(MetadataFlags.Amulets);
/// <summary>
/// Returns true if this item is of the ring type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Rings)")]
public bool IsRingType => HasMetadataFlags(MetadataFlags.Rings);
/// <summary>
/// Returns true if this item is of the armour type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Armours)")]
public bool IsArmorType => HasMetadataFlags(MetadataFlags.Armours);
/// <summary>
/// Returns true if this item is of the quiver type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Quivers)")]
public bool IsQuiverType => HasMetadataFlags(MetadataFlags.Quivers);
/// <summary>
/// Returns true if this item is of the flask type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Flasks)")]
public bool IsFlaskType => HasMetadataFlags(MetadataFlags.Flasks);
/// <summary>
/// Returns true if this item is of the weapon type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Weapons)")]
public bool IsWeaponType => HasMetadataFlags(MetadataFlags.Weapons);
/// <summary>
/// Returns true if this item is of the one hand weapon type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.OneHandWeapons)")]
public bool IsOneHandWeaponType => HasMetadataFlags(MetadataFlags.OneHandWeapons);
/// <summary>
/// Returns true if this item is of the two hand weapon type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.TwoHandWeapons)")]
public bool IsTwoHandWeaponType => HasMetadataFlags(MetadataFlags.TwoHandWeapons);
/// <summary>
/// Returns true if this item is of the fishing rod type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.FishingRods)")]
public bool IsFishingRodType => HasMetadataFlags(MetadataFlags.FishingRods);
/// <summary>
/// Returns true if this item is of the bow type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Bows)")]
public bool IsBowType => HasMetadataFlags(MetadataFlags.Bows);
/// <summary>
/// Returns true if this item is of the tow hand mace type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.TwoHandMaces)")]
public bool IsTwoHandMaceType => HasMetadataFlags(MetadataFlags.TwoHandMaces);
/// <summary>
/// Returns true if this item is of the two hand sword type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.TwoHandSwords)")]
public bool IsTwoHandSwordType => HasMetadataFlags(MetadataFlags.TwoHandSwords);
/// <summary>
/// Returns true if this item is of the two hand axe type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.TwoHandAxes)")]
public bool IsTwoHandAxeType => HasMetadataFlags(MetadataFlags.TwoHandAxes);
/// <summary>
/// Returns true if this item is of the staff type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Staves)")]
public bool IsStaffType => HasMetadataFlags(MetadataFlags.Staves);
/// <summary>
/// Returns true if this item is of the one hand mace type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.OneHandMaces)")]
public bool IsOneHandMaceType => HasMetadataFlags(MetadataFlags.OneHandMaces);
/// <summary>
/// Returns true if this item is of the one hand thrusting sword type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.OneHandThrustingSwords)")]
public bool IsOneHandThrustingSwordType => HasMetadataFlags(MetadataFlags.OneHandThrustingSwords);
/// <summary>
/// Returns true if this item is of the one hand sword type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.OneHandSwords)")]
public bool IsOneHandSwordType => HasMetadataFlags(MetadataFlags.OneHandSwords);
/// <summary>
/// Returns true if this item is of the one hand axe type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.OneHandAxes)")]
public bool IsOneHandAxeType => HasMetadataFlags(MetadataFlags.OneHandAxes);
/// <summary>
/// Returns true if this item is of the claw type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Claws)")]
public bool IsClawType => HasMetadataFlags(MetadataFlags.Claws);
/// <summary>
/// Returns true if this item is of the dagger type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Daggers)")]
public bool IsDaggerType => HasMetadataFlags(MetadataFlags.Daggers);
/// <summary>
/// Returns true if this item is of the wand type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Wands)")]
public bool IsWandType => HasMetadataFlags(MetadataFlags.Wands);
/// <summary>
/// Returns true if this item is of the shield type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Shields)")]
public bool IsShieldType => HasMetadataFlags(MetadataFlags.Shields);
/// <summary>
/// Returns true if this item is of the boot type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Boots)")]
public bool IsBootType => HasMetadataFlags(MetadataFlags.Boots);
/// <summary>
/// Returns true if this item is of the glove type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Gloves)")]
public bool IsGloveType => HasMetadataFlags(MetadataFlags.Gloves);
/// <summary>
/// Returns true if this item is of the body armour type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.BodyArmours)")]
public bool IsBodyArmorType => HasMetadataFlags(MetadataFlags.BodyArmours);
/// <summary>
/// Returns true if this item is of the breach shard type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.BreachShard)")]
public bool IsBreachShardType => HasMetadataFlags(MetadataFlags.BreachShard);
/// <summary>
/// Returns true if this item is of the breach upgrade type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.BreachUpgrade)")]
public bool IsBreachUpgradeType => HasMetadataFlags(MetadataFlags.BreachUpgrade);
/// <summary>
/// Returns true if this item is of the essence type and false if not.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.Essence)")]
public bool IsEssenceType => HasMetadataFlags(MetadataFlags.Essence);
/// <summary>
/// Returns true if this item is of the MysteryLeaguestone type.
/// </summary>
[Obsolete("HasMetadataFlags(MetadataFlags.MysteryLeaguestone)")]
public bool IsMysteryLeaguestone => HasMetadataFlags(MetadataFlags.MysteryLeaguestone);
#endregion
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment