using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Serialization; using UnityEngine.UI; public class SelectLevel : Menu { [SerializeField] private GameObject[] containerLevelButton; [SerializeField] private int indexContainer; [SerializeField] private Button[] buttons; [SerializeField] private int indexUnlock; [SerializeField] private DataManager dataManager; [SerializeField] private Sprite completeSprite; [SerializeField] private Sprite lockedSprite; [SerializeField] private Sprite currentSprite; private void OnEnable() { dataManager = DataManager.instance; StartCoroutine(DelayDataManager()); } IEnumerator DelayDataManager() { yield return new WaitForSeconds(.1f); RefreshButtonsUnlockProggres(); } private void OnDisable() { RefreshButtonsUnlockProggres(); } void RefreshButtonsUnlockProggres() { dataManager.Load(); indexUnlock = dataManager.UnlockLevel; for (int i = 0; i < buttons.Length; i++) { Image imgSprite = buttons[i].GetComponent(); if (i < indexUnlock - 1) { // ✅ Level yang sudah selesai → completeSprite, tidak bisa dibuka imgSprite.sprite = completeSprite; buttons[i].interactable = true; } else if (i == indexUnlock - 1) { // ✅ Level yang sedang bisa dimainkan → currentSprite, bisa dibuka imgSprite.sprite = currentSprite; buttons[i].interactable = true; } else { // ❌ Level yang belum dibuka → lockedSprite, tidak bisa dibuka imgSprite.sprite = lockedSprite; buttons[i].interactable = false; } } } void RefreshContainer() { for (int i = 0; i < containerLevelButton.Length; i++) { containerLevelButton[i].SetActive(false); } containerLevelButton[indexContainer].SetActive(true); } public void NextLevelButton() { Debug.Log("NextLevelButton"); indexContainer++; if (indexContainer >= containerLevelButton.Length) { indexContainer = 0; } RefreshContainer(); } public void PreviousLevelButton() { Debug.Log("PreviousLevelButton"); indexContainer--; if (indexContainer < 0) { indexContainer = containerLevelButton.Length - 1; } RefreshContainer(); } public void SelectLevelButton(string nameScene) { SceneController.Instance.LoadScene(nameScene); GameMenu.Open(); } }