using UnityEngine;
using DanroJump.Audio;
using DanroJump.Vfx;
namespace DanroJump.Gameplay
{
///
/// Collectible монеты, который увеличивает счетчик монет и очки сессии.
///
public sealed class CoinCollectible : CollectibleBase
{
[SerializeField] [Min(1)] private int coinValue = 1;
[SerializeField] [Min(0)] private int scoreValue = 1;
private GameplaySession session;
private IGameAudioService audioService;
private IVfxService vfxService;
///
/// Получает игровую сессию для записи награды.
///
[Zenject.Inject]
public void Construct(
GameplaySession injectedSession,
[Zenject.InjectOptional] IGameAudioService injectedAudioService = null,
[Zenject.InjectOptional] IVfxService injectedVfxService = null)
{
session = injectedSession;
audioService = injectedAudioService;
vfxService = injectedVfxService;
}
///
/// Начисляет монеты и очки после подбора.
///
protected override void OnCollected(JumpPlayerController player)
{
audioService?.Play(GameAudioEvent.CoinCollected, transform.position);
vfxService?.SpawnCoinCollectedEffect(transform.position);
session?.AddCoins(coinValue);
session?.AddScore(scoreValue);
}
}
}