112 lines
2.8 KiB
C#
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();
|
|
}
|
|
}
|