r2mods/ilspy_dump/ror2_csproj/RoR2/ProcChainMask.cs

85 lines
1.5 KiB
C#

using System;
using System.Text;
using UnityEngine;
namespace RoR2;
[Serializable]
public struct ProcChainMask : IEquatable<ProcChainMask>
{
[SerializeField]
public uint mask;
private static readonly StringBuilder sharedStringBuilder = new StringBuilder();
public void AddProc(ProcType procType)
{
mask |= (uint)(1 << (int)procType);
}
public void RemoveProc(ProcType procType)
{
mask &= (uint)(~(1 << (int)procType));
}
public bool HasProc(ProcType procType)
{
return (mask & (1 << (int)procType)) != 0;
}
private static bool StaticCheck()
{
return true;
}
public bool Equals(ProcChainMask other)
{
return mask == other.mask;
}
public override bool Equals(object obj)
{
if (obj == null)
{
return false;
}
if (obj is ProcChainMask)
{
return Equals((ProcChainMask)obj);
}
return false;
}
public override int GetHashCode()
{
return mask.GetHashCode();
}
public override string ToString()
{
AppendToStringBuilder(sharedStringBuilder);
string result = sharedStringBuilder.ToString();
sharedStringBuilder.Clear();
return result;
}
public void AppendToStringBuilder(StringBuilder stringBuilder)
{
stringBuilder.Append("(");
bool flag = false;
for (ProcType procType = ProcType.Behemoth; procType < ProcType.Count; procType++)
{
if (HasProc(procType))
{
if (flag)
{
stringBuilder.Append("|");
}
stringBuilder.Append(procType.ToString());
flag = true;
}
}
stringBuilder.Append(")");
}
}