using UnityEngine;
using UnityEngine.UI;
using UniRx;
using AX.MessageSystem;

public class SituationPlottingMenuPanel : UIView 
{
    public Toggle DisasterToggle;
    public Toggle FireForcesToggle;
    public Toggle LinkageForcesToggle;
    public Toggle InteriorForcesToggle;
    public Toggle PlottingToolsToggle;

    public Toggle SourceToggle;
    public Toggle CalculatorButton;
    public Toggle PlanToggle;
    public Button EditorButton;
    public Toggle HideNameToggle;
    public Button ClearButton;

    public override void Awake()
    {
        base.Awake();
        //灾情设定
        DisasterToggle.OnValueChangedAsObservable()
            .Subscribe(value => 
            {
                if (value)
                {
                    PowerManager.Instance.powerButtonType = PowerButtonType.灾情设定;
                    UIManager.Instance.Show<PowerDockPanel>();
                }
                else
                {
                    UIManager.Instance.Hide<PowerDockPanel>();
                }
            });
        //消防力量
        FireForcesToggle.OnValueChangedAsObservable()
           .Subscribe(value =>
           {
               if (value)
               {
                   PowerManager.Instance.powerButtonType = PowerButtonType.消防力量;
                   UIManager.Instance.Show<PowerDockPanel>();
               }
               else
               {
                   UIManager.Instance.Hide<PowerDockPanel>();
               }
           });
        //联动力量
        LinkageForcesToggle.OnValueChangedAsObservable()
           .Subscribe(value =>
           {
               if (value)
               {
                   PowerManager.Instance.powerButtonType = PowerButtonType.联动力量;
                   UIManager.Instance.Show<PowerDockPanel>();
               }
               else
               {
                   UIManager.Instance.Hide<PowerDockPanel>();
               }
           });
        //内部力量
        InteriorForcesToggle.OnValueChangedAsObservable()
           .Subscribe(value =>
           {
               if (value)
               {
                   PowerManager.Instance.powerButtonType = PowerButtonType.内部力量;
                   UIManager.Instance.Show<PowerDockPanel>();
               }
               else
               {
                   UIManager.Instance.Hide<PowerDockPanel>();
               }
           });
        //标绘工具
        PlottingToolsToggle.OnValueChangedAsObservable()
           .Subscribe(value =>
           {
               if (value)
               {
                   PowerManager.Instance.powerButtonType = PowerButtonType.标绘工具;
                   UIManager.Instance.Show<PowerDockPanel>();
               }
               else
               {
                   UIManager.Instance.Hide<PowerDockPanel>();
               }
           });
        SourceToggle.OnValueChangedAsObservable()
            .Subscribe(value => 
            {
                MessageDispatcher.SendMessage("ICON", value, "OutdoorHydrant");
                MessageDispatcher.SendMessage("ICON", value, "SiameseConnection");
            });
        CalculatorButton.OnValueChangedAsObservable()
            .Subscribe(value => 
            {
                if (value)
                    UIManager.Instance.Show<WaterConsumptionPanel>();
                else
                    UIManager.Instance.Hide<WaterConsumptionPanel>();
            } );
        //处置方案
        PlanToggle.OnValueChangedAsObservable()
            .Subscribe(value =>
            {
                if (value)
                    UIManager.Instance.Show<DisposalPlanPanel>();
                else
                    UIManager.Instance.Hide<DisposalPlanPanel>();
            });
        //隐藏名称
        HideNameToggle.OnValueChangedAsObservable()
            .Subscribe(value =>
            {
                PowerManager.Instance.isHideName = value;
                if (SelectionManager.Instance.Sets.Count > 0)
                {
                    MessageDispatcher.SendMessage("HIDENAME", value);
                }

            });
        //批量编辑
        EditorButton.GetComponent<Button>().OnClickAsObservable()
            .Subscribe(_ =>
            {
                var list = SelectionManager.GetSelectedObjects();
                if (list.Count > 0)
                {
                    PowerManager.Instance.taskType = TaskType.none;
                    UIManager.Instance.Show<PowerAttributePanel>();
                }
                else
                {
                    MessageBox.Show("至少选择一个力量!", Color.white);
                }

            });
        //清空
        ClearButton.OnClickAsObservable()
            .Subscribe(_ => MessageBox.Show("确认清空?", Color.white, PowerManager.Instance.ClearAll));
    }
    public override void Hide()
    {
        base.Hide();
        DisasterToggle.isOn = false;
        FireForcesToggle.isOn = false;
        LinkageForcesToggle.isOn = false;
        InteriorForcesToggle.isOn = false;
        PlottingToolsToggle.isOn = false;
        SourceToggle.isOn = false;
        CalculatorButton.isOn = false;
        PlanToggle.isOn = false;
    }
}