using System.Collections;
using System.Collections.Generic;
using Unity.PlasticSCM.Editor.WebApi;
using Unity.VisualScripting;
using UnityEditor.SearchService;
using UnityEngine;
using UnityEngine.Audio;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class GameManager : MonoBehaviour
{
    public static GameManager instance;

    void Awake()
    {
        if (instance == null)
        {
            instance = this;
            DontDestroyOnLoad(gameObject);
        }
        else if (instance != null && instance != this)
        {
            Destroy(gameObject);
        }
    }

    void Start()
    {
        setmaster();
        setMusic();
        setSFX();
    }

    public int playerHealth = 100;
    public bool petrolCollected;
    public bool gotGenerator;
    public bool paused = false;
    public AudioClip bang;
    public AudioClip reload1;
    public AudioClip reload2;

    public AudioClip handling;
    public Slider masterSlider;
    public Slider musicSlider;
    public Slider sfxSlider;
    public AudioMixer mixer;
    public GameObject optionsScreeen;
    bool Options;
    public GameObject start;
    public GameObject pauseMenu;
    public GameObject endScreen;

    public void Pause()
    {
        if (!paused)
        {
            pauseMenu.SetActive(true);
            Time.timeScale = 0f;
            Cursor.visible = true;
            Cursor.lockState = CursorLockMode.Confined;
            GameObject.Find("hand position").GetComponentInChildren<Gun>().readyToShot = false;
            paused = true;
        }
        else if (paused)
        {
            pauseMenu.SetActive(false);
            Time.timeScale = 1f;
            Cursor.visible = false;
            Cursor.lockState = CursorLockMode.Locked;
            GameObject.Find("hand position").GetComponentInChildren<Gun>().readyToShot = true;
            paused = false;
        }
    }

    public void Exit()
    {
        Application.Quit();
    }

    public void endGame()
    {
        endScreen.SetActive(true);
    }

    public void Play()
    {
        Time.timeScale = 1f;
        pauseMenu.SetActive(false);
        start.SetActive(false);
    }

    public void options()
    {
        if (Options)
        {
            optionsScreeen.SetActive(false);
            Options = false;
        }
        else if (!Options)
        {
            optionsScreeen.SetActive(true);
            Options = true;
        }
    }

    public void damagePlayer(int damage)
    {
        playerHealth -= damage;
    }

    public void setmaster()
    {
        float volume = masterSlider.value;
        mixer.SetFloat("master", Mathf.Log10(volume) * 20);
    }

    public void setMusic()
    {
        float volume = musicSlider.value;
        mixer.SetFloat("music", Mathf.Log10(volume) * 20);
    }

    public void setSFX()
    {
        float volume = sfxSlider.value;
        mixer.SetFloat("sfx", Mathf.Log10(volume) * 20);
    }
}
