using UnityEngine;
using UnityEngine.UI;
using UniRx;

public class CreationPanel : UIView 
{
    public Text TitleText;
    public Toggle CreateToggle;
    public Button SaveButton;
    public Button ClearButton;

    public override void Awake()
    {
        base.Awake();
        //创建
        CreateToggle.OnValueChangedAsObservable()
            .Subscribe(value => CloneObject(value)).AddTo(gameObject);

        ClearButton.OnClickAsObservable()
            .Subscribe(_ => EquipmentManager.Instance.OnCleraButtonClicked());

        SaveButton.OnClickAsObservable()
            .Subscribe(_ => EquipmentManager.Instance.SaveData());

        transform.Find("TitleBar/CloseButton").GetComponent<Button>().OnClickAsObservable()
            .Subscribe(_ => Hide());

        Observable.EveryLateUpdate()
           .Where(_ => Input.GetMouseButtonDown(1))
           .Subscribe(_ => CreateToggle.isOn = false);
    }


    public override void Show()
    {
        base.Show();
        switch (EquipmentManager.Instance.CreationType)
        {
            case EquipmentType.NoParking:
                TitleText.text = "禁停区";
                break;
            case EquipmentType.KeyArea:
                TitleText.text = "重点区域";
                break;
            case EquipmentType.ImageMarked:
                TitleText.text = "图片标注";
                break;
            case EquipmentType.FireClimbingSite:
                TitleText.text = "登高作业面";
                break;
            case EquipmentType.HazardSource:
                TitleText.text = "危险源";
                break;
            case EquipmentType.ForcedDraftFan:
                TitleText.text = "送风机";
                break;
            case EquipmentType.AirVent:
                TitleText.text = "送风口";
                break;
            case EquipmentType.SmokeExtractionFan:
                TitleText.text = "排烟风机";
                break;
            case EquipmentType.SmokeVent:
                TitleText.text = "排烟口";
                break;
            case EquipmentType.EscapeWin:
                TitleText.text = "逃生窗";
                break;
            case EquipmentType.BreakPoint:
                TitleText.text = "破拆点";
                break;
          
        }
    }

    public override void Hide()
    {
        base.Hide();
        CreateToggle.isOn = false;
    }

    private void CloneObject(bool isOn)
    {
        switch (EquipmentManager.Instance.CreationType)
        {
            case EquipmentType.NoParking:
                EquipmentManager.Instance.Clone("NoParking", isOn, 0.01f);
                break;
            case EquipmentType.KeyArea:
                EquipmentManager.Instance.Clone("KeyArea", isOn, 0);
                break;
            case EquipmentType.ImageMarked:
                EquipmentManager.Instance.Clone("ImageMarked", isOn, 0);
                break;
            case EquipmentType.FireClimbingSite:
                EquipmentManager.Instance.Clone( "FireClimbingSurface", isOn, 0.01f);
                break;
            case EquipmentType.HazardSource:
                EquipmentManager.Instance.Clone( "HazardSource", isOn, 0);
                break;
            case EquipmentType.ForcedDraftFan:
                EquipmentManager.Instance.Clone("ForcedDraftFan", isOn, 0);
                break;
            case EquipmentType.AirVent:
                EquipmentManager.Instance.Clone("AirVent", isOn, 0);
                break;
            case EquipmentType.SmokeExtractionFan:
                EquipmentManager.Instance.Clone("SmokeExtractionFan", isOn, 0);
                break;
            case EquipmentType.SmokeVent:
                EquipmentManager.Instance.Clone( "SmokeVent", isOn, 5);
                break;
            case EquipmentType.EscapeWin:
                EquipmentManager.Instance.Clone("EscapeWindow", isOn, 0);
                break;
            case EquipmentType.BreakPoint:
                EquipmentManager.Instance.Clone("BreakPoint", isOn, 0);
                break;
          
        }
    }
}