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

70 lines
2.0 KiB
C#

using System;
using RoR2;
using RoR2.Skills;
using UnityEngine;
using UnityEngine.Networking;
namespace EntityStates.Toolbot;
public class ToolbotStanceSwap : ToolbotStanceBase
{
[SerializeField]
private float baseDuration = 0.5f;
private Run.FixedTimeStamp endTime;
public Type nextStanceState;
public Type previousStanceState;
public override void OnEnter()
{
base.OnEnter();
float num = baseDuration / attackSpeedStat;
endTime = Run.FixedTimeStamp.now + num;
GenericSkill a = GetPrimarySkill1();
GenericSkill b = GetPrimarySkill2();
if (previousStanceState != typeof(ToolbotStanceA))
{
Util.Swap(ref a, ref b);
}
if ((bool)b && b.skillDef is ToolbotWeaponSkillDef toolbotWeaponSkillDef)
{
SendWeaponStanceToAnimator(toolbotWeaponSkillDef);
Util.PlaySound(toolbotWeaponSkillDef.entrySound, base.gameObject);
}
if ((bool)a && a.skillDef is ToolbotWeaponSkillDef toolbotWeaponSkillDef2)
{
PlayAnimation("Stance, Additive", toolbotWeaponSkillDef2.exitAnimState, "StanceSwap.playbackRate", num * 0.5f);
PlayAnimation("Gesture, Additive", toolbotWeaponSkillDef2.exitGestureAnimState);
}
}
public override void FixedUpdate()
{
base.FixedUpdate();
if (base.isAuthority && endTime.hasPassed)
{
outer.SetNextState(EntityStateCatalog.InstantiateState(nextStanceState));
}
}
public override void OnSerialize(NetworkWriter writer)
{
base.OnSerialize(writer);
EntityStateIndex stateIndex = EntityStateCatalog.GetStateIndex(previousStanceState);
EntityStateIndex stateIndex2 = EntityStateCatalog.GetStateIndex(nextStanceState);
writer.Write(stateIndex);
writer.Write(stateIndex2);
}
public override void OnDeserialize(NetworkReader reader)
{
base.OnDeserialize(reader);
EntityStateIndex entityStateIndex = reader.ReadEntityStateIndex();
EntityStateIndex entityStateIndex2 = reader.ReadEntityStateIndex();
previousStanceState = EntityStateCatalog.GetStateType(entityStateIndex);
nextStanceState = EntityStateCatalog.GetStateType(entityStateIndex2);
}
}