r2mods/ilspy_dump/ror2_csproj/RoR2.Skills/VoidRaidCrabWeaponSkillDef.cs

57 lines
1.5 KiB
C#

using EntityStates;
using JetBrains.Annotations;
using UnityEngine;
namespace RoR2.Skills;
[CreateAssetMenu(menuName = "RoR2/SkillDef/VoidRaidCrabWeaponSkillDef")]
public class VoidRaidCrabWeaponSkillDef : SkillDef
{
private class InstanceData : BaseSkillInstanceData
{
public EntityStateMachine bodyStateMachine;
public EntityStateMachine weaponStateMachine;
}
private const string bodyStateMachineName = "Body";
private const string weaponStateMachineName = "Weapon";
public override BaseSkillInstanceData OnAssigned(GenericSkill skillSlot)
{
return new InstanceData
{
bodyStateMachine = EntityStateMachine.FindByCustomName(skillSlot.gameObject, "Body"),
weaponStateMachine = EntityStateMachine.FindByCustomName(skillSlot.gameObject, "Weapon")
};
}
public override bool IsReady([NotNull] GenericSkill skillSlot)
{
if (base.IsReady(skillSlot) && CanReceiveInput(skillSlot))
{
return !IsWeaponBusy(skillSlot);
}
return false;
}
private bool CanReceiveInput([NotNull] GenericSkill skillSlot)
{
if (skillSlot.skillInstanceData is InstanceData instanceData && (bool)instanceData.bodyStateMachine)
{
return instanceData.bodyStateMachine.state is GenericCharacterMain;
}
return false;
}
private bool IsWeaponBusy([NotNull] GenericSkill skillSlot)
{
if (skillSlot.skillInstanceData is InstanceData instanceData && (bool)instanceData.weaponStateMachine)
{
return !instanceData.weaponStateMachine.IsInMainState();
}
return false;
}
}