Ekosistem_Game/Assets/Script/DragHewan.cs

90 lines
2.8 KiB
C#

using UnityEngine;
using UnityEngine.EventSystems;
public enum JenisEkosistem { Sawah, Gurun, Perairan, Pengecoh }
public class DragHewan : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
private Vector3 posisiAwal;
private RectTransform rectTransform;
private CanvasGroup canvasGroup;
private Transform parentAwal;
[Header("Pilih Asal Ekosistem Hewan Ini:")]
public JenisEkosistem asalEkosistem;
[Header("Suara Narasi:")]
public AudioClip kasetNamaHewan; // Masukkan suara "Ular"
public AudioClip kasetNamaEkosistem; // Masukkan suara "Sawah"
void Awake()
{
rectTransform = GetComponent<RectTransform>();
canvasGroup = GetComponent<CanvasGroup>();
if (canvasGroup == null) canvasGroup = gameObject.AddComponent<CanvasGroup>();
}
public void OnBeginDrag(PointerEventData eventData)
{
posisiAwal = rectTransform.anchoredPosition;
parentAwal = transform.parent;
canvasGroup.alpha = 0.7f;
canvasGroup.blocksRaycasts = false;
transform.SetAsLastSibling();
// ==========================================
// NARATOR SEBUT NAMA HEWAN SAAT DIKLIK
// ==========================================
GameManager manajerGame = FindObjectOfType<GameManager>();
if (manajerGame != null && kasetNamaHewan != null)
{
manajerGame.speakerGame.PlayOneShot(kasetNamaHewan);
}
}
public void OnDrag(PointerEventData eventData)
{
rectTransform.anchoredPosition += eventData.delta / GetComponentInParent<Canvas>().scaleFactor;
}
public void OnEndDrag(PointerEventData eventData)
{
canvasGroup.alpha = 1f;
canvasGroup.blocksRaycasts = true;
// Jangan langsung dipanggil, beri jeda sedikit buat cek Keranjang
Invoke("KembaliKeAwal", 0.05f);
}
public void KembaliKeAwal()
{
transform.SetParent(parentAwal);
rectTransform.anchoredPosition = posisiAwal;
GameManager manajerGame = FindObjectOfType<GameManager>();
if (manajerGame != null)
{
manajerGame.JawabanSalah();
}
}
// ==========================================
// PERBAIKAN: Fungsi ini dipanggil dari 'KeranjangPintar'
// ==========================================
public void BerhasilMasukEkosistem()
{
CancelInvoke("KembaliKeAwal"); // Amankan biar gak mental balik
GameManager manajerGame = FindObjectOfType<GameManager>();
if (manajerGame != null)
{
// Kirim kaset suara ekosistem (Sawah/Gurun/Perairan) ke GameManager
manajerGame.TambahSkor(kasetNamaEkosistem);
}
// Script dimatikan biar gak bisa ditarik lagi setelah masuk
this.enabled = false;
}
}