using System;
using System.Drawing;
using System.Reflection;
using System.Windows.Forms;

namespace Mesnac.Controls.ChemicalWeighing
{
    /// <summary>
    /// 自定义3阀门
    /// </summary>
    public partial class ThreeWayValve : ChemicalWeighingControl
    {
        public ThreeWayValve()
        {
            InitializeComponent();
            InitControl();
        }

        private string[] sImages = new String[7];
        private bool _zltValue;
        private bool _zldValue;
        private bool _almtValue;
        private bool _almdValue;

        /// <summary>
        /// 杨威
        /// 20230629
        /// 初始化控件
        /// </summary>
        private void InitControl()
        {
            _assembly = Assembly.GetExecutingAssembly();

            //默认程序
            sImages[0] = "Mesnac.Controls.ChemicalWeighing.Resources.ThreeWayValve0.png";
            //直通
            sImages[1] = "Mesnac.Controls.ChemicalWeighing.Resources.ThreeWayValve1.png";
            //斜通
            sImages[2] = "Mesnac.Controls.ChemicalWeighing.Resources.ThreeWayValve2.png";
            //直通报警通知
            sImages[3] = "Mesnac.Controls.ChemicalWeighing.Resources.ThreeWayValveHError.png";
            //斜通报警通知
            sImages[4] = "Mesnac.Controls.ChemicalWeighing.Resources.ThreeWayValveVError.png";
            //都报警
            sImages[5] = "Mesnac.Controls.ChemicalWeighing.Resources.ThreeWayValveHVError.png";
            
            sImages[6] = "Mesnac.Controls.ChemicalWeighing.Resources.ThreeWayValveAll.png";
            

        }
        
        
        
        private void ReloadStream()
        {
            int defaultIndex = 0;
            //如果出现报警 就去判断是直还是斜
            
           

            //直报警 斜报警 
            if (_almtValue && _almdValue)
            {
                defaultIndex = 5;
            }
            else
            {
                //如果直的报警
                if (_almdValue)
                {
                    defaultIndex = 3;
                }
                
                //如果斜的报警
                if (_almtValue)
                {
                    defaultIndex = 4;
                }
                
            }

            //如果不是故障
            if (_almtValue == false && _almdValue == false)
            {


                if (_zltValue && _zldValue)
                {
                    defaultIndex = 2;
                }
                
                if (_zltValue == false && _zldValue)
                {
                    defaultIndex = 1;
                }
                
                
                //如果都是假 就变成默认值 可能没有数据
                if (_zltValue == false && _zldValue == false)
                {
                    defaultIndex = 0;
                }

                //如果都是真 就是双通
                if (_zltValue && _zldValue)
                {
                    defaultIndex = 6;
                }
                
                
            }
            
            
            _imageStream = _assembly.GetManifestResourceStream(sImages[defaultIndex]);
            
        }
        
        private void Reload()
        {
            if ( _imageStream != null )
            {
                Image img = Image.FromStream( _imageStream);
                pictureBox1.Image = img;
                pictureBox1.Refresh();
            }
        }

        private void R()
        {
            ReloadStream();
            Reload();
        }


        /// <summary>
        /// 斜通到位存储Plc的Name
        /// </summary>
        public string ZLTName { get; set; }

        /// <summary>
        /// 斜通到位数据
        /// </summary>
        public bool ZLTValue
        {
            get => _zltValue;
            set
            {
                _zltValue = value;
                R();
            }
        }

        /// <summary>
        /// 直通到位Plc的Name
        /// </summary>
        public string ZLDName { get; set; }

        /// <summary>
        /// 直通到位Plc的Value
        /// </summary>
        public bool ZLDValue
        {
            get => _zldValue;
            set
            {
                _zldValue = value;
                R();
            }
        }

        /// <summary>
        /// 协通报警
        /// </summary>
        public string ALMTName { get; set;}

        /// <summary>
        /// 协通报警Value
        /// </summary>
        public bool ALMTValue
        {
            get => _almtValue;
            set
            {
                _almtValue = value;
                R();
            }
        }

        /// <summary>
        /// 直通报警
        /// </summary>
        public string ALMDName { get; set; }

        /// <summary>
        /// 直通报警Value
        /// </summary>
        public bool ALMDValue
        {
            get => _almdValue;
            set
            {
                _almdValue = value;
                R();
            }
        }
    }
}