r2mods/ilspy_dump/ror2_csproj/EntityStates.Toolbot/ToolbotStanceBase.cs

125 lines
3.0 KiB
C#

using System;
using RoR2;
using RoR2.Skills;
using RoR2.UI;
using UnityEngine;
namespace EntityStates.Toolbot;
public class ToolbotStanceBase : BaseState
{
protected enum WeaponStance
{
None = -1,
Nailgun,
Spear,
Grenade,
Buzzsaw
}
private CrosshairUtils.OverrideRequest crosshairOverrideRequest;
public static GameObject emptyCrosshairPrefab;
public static AnimationCurve emptyCrosshairSpreadCurve;
protected Inventory inventory;
public Type swapStateType;
protected void SetPrimarySkill()
{
base.skillLocator.primary = GetCurrentPrimarySkill();
}
protected void SetSecondarySkill(string skillName)
{
if ((bool)base.skillLocator)
{
base.skillLocator.secondary = base.skillLocator.FindSkill(skillName);
}
}
protected string GetSkillSlotStance(GenericSkill skillSlot)
{
return (skillSlot.skillDef as ToolbotWeaponSkillDef)?.stanceName ?? string.Empty;
}
protected GenericSkill GetPrimarySkill1()
{
return base.skillLocator.FindSkillByFamilyName("ToolbotBodyPrimary1");
}
protected GenericSkill GetPrimarySkill2()
{
return base.skillLocator.FindSkillByFamilyName("ToolbotBodyPrimary2");
}
protected virtual GenericSkill GetCurrentPrimarySkill()
{
return null;
}
protected void UpdateCrosshairParameters(ToolbotWeaponSkillDef weaponSkillDef)
{
GameObject crosshairPrefab = emptyCrosshairPrefab;
AnimationCurve crosshairSpreadCurve = emptyCrosshairSpreadCurve;
if ((bool)weaponSkillDef)
{
crosshairPrefab = weaponSkillDef.crosshairPrefab;
crosshairSpreadCurve = weaponSkillDef.crosshairSpreadCurve;
}
crosshairOverrideRequest?.Dispose();
crosshairOverrideRequest = CrosshairUtils.RequestOverrideForBody(base.characterBody, crosshairPrefab, CrosshairUtils.OverridePriority.Skill);
base.characterBody.spreadBloomCurve = crosshairSpreadCurve;
}
protected void SetEquipmentSlot(byte i)
{
if ((bool)inventory)
{
inventory.SetActiveEquipmentSlot(i);
}
}
public override void OnEnter()
{
base.OnEnter();
inventory = (base.characterBody ? base.characterBody.inventory : null);
SetPrimarySkill();
ToolbotWeaponSkillDef toolbotWeaponSkillDef = GetCurrentPrimarySkill()?.skillDef as ToolbotWeaponSkillDef;
if ((bool)toolbotWeaponSkillDef)
{
SendWeaponStanceToAnimator(toolbotWeaponSkillDef);
PlayCrossfade("Gesture, Additive", toolbotWeaponSkillDef.enterGestureAnimState, 0.2f);
}
UpdateCrosshairParameters(toolbotWeaponSkillDef);
}
public override void OnExit()
{
crosshairOverrideRequest?.Dispose();
base.OnExit();
}
protected void SendWeaponStanceToAnimator(ToolbotWeaponSkillDef weaponSkillDef)
{
if ((bool)weaponSkillDef)
{
GetModelAnimator().SetInteger("weaponStance", weaponSkillDef.animatorWeaponIndex);
}
}
protected static WeaponStance GetSkillStance(GenericSkill skillSlot)
{
return (skillSlot?.skillDef as ToolbotWeaponSkillDef)?.stanceName switch
{
"Nailgun" => WeaponStance.Nailgun,
"Spear" => WeaponStance.Spear,
"Grenade" => WeaponStance.Grenade,
"Buzzsaw" => WeaponStance.Buzzsaw,
_ => WeaponStance.None,
};
}
}