using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics.Contracts;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using static UnityEditor.PlayerSettings;

public class Submit : MonoBehaviour
{
    /// <summary>
    /// 练习模式图片
    /// </summary>
    private Sprite practicesprite;
    /// <summary>
    /// 考核模式图片
    /// </summary>
    private Sprite examinesprite;
    /// <summary>
    /// 考核练习图片
    /// </summary>
    public Image practicemode;
    /// <summary>
    /// 提交按钮
    /// </summary>
    public Button submitbutton;
    /// <summary>
    /// 交卷按钮
    /// </summary>
    public Button onvolumebutton;
    /// <summary>
    /// 练习的分页面
    /// </summary>
    public GameObject practicepanl;
    /// <summary>
    /// 考试分数
    /// </summary>
    public Text marktext;
    /// <summary>
    /// 返回按钮
    /// </summary>
    public Button backbutton;
    /// <summary>
    /// 考核面板
    /// </summary>
    public GameObject examinepanl;
    /// <summary>
    /// 技能冷却时间
    /// </summary>
    public float examinetimer = 10f;
    /// <summary>
    /// 技能冷却时间
    /// </summary>
    public float skilltimer = 0f;
    /// <summary>
    /// 技能冷却图片
    /// </summary>
    public Image coolingimage;
    /// <summary>
    /// 技能冷却开关
    /// </summary>
    private bool isCooldown = false;
    /// <summary>
    /// 系统提示
    /// </summary>
    public Text warntext;
    /// <summary>
    /// 体统提示时间
    /// </summary>
    public float timer = 10f;
    /// <summary>
    /// 倒计时
    /// </summary>
    public Text timetext;
    /// <summary>
    /// 提示是否交卷页面
    /// </summary>
    public GameObject submissionpromptpanl;
    /// <summary>
    /// 确定按钮
    /// </summary>
    public Button submitbutton2;
    /// <summary>
    /// 取消按钮
    /// </summary>
    public Button cancelbutton2;
    /// <summary>
    /// 三个菜单按钮
    /// </summary>
    public Toggle  electricitychargeaccounting, powersupplycontract, contract;
    /// <summary>
    /// 初始化用户名
    /// </summary>
    public Text nametext;
    /// <summary>
    /// 初始化时间
    /// </summary>
    public Text loginname;
    /// <summary>
    /// 覆约合同预设体
    /// </summary>
    public GameObject retreatyobj;
    /// <summary>
    /// 覆约电费供电页面练习预制体生成位置
    /// </summary>
    public RectTransform retreatypanl;
    public RectTransform powersupplypanl;
    public RectTransform electricchargepanl;
    /// <summary>
    /// 接收覆约合同的预设体
    /// </summary>
    public GameObject retreatpreform;
    /// <summary>
    /// 初始化每个考试toggle显示按钮
    /// </summary>
    public Vector3 pos;
    private void Awake()
    {
        Initialize();//初始化
        switch (ScoreManager.Instance.Examinationpaper)
        {
            case Examinationpaper.practice:
                Practicesubject();//练习页面
                break;
            case Examinationpaper.Reviewexamination:
                Reviewpaper();//覆约页面
                break;
            case Examinationpaper.Powersupplytest:
                Powersupplytestpaper();//供电页面
                break;
            case Examinationpaper.Electricityfeetest:
                Electricityexaminationpaper();//电费页面
                break;
            default:
                break;
        }
    }

    private void Initialize()
    {
        pos = contract.transform.position;
        loginname.text = PlayerPrefs.GetString("time");
        nametext.text = PlayerPrefs.GetString("Name");
        Debug.LogError(ScoreManager.Instance.Examinationpaper);
        practicesprite = Resources.Load<Sprite>("UIpanel/练习模式");
        examinesprite = Resources.Load<Sprite>("UIpanel/考试模式");
        retreatyobj = Resources.Load<GameObject>("UIpanel/practice1");
    }

