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

/// <summary>
/// Script to reset player stuf like
/// - missions list
/// - items
/// - equipment
/// - health
/// - exp
/// </summary>
public class ResetPlayer : MonoBehaviour
{
    public bool isAfterReset = false;

    void Update()
    {
        if (!isAfterReset)
            ResetPlayerData();
    }

    void ResetPlayerData()
    {
        if (
            EquipmentDataManager.Instance == null ||
            SceneInventoryDataManager.Instance == null ||
            SceneTaskDataManager.Instance == null
        ) return;

        if (PlayerPrefs.GetString("gateway.sourceMapName") == "SampleScene")
        {
            isAfterReset = true;

            // Clear panels data
            EquipmentDataManager.Instance.ClearListOfElements();
            SceneInventoryDataManager.Instance.ClearListOfElements();
            SceneTaskDataManager.Instance.ClearListOfElements();

            // Clear Account balance
            AccountBalanceManager.Instance.SetAccountBalanceValue(0);

            var saveController = GameObject.FindObjectOfType<SaveController>();

            saveController.SavePlayerEquipmentItems();
            saveController.SavePlayerInventory();
            saveController.SavePlayerQuests();
            saveController.SaveAccountBalance();

            // Player reset lvl, exp & health
            var playerAgent = GameObject.FindGameObjectWithTag("Player");

            playerAgent.GetComponent<Player>().currentHealth = PlayerPrefs.GetFloat("maxHealth");
            PlayerPrefs.SetFloat("health-S", PlayerPrefs.GetFloat("maxHealth"));
            PlayerPrefs.SetFloat("health", PlayerPrefs.GetFloat("maxHealth"));

/*          
            playerAgent.GetComponent<Player>().exp = 0;
            PlayerPrefs.SetFloat("exp-S", 0);

            playerAgent.GetComponent<Player>().lvl = 1;
            PlayerPrefs.SetInt("lvl-S", 1);
*/

            playerAgent.GetComponent<Player>().SaveCheckpoint();
        }
    }
}