using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

/*
 * IMPOSRTANT
 * All methods must be binded in buttons actions list responsible for saving
 */
public class SaveController : MonoBehaviour
{
    public void SaveScene()
    {
        string activeScene = SceneManager.GetActiveScene().name;
        PlayerPrefs.SetString("SceneSaved", activeScene);
    }

    /// <summary>
    /// Used only in 'MainMenu' scene in 'Contine' button
    /// </summary>
    public void LoadScene()
    {
        string sceneToGoTo = PlayerPrefs.GetString("SceneSaved");
        SceneManager.LoadScene(sceneToGoTo);
    }
    
    public void SaveHealth()
    {
        var player = GameObject.FindGameObjectWithTag("Player");
        player.GetComponent<Player>().SaveCheckpoint();
        
    }

    public void SaveAccountBalance()
    {
        if (AccountBalanceManager.Instance)
            AccountBalanceManager.Instance.SaveValue();
    }

    #region palyer panels data
    public void SavePlayerEquipmentItems()     // toDO change name to save Equipment - save items will save items on map eg after drops
    {
        EquipmentDataManager.Instance.SaveDynamicData();
    }

    public void SavePlayerQuests()
    {
        SceneTaskDataManager.Instance.SaveDynamicData();
        TaskUIManager.Instance.keyToOpen = (KeyCode) System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("Quests"));
        // right now, we dont need to save dynamic list :D
    }
    
    public void SavePlayerInventory()
    {
        SceneInventoryDataManager.Instance.SaveDynamicData();
    }
    #endregion

    public void SaveChests()
    {
        // there may be mapos where we dont have this elements because we dont want to have there any chests - simple
        // eg Cave Entrance
        if(SceneChestDataManager.Instance)
            SceneChestDataManager.Instance.SaveDynamicData();
    }

    public void SaveShops()
    {
        if(SceneShopDataManager.Instance)
            SceneShopDataManager.Instance.SaveDynamicData();
    }

    public void SaveDialogues()
    {
        if (MultiDialogueDataManager.Instance)
            MultiDialogueDataManager.Instance.SaveDynamicData();
    }

    public void SaveMissions()
    {
        if (MissionDataManager.Instance ) //&& MissionConditionDataManager.Instance
        {
            MissionDataManager.Instance.SaveDynamicData();
            MissionConditionDataManager.Instance.SaveDynamicData();
        }
    }

    public void SaveItemsOnMap()
    {
        if (SceneEquippableItemManager.Instance) //&& MissionConditionDataManager.Instance
        {
            SceneEquippableItemManager.Instance.SaveEquippableItems();
        }
    }
}