using System;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
namespace HDL_ON.Entity
{
public class Light : Function
{
/*
灯光类: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;
///
/// 亮度值
///
[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 { "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 { "up", "down" },
max = 100,
min = 0,
curValue = 0
};
}
}
trait_brightness.curValue = value;
}
catch
{
MainPage.Log("brightness 数据刷新失败.");
}
}
}
///
/// 上一次打开的亮度
///
[Newtonsoft.Json.JsonIgnore]
public int lastBrightness = 100;
[Newtonsoft.Json.JsonIgnore]
FunctionAttributes trait_fadeTime;
///
/// 亮度值
///
[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 { "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 { "up", "down" },
max = 100,
min = 0,
curValue = 0
};
}
}
trait_fadeTime.curValue = value;
}
catch
{
}
}
}
///
/// 获取rgb颜色
///
///
public int GetRGBcolor()
{
if (trait_color == null)
{
trait_color = attributes.Find((obj) => obj.key == FunctionAttributeKey.RGB);
//找不到属性需要声明一个,防止报错闪退
if (trait_color == null)
{
trait_color = new FunctionAttributes()
{
key = "color",
value = new List { "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);
}
int recolor = redColor * 256 * 256 + greenColor * 256 + blueColor;
return recolor;
}
///
/// 获取rgb 控制字符串
///
///
public string GetRGBcolorString()
{
return redColor + "," + greenColor + "," + blueColor;
}
///
/// 设置rgb颜色
///
public void SetRGBcolor(byte[] color)
{
redColor = color[0];
greenColor = color[1];
blueColor = color[2];
}
[Newtonsoft.Json.JsonIgnore]
public FunctionAttributes trait_color;
int redColor = 255;
int greenColor = 255;
int blueColor = 255;
public int RedColor {
get
{
return redColor;
}
}
public int GreenColor {
get
{
return greenColor;
}
}
public int BlueColor
{
get
{
return blueColor;
}
}
}
}