MIF_E31222569/Assets/ToothyV/Scripts/UI/SelectLevel.cs

112 lines
2.8 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Serialization;
using UnityEngine.UI;
public class SelectLevel : Menu<SelectLevel>
{
[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<Image>();
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();
}
}