BITFALL/Assets/Artists/Scripts/Feel/PlayerHandAnimations.cs

64 lines
1.7 KiB
C#
Raw Normal View History

2023-10-20 19:31:12 +08:00
using System.Collections;
using System.Collections.Generic;
2024-03-22 20:16:32 +08:00
using Animancer;
2023-10-20 19:31:12 +08:00
using BITFALL.Entities;
2023-11-15 23:54:54 +08:00
using BITFALL.Player.Equip;
2023-10-20 19:31:12 +08:00
using BITFALL.Player.Movement;
using BITKit;
using BITKit.Animations;
using BITKit.Entities;
using UnityEngine;
namespace BITFALL.Feel
{
2023-10-30 01:25:53 +08:00
public sealed class PlayerHandAnimations : EntityBehavior
2023-10-20 19:31:12 +08:00
{
2024-03-22 20:16:32 +08:00
[SerializeField] private AnimancerComponent animancerComponent;
2023-10-20 19:31:12 +08:00
[Inject]
private IPlayerMovement _playerMovement;
[Inject]
private IKnockdown _knockdown;
2023-11-15 23:54:54 +08:00
[Inject]
private IEquipService _equipService;
2024-03-22 20:16:32 +08:00
[SerializeField] private AnimationClip[] knockdownClips;
[SerializeField] private AnimationClip[] parachuteClips;
[SerializeField] private AnimationClip[] parachuteClosedClips;
2023-10-20 19:31:12 +08:00
public override void OnStart()
{
_playerMovement.OnParachuteOpened += OnParachuteOpened;
_playerMovement.OnParachuteClosed += OnParachuteClosed;
2024-03-22 20:16:32 +08:00
_knockdown.OnKnockdown += OnKnockdown;
2023-11-15 23:54:54 +08:00
}
2023-10-20 19:31:12 +08:00
private void OnKnockdown()
{
2024-03-22 20:16:32 +08:00
if (knockdownClips?.Length is 0) return;
var clip = knockdownClips.Random();
animancerComponent.Play(clip).Events.OnEnd = OnEnd;
_equipService.AllowEquip.AddDisableElements(this);
2023-10-20 19:31:12 +08:00
}
private void OnParachuteClosed()
{
2024-03-22 20:16:32 +08:00
if (parachuteClosedClips?.Length is 0) return;
var clip = parachuteClosedClips.Random();
animancerComponent.Play(clip).Events.OnEnd = OnEnd;
_equipService.AllowEquip.AddDisableElements(this);
2023-10-20 19:31:12 +08:00
}
private void OnParachuteOpened()
{
2024-03-22 20:16:32 +08:00
if (parachuteClips?.Length is 0) return;
var clip = parachuteClips.Random();
animancerComponent.Play(clip).Events.OnEnd = OnEnd;
_equipService.AllowEquip.AddDisableElements(this);
}
private void OnEnd()
{
_equipService.AllowEquip.RemoveDisableElements(this);
animancerComponent.Stop();
2023-10-20 19:31:12 +08:00
}
}
}