wxr
2021-07-01 43b0d5870d528f23ecd6aeceb6cfd4325188b46f
HDL_ON/Entity/Function/Light.cs
old mode 100755 new mode 100644
@@ -4,167 +4,28 @@
namespace HDL_ON.Entity
{
    public class Light : Function
    public class Light
    {
        /*
        灯光类:trait: [switch,brightness,color,cct,delay,fadeTime]
        属性   描述
        switch   on/off;
        brightness   0-100;
        color   int (red (0-255) green (0-255) blue (0-255))
        cct   int (warm light(0-255) cold light (0-255) )
        delay   0-3600s
        fadetime   0-3600s
        */
        public Light()
        {
        }
        [Newtonsoft.Json.JsonIgnore]
        FunctionAttributes trait_brightness;
        /// <summary>
        /// 亮度值
        /// </summary>
        [Newtonsoft.Json.JsonIgnore]
        public int brightness
        {
            get
            {
                if (trait_brightness == null)
                {
                    trait_brightness = attributes.Find((obj) => obj.key == "brightness");
                    //找不到属性需要声明一个,防止报错闪退
                    if (trait_brightness == null)
                    {
                        trait_brightness = new FunctionAttributes()
                        {
                            key = "brightness",
                            value = new List<string> { "up", "down" },
                            max = 100,
                            min = 0,
                            curValue = 0,
                        };
                    }
                    if (trait_brightness.curValue.ToString() == "{}")
                        trait_brightness.curValue = 0;
                }
                return Convert.ToInt32(trait_brightness.curValue);
            }
            set
            {
                try
                {
                    if (trait_brightness == null)
                    {
                        trait_brightness = attributes.Find((obj) => obj.key == "brightness");
                        //找不到属性需要声明一个,防止报错闪退
                        if (trait_brightness == null)
                        {
                            trait_brightness = new FunctionAttributes()
                            {
                                key = "brightness",
                                value = new List<string> { "up", "down" },
                                max = 100,
                                min = 0,
                                curValue = 0
                            };
                        }
                    }
                    trait_brightness.curValue = value;
                }
                catch
                {
                    MainPage.Log("brightness 数据刷新失败.");
                }
            }
        }
        /// <summary>
        /// 上一次打开的亮度
        /// </summary>
        [Newtonsoft.Json.JsonIgnore]
        public int lastBrightness = 100;
        [Newtonsoft.Json.JsonIgnore]
        FunctionAttributes trait_fadeTime;
        /// <summary>
        /// 亮度值
        /// </summary>
        [Newtonsoft.Json.JsonIgnore]
        public int fadeTime
        {
            get
            {
                if (trait_fadeTime == null)
                {
                    trait_fadeTime = attributes.Find((obj) => obj.key == FunctionAttributeKey.FadeTime);
                    //找不到属性需要声明一个,防止报错闪退
                    if (trait_fadeTime == null)
                    {
                        trait_fadeTime = new FunctionAttributes()
                        {
                            key = FunctionAttributeKey.FadeTime,
                            value = new List<string> { "up", "down" },
                            max = 10,
                            min = 0,
                            curValue = 0
                        };
                    }
                }
                int result = 0;
                int.TryParse(trait_fadeTime.curValue.ToString(), out result);
                return result;
            }
            set
            {
                try
                {
                    if (trait_fadeTime == null)
                    {
                        trait_fadeTime = attributes.Find((obj) => obj.key == FunctionAttributeKey.FadeTime);
                        //找不到属性需要声明一个,防止报错闪退
                        if (trait_fadeTime == null)
                        {
                            trait_fadeTime = new FunctionAttributes()
                            {
                                key = FunctionAttributeKey.FadeTime,
                                value = new List<string> { "up", "down" },
                                max = 100,
                                min = 0,
                                curValue = 0
                            };
                        }
                    }
                    trait_fadeTime.curValue = value;
                }
                catch
                {
                }
            }
        }
        #region RGB
        /// <summary>
        /// 获取rgb颜色
        /// </summary>
        /// <returns></returns>
        public int GetRGBcolor()
        public int GetRGBcolor(Function function )
        {
            if (trait_color == null)
            var color = function.GetAttrState(FunctionAttributeKey.RGB).Split(",");
            if(color.Length!= 3)
            {
                trait_color = attributes.Find((obj) => obj.key == FunctionAttributeKey.RGB);
                //找不到属性需要声明一个,防止报错闪退
                if (trait_color == null)
                {
                    trait_color = new FunctionAttributes()
                    {
                        key = "color",
                        value = new List<string> { "255,255,255" },
                        curValue = "255,255,255"
                    };
                }
                if (trait_color.curValue.ToString() == "{}")
                    trait_color.curValue = "255,255,255";
                int.TryParse(trait_color.curValue.ToString().Split(",")[0], out redColor);
                int.TryParse(trait_color.curValue.ToString().Split(",")[1], out greenColor);
                int.TryParse(trait_color.curValue.ToString().Split(",")[2], out blueColor);
                color = new string[] {"100", "100", "100" };
            }
            int redColor = 0;
            int greenColor = 0;
            int blueColor = 0;
            int.TryParse(color[0], out redColor);
            int.TryParse(color[1], out greenColor);
            int.TryParse(color[2], out blueColor);
            int recolor = redColor * 256 * 256 + greenColor * 256 + blueColor;
@@ -174,45 +35,40 @@
        /// 获取rgb 控制字符串
        /// </summary>
        /// <returns></returns>
        public string GetRGBcolorString()
        public string GetRGBcolorString(Function function)
        {
            return redColor + "," + greenColor + "," + blueColor;
            var color = function.GetAttrState(FunctionAttributeKey.RGB).Split(",");
            return color[0] + "," + color[1] + "," + color[2];
        }
        /// <summary>
        /// 获取rgb颜色
        /// </summary>
        /// <param name="index">0:red 1:green 2:blue</param>
        /// <returns></returns>
        public int GetColor( int index,Function function)
        {
            int color = 0;
            if (index <= 2)
            {
                try
                {
                    int.TryParse(function.GetAttrState(FunctionAttributeKey.RGB).Split(",")[index], out color);
                }
                catch { }
            }
            return color;
        }
        /// <summary>
        /// 设置rgb颜色
        /// </summary>
        public void SetRGBcolor(byte[] color)
        public void SetRGBcolor(byte[] color,Function function)
        {
            redColor = color[0];
            greenColor = color[1];
            blueColor = color[2];
            function.SetAttrState(FunctionAttributeKey.RGB, color[0] + "," + color[1] + "," + color[2]);
        }
        [Newtonsoft.Json.JsonIgnore]
        public FunctionAttributes trait_color;
        int redColor = 255;
        int greenColor = 255;
        int blueColor = 255;
        #endregion
        public int RedColor {
            get
            {
                return redColor;
            }
        }
        public int GreenColor {
            get
            {
                return greenColor;
            }
        }
        public int BlueColor
        {
            get
            {
                return blueColor;
            }
        }
    }
}