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(); canvasGroup = GetComponent(); if (canvasGroup == null) canvasGroup = gameObject.AddComponent(); } 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(); if (manajerGame != null && kasetNamaHewan != null) { manajerGame.speakerGame.PlayOneShot(kasetNamaHewan); } } public void OnDrag(PointerEventData eventData) { rectTransform.anchoredPosition += eventData.delta / GetComponentInParent().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(); if (manajerGame != null) { manajerGame.JawabanSalah(); } } // ========================================== // PERBAIKAN: Fungsi ini dipanggil dari 'KeranjangPintar' // ========================================== public void BerhasilMasukEkosistem() { CancelInvoke("KembaliKeAwal"); // Amankan biar gak mental balik GameManager manajerGame = FindObjectOfType(); 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; } }