140 lines
3.6 KiB
C#
140 lines
3.6 KiB
C#
|
|
using UnityEngine;
|
|||
|
|
using UnityEngine.UI;
|
|||
|
|
using UnityEngine.SceneManagement;
|
|||
|
|
|
|||
|
|
public class MainMenuController : MonoBehaviour
|
|||
|
|
{
|
|||
|
|
[Header("Buttons")]
|
|||
|
|
[SerializeField] private Button btnPlay;
|
|||
|
|
[SerializeField] private Button btnContinue;
|
|||
|
|
[SerializeField] private Button btnWords;
|
|||
|
|
[SerializeField] private Button btnLeaderboard;
|
|||
|
|
[SerializeField] private Button btnExit;
|
|||
|
|
[SerializeField] private Button btnSettings;
|
|||
|
|
|
|||
|
|
[Header("Audio")]
|
|||
|
|
[SerializeField] private AudioSource musicSource;
|
|||
|
|
[SerializeField] private AudioSource sfxSource;
|
|||
|
|
[SerializeField] private AudioClip clickSound;
|
|||
|
|
[SerializeField] private AudioClip menuMusic;
|
|||
|
|
|
|||
|
|
private bool hasSave = false;
|
|||
|
|
|
|||
|
|
private void Awake()
|
|||
|
|
{
|
|||
|
|
ValidateComponents();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void Start()
|
|||
|
|
{
|
|||
|
|
DetectSaveFile();
|
|||
|
|
ConfigureContinueButton();
|
|||
|
|
PlayMenuMusic();
|
|||
|
|
BindButtonEvents();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ===============================
|
|||
|
|
// BUTTON EVENTS
|
|||
|
|
// ===============================
|
|||
|
|
private void BindButtonEvents()
|
|||
|
|
{
|
|||
|
|
btnPlay.onClick.AddListener(() => { PlayClick(); StartNewGame(); });
|
|||
|
|
btnContinue.onClick.AddListener(() => { PlayClick(); ContinueGame(); });
|
|||
|
|
btnWords.onClick.AddListener(() => { PlayClick(); GoWords(); });
|
|||
|
|
btnLeaderboard.onClick.AddListener(() => { PlayClick(); GoLeaderboard(); });
|
|||
|
|
btnExit.onClick.AddListener(() => { PlayClick(); ExitGame(); });
|
|||
|
|
btnSettings.onClick.AddListener(() => { PlayClick(); OpenSettings(); });
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void StartNewGame()
|
|||
|
|
{
|
|||
|
|
SceneManager.LoadScene("ModeSelect");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void ContinueGame()
|
|||
|
|
{
|
|||
|
|
int lastLevel = PlayerPrefs.GetInt("LastPlayedLevel", 1);
|
|||
|
|
SceneManager.LoadScene("GameScene_Level" + lastLevel);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void GoWords()
|
|||
|
|
{
|
|||
|
|
SceneManager.LoadScene("WordsScene");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void GoLeaderboard()
|
|||
|
|
{
|
|||
|
|
SceneManager.LoadScene("LeaderboardScene");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void OpenSettings()
|
|||
|
|
{
|
|||
|
|
SceneManager.LoadScene("SettingsScene");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void ExitGame()
|
|||
|
|
{
|
|||
|
|
PlayClick(); // click sesi varsa
|
|||
|
|
|
|||
|
|
#if UNITY_EDITOR
|
|||
|
|
UnityEditor.EditorApplication.isPlaying = false;
|
|||
|
|
#elif UNITY_ANDROID
|
|||
|
|
Application.Quit();
|
|||
|
|
System.Diagnostics.Process.GetCurrentProcess().Kill();
|
|||
|
|
#elif UNITY_IOS
|
|||
|
|
Application.Quit();
|
|||
|
|
#else
|
|||
|
|
Application.Quit();
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
// ===============================
|
|||
|
|
// SAVE SYSTEM
|
|||
|
|
// ===============================
|
|||
|
|
private void DetectSaveFile()
|
|||
|
|
{
|
|||
|
|
hasSave = PlayerPrefs.HasKey("LastPlayedLevel");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void ConfigureContinueButton()
|
|||
|
|
{
|
|||
|
|
if (!hasSave)
|
|||
|
|
{
|
|||
|
|
btnContinue.interactable = false;
|
|||
|
|
var text = btnContinue.GetComponentInChildren<Text>();
|
|||
|
|
if (text != null) text.color = new Color(1f, 1f, 1f, 0.4f);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
btnContinue.interactable = true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ===============================
|
|||
|
|
// AUDIO
|
|||
|
|
// ===============================
|
|||
|
|
private void PlayMenuMusic()
|
|||
|
|
{
|
|||
|
|
if (musicSource == null || menuMusic == null)
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
musicSource.clip = menuMusic;
|
|||
|
|
musicSource.loop = true;
|
|||
|
|
|
|||
|
|
if (!musicSource.isPlaying)
|
|||
|
|
musicSource.Play();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void PlayClick()
|
|||
|
|
{
|
|||
|
|
if (sfxSource != null && clickSound != null)
|
|||
|
|
sfxSource.PlayOneShot(clickSound);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void ValidateComponents()
|
|||
|
|
{
|
|||
|
|
if (btnSettings == null)
|
|||
|
|
Debug.LogWarning("Btn_Settings atanmadı!");
|
|||
|
|
}
|
|||
|
|
}
|