MIF_E31221325/Assets/script/BackButtonManager.cs

243 lines
7.0 KiB
C#

using UnityEngine;
using UnityEngine.SceneManagement;
public class BackButtonManager : MonoBehaviour
{
//[Header("Popup konfirmasi keluar (Main Menu)")]
//public GameObject popupKeluar;
//[Header("Popup lain yang ada di scene")]
//public GameObject[] popupsLain;
//[Header("Nama scene Main Menu")]
//public string namaSceneMainMenu = "MainMenu"; // ganti sesuai nama scene main menu kamu
//[Header("Nama scene tujuan kembali dari dalam game")]
//public string namaSceneSebelumnya = "MainMenu"; // ganti sesuai scene yang mau kamu kembali di dalam game
//void Update()
//{
// if (Input.GetKeyDown(KeyCode.Escape))
// {
// string currentScene = SceneManager.GetActiveScene().name;
// // Tutup popup lain dulu kalau ada yang aktif
// foreach (GameObject popup in popupsLain)
// {
// if (popup != null && popup.activeSelf)
// {
// popup.SetActive(false);
// return; // stop, jangan lanjut
// }
// }
// if (currentScene == namaSceneMainMenu)
// {
// // Di Main Menu muncul popup keluar game
// if (popupKeluar != null && !popupKeluar.activeSelf)
// {
// popupKeluar.SetActive(true);
// }
// }
// else
// {
// // Di dalam game langsung load scene sebelumnya (bisa main menu atau scene lain)
// SceneManager.LoadScene(namaSceneSebelumnya);
// }
// }
// if (Input.GetKeyDown(KeyCode.Escape))
// {
// Debug.Log("Tombol Escape ditekan");
// // kode lain...
// }
//}
//public void KeluarGame()
//{
// Application.Quit();
//}
//public void BatalKeluar()
//{
// if (popupKeluar != null)
// popupKeluar.SetActive(false);
//}
//[Header("Popup Lain (semua selain kelas, termasuk materi, info, dll)")]
//public GameObject[] popupLain;
//[Header("Popup Keluar Game (khusus scene Main Menu)")]
//public GameObject popupKeluar;
//[Header("Nama Scene Main Menu")]
//public string namaSceneMainMenu = "MainMenu";
//[Header("Nama Scene Sebelumnya (untuk kembali jika bukan Main Menu)")]
//public string namaSceneSebelumnya = "MainMenu";
//void Update()
//{
// if (Input.GetKeyDown(KeyCode.Escape))
// {
// string currentScene = SceneManager.GetActiveScene().name;
// bool popupTertutup = false;
// // Tutup semua popup lain yang aktif
// if (popupLain != null)
// {
// foreach (GameObject popup in popupLain)
// {
// if (popup != null && popup.activeSelf)
// {
// popup.SetActive(false);
// popupTertutup = true;
// }
// }
// }
// // Jika ada popup yang baru saja ditutup, jangan lanjut
// if (popupTertutup) return;
// // Kalau di Main Menu, tampilkan popup keluar
// if (currentScene == namaSceneMainMenu)
// {
// if (popupKeluar != null && !popupKeluar.activeSelf)
// {
// popupKeluar.SetActive(true);
// return;
// }
// }
// // Kalau tidak di Main Menu, kembali ke scene sebelumnya
// SceneManager.LoadScene(namaSceneSebelumnya);
// }
//}
//public void KeluarGame()
//{
// Debug.Log("Keluar dari game...");
// Application.Quit();
//}
//public void BatalKeluar()
//{
// if (popupKeluar != null)
// {
// popupKeluar.SetActive(false);
// }
//}
[Header("Semua popup (baik pilihan maupun isi)")]
public GameObject[] popupLain;
[Header("Popup Keluar Game (khusus di Main Menu)")]
public GameObject popupKeluar;
[Header("Nama Scene Main Menu")]
public string namaSceneMainMenu = "MainMenu";
[Header("Nama Scene Sebelumnya (kalau bukan Main Menu)")]
public string namaSceneSebelumnya = "MainMenu";
// Menyimpan popup pilihan dan isi materi terakhir yang dibuka
private GameObject popupPilihanTerakhir;
private GameObject popupIsiTerakhir;
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
string currentScene = SceneManager.GetActiveScene().name;
bool popupTertutup = false;
// Cek dan tutup popup yang sedang aktif
if (popupLain != null)
{
// Tutup hanya satu popup aktif paling atas
for (int i = popupLain.Length - 1; i >= 0; i--) // Mulai dari yang terakhir
{
GameObject popup = popupLain[i];
if (popup != null && popup.activeSelf)
{
popup.SetActive(false);
popupTertutup = true;
if (popup == popupIsiTerakhir && popupPilihanTerakhir != null)
{
popupPilihanTerakhir.SetActive(true);
}
// Stop proses Escape setelah menutup satu popup
return;
}
}
}
// Jika ada popup yang ditutup, jangan lanjut ke scene
if (popupTertutup) return;
// Kalau sedang di Main Menu, tampilkan popup keluar
if (currentScene == namaSceneMainMenu)
{
if (popupKeluar != null && !popupKeluar.activeSelf)
{
popupKeluar.SetActive(true);
return;
}
}
// Kalau bukan di Main Menu, kembali ke scene sebelumnya
SceneManager.LoadScene(namaSceneSebelumnya);
}
}
/// <summary>
/// Dipanggil saat membuka popup isi dari popup pilihan
/// </summary>
/// <param name="popupIsi">Popup isi materi yang mau ditampilkan</param>
/// <param name="popupPilihan">Popup pilihan materi yang sedang terbuka</param>
public void BukaIsiMateri(GameObject popupIsi, GameObject popupPilihan)
{
popupPilihanTerakhir = popupPilihan;
popupIsiTerakhir = popupIsi;
if (popupPilihan != null) popupPilihan.SetActive(false);
if (popupIsi != null) popupIsi.SetActive(true);
}
// Tombol "Keluar Game"
public void KeluarGame()
{
Debug.Log("Keluar dari game...");
Application.Quit();
}
// Tombol "Batal Keluar"
public void BatalKeluar()
{
if (popupKeluar != null)
{
popupKeluar.SetActive(false);
}
}
public bool AdaPopupAktif()
{
foreach (GameObject popup in popupLain)
{
if (popup != null && popup.activeSelf)
return true;
}
return false;
}
}