using UnityEngine;
namespace DanroJump.Gameplay
{
///
/// Оборудование платформы, которое временно ускоряет горизонтальное движение игрока.
///
public sealed class SpeedBoostEquipment : PlatformEquipmentBase
{
[SerializeField] [Min(0.01f)] private float moveSpeedMultiplier = 1.45f;
[SerializeField] [Min(0.01f)] private float duration = 3f;
[SerializeField] [Min(0f)] private float bounceVelocity;
[SerializeField] [Min(0f)] private float activationCooldown = 0.25f;
private float lastActivationTime = -999f;
///
/// Сбрасывает cooldown при переиспользовании оборудования.
///
public override void ResetEquipment()
{
lastActivationTime = -999f;
}
///
/// Применяет ускорение и опциональный отскок при контакте с игроком.
///
public override void HandlePlayerContact(JumpPlayerController player, Component source)
{
if (player == null || player.IgnoresEnvironmentInteractions || Time.time - lastActivationTime < activationCooldown)
{
return;
}
player.ApplyMoveSpeedMultiplier(moveSpeedMultiplier, duration);
// Bounce опционален: при нуле оборудование влияет только на скорость.
if (bounceVelocity > 0f)
{
player.Bounce(bounceVelocity);
}
lastActivationTime = Time.time;
}
}
}