Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaShared/SharedSource/Characters/Jobs/SkillPrefab.cs
2024-12-11 13:26:13 +02:00

52 lines
1.8 KiB
C#

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