using System.Globalization; namespace Barotrauma { class SkillPrefab { public readonly Identifier Identifier; private readonly Range levelRange; private readonly Range levelRangePvP; /// /// How much this skill affects characters' hiring cost /// public readonly float PriceMultiplier; public bool IsPrimarySkill { get; } public SkillPrefab(ContentXElement element) { Identifier = element.GetAttributeIdentifier("identifier", ""); PriceMultiplier = element.GetAttributeFloat("pricemultiplier", 15.0f); levelRange = GetSkillRange("level", element, defaultValue: new Range(0, 0)); levelRangePvP = GetSkillRange("pvplevel", element, defaultValue: levelRange); IsPrimarySkill = element.GetAttributeBool("primary", false); static Range GetSkillRange(string attributeName, ContentXElement element, Range defaultValue) { string levelString = element.GetAttributeString(attributeName, string.Empty); if (levelString.Contains(',')) { var rangeVector2 = XMLExtensions.ParseVector2(levelString, false); return new Range(rangeVector2.X, rangeVector2.Y); } else if (float.TryParse(levelString, NumberStyles.Any, CultureInfo.InvariantCulture, out float skillLevel)) { return new Range(skillLevel, skillLevel); } else { return defaultValue; } } } public Range GetLevelRange(bool isPvP) { return isPvP ? levelRangePvP : levelRange; } } }