46 lines
1.3 KiB
C#
46 lines
1.3 KiB
C#
|
using System;
|
||
|
using RoR2;
|
||
|
using UnityEngine.Networking;
|
||
|
|
||
|
namespace EntityStates;
|
||
|
|
||
|
public static class SkillStateMethods
|
||
|
{
|
||
|
public static void Serialize(this ISkillState skillState, SkillLocator skillLocator, NetworkWriter writer)
|
||
|
{
|
||
|
int num = -1;
|
||
|
if ((object)skillLocator != null)
|
||
|
{
|
||
|
num = skillLocator.GetSkillSlotIndex(skillState.activatorSkillSlot);
|
||
|
}
|
||
|
writer.Write((sbyte)num);
|
||
|
}
|
||
|
|
||
|
public static void Deserialize(this ISkillState skillState, SkillLocator skillLocator, NetworkReader reader)
|
||
|
{
|
||
|
int index = reader.ReadSByte();
|
||
|
if ((object)skillLocator != null)
|
||
|
{
|
||
|
skillState.activatorSkillSlot = skillLocator.GetSkillAtIndex(index);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static bool IsKeyDownAuthority(this ISkillState skillState, SkillLocator skillLocator, InputBankTest inputBank)
|
||
|
{
|
||
|
GenericSkill activatorSkillSlot = skillState.activatorSkillSlot;
|
||
|
if ((object)skillLocator == null || (object)activatorSkillSlot == null || (object)inputBank == null)
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
return skillLocator.FindSkillSlot(activatorSkillSlot) switch
|
||
|
{
|
||
|
SkillSlot.None => false,
|
||
|
SkillSlot.Primary => inputBank.skill1.down,
|
||
|
SkillSlot.Secondary => inputBank.skill2.down,
|
||
|
SkillSlot.Utility => inputBank.skill3.down,
|
||
|
SkillSlot.Special => inputBank.skill4.down,
|
||
|
_ => throw new ArgumentOutOfRangeException(),
|
||
|
};
|
||
|
}
|
||
|
}
|