    void Start()
    {
        submitbutton.onClick.AddListener(() =>
        {
            retreatpreform = GameObject.Find("practice1(Clone)");
            retreatpreform.SetActive(false);
            practicemode.gameObject.SetActive(false);
            marktext.text = ScoreManager.Instance.Score.ToString();
            practicepanl.SetActive(true);
        });
        backbutton.onClick.AddListener(() =>
        {
            Destroy(retreatpreform);
            Instantiate(retreatyobj, retreatypanl);
            practicepanl.SetActive(false);
            practicemode.gameObject.SetActive(true);
            ScoreManager.Instance.SubtractScore(100);

        });
        onvolumebutton.onClick.AddListener(() =>
        {
            submissionpromptpanl.SetActive(true);
        });
        cancelbutton2.onClick.AddListener(() =>
        {
            submissionpromptpanl.SetActive(false);
        });
        submitbutton2.onClick.AddListener(() =>
        {
            retreatpreform = GameObject.Find("practice1(Clone)");
            retreatpreform.SetActive(false);
            practicemode.gameObject.SetActive(false);
            submissionpromptpanl.SetActive(false);
            practicemode.gameObject.SetActive(false);
            onvolumebutton.gameObject.SetActive(false);
            isCooldown = true;
            examinepanl.SetActive(true);
        });
    }
    /// <summary>
    /// 覆约合同考试页面初始化
    /// </summary>
    public void Reviewpaper()
    {
        contract.isOn = true;
        practicemode.sprite = examinesprite;
        contract.gameObject.SetActive(true);
        electricitychargeaccounting.gameObject.SetActive(false);
        powersupplycontract.gameObject.SetActive(false);
        onvolumebutton.gameObject.SetActive(true);
        retreatypanl.gameObject.SetActive(true);
        powersupplypanl.gameObject.SetActive(false);
        electricchargepanl.gameObject.SetActive(false);
        Instantiate(retreatyobj, retreatypanl);
    }
    /// <summary>
    /// 所有练习科目页面初始化
    /// </summary>
    public void Practicesubject()
    {
        contract.isOn = true;
        practicemode.sprite = practicesprite;
        submitbutton.gameObject.SetActive(true);
        retreatypanl.gameObject.SetActive(true);
        powersupplypanl.gameObject.SetActive(false);
        electricchargepanl.gameObject.SetActive(false);
        Instantiate(retreatyobj, retreatypanl);
    }
    /// <summary>
    /// 供电考试页面初始化
    /// </summary>
    public void Powersupplytestpaper()
    {
        powersupplycontract.transform.position = pos;
        powersupplycontract.isOn = true;
        practicemode.sprite = examinesprite;
        contract.gameObject.SetActive(false);
        electricitychargeaccounting.gameObject.SetActive(false);
        powersupplycontract.gameObject.SetActive(true);
        retreatypanl.gameObject.SetActive(false);
        powersupplypanl.gameObject.SetActive(true);
        electricchargepanl.gameObject.SetActive(false);
    }
    /// <summary>
    /// 电费核算考试页面初始化
    /// </summary>
    public void Electricityexaminationpaper()
    {
        electricitychargeaccounting.transform.position = pos;
        electricitychargeaccounting.isOn = true;
        practicemode.sprite = examinesprite;
        contract.gameObject.SetActive(false);
        electricitychargeaccounting.gameObject.SetActive(true);
        powersupplycontract.gameObject.SetActive(false);
        retreatypanl.gameObject.SetActive(false);
        powersupplypanl.gameObject.SetActive(false);
        electricchargepanl.gameObject.SetActive(true);
    }
    void Update()
    {
        //十秒后自动退出程序
        if (isCooldown)
        {
            coolingimage.fillAmount = 1 - (skilltimer / examinetimer);
            skilltimer += Time.deltaTime;
            timer -= Time.deltaTime;
            warntext.text = timer.ToString("0") + "秒后自动退出系统";
            timetext.text = timer.ToString("0");
            if (coolingimage.fillAmount == 0)
            {
                // 退出应用程序
#if UNITY_EDITOR
                UnityEditor.EditorApplication.isPlaying = false;
#else
            Application.Quit();
#endif
            }
        }
    }
}