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]
Trait trait_brightness;
///
/// 亮度值
///
[Newtonsoft.Json.JsonIgnore]
public int brightness
{
get
{
if (trait_brightness == null)
{
trait_brightness = function.Find((obj) => obj.name == "brightness");
//找不到属性需要声明一个,防止报错闪退
if (trait_brightness == null)
{
trait_brightness = new Trait()
{
name = "brightness",
value_key = new List { "up", "down" },
max = 100,
min = 0,
};
}
trait_brightness.value = trait_brightness.min;
}
return Convert.ToInt32(trait_brightness.value);
}
set
{
try
{
if (trait_brightness == null)
{
trait_brightness = function.Find((obj) => obj.name == "brightness");
//找不到属性需要声明一个,防止报错闪退
if (trait_brightness == null)
{
trait_brightness = new Trait()
{
name = "brightness",
value_key = new List { "up", "down" },
max = 100,
min = 0,
};
}
trait_brightness.value = trait_brightness.min;
}
trait_brightness.value = value;
MainPage.Log($"brightness 数据刷新{value}.");
}
catch
{
MainPage.Log("brightness 数据刷新失败.");
}
}
}
[Newtonsoft.Json.JsonIgnore]
Trait trait_fadeTime;
///
/// 亮度值
///
[Newtonsoft.Json.JsonIgnore]
public int fadeTime
{
get
{
if (trait_fadeTime == null)
{
trait_fadeTime = function.Find((obj) => obj.name == "fade_time");
//找不到属性需要声明一个,防止报错闪退
if (trait_fadeTime == null)
{
trait_fadeTime = new Trait()
{
name = "fade_time",
value_key = new List { "up", "down" },
max = 10,
min = 0,
};
trait_fadeTime.value = 0;
function.Add(trait_fadeTime);
}
}
return Convert.ToInt32(trait_fadeTime.value);
}
set
{
try
{
if (trait_fadeTime == null)
{
trait_fadeTime = function.Find((obj) => obj.name == "fade_time");
//找不到属性需要声明一个,防止报错闪退
if (trait_fadeTime == null)
{
trait_fadeTime = new Trait()
{
name = "fade_time",
value_key = new List { "up", "down" },
max = 100,
min = 0,
};
trait_fadeTime.value = 0;
function.Add(trait_fadeTime);
}
}
trait_fadeTime.value = value;
}
catch
{
}
}
}
[Newtonsoft.Json.JsonIgnore]
public Trait trait_color;
///
/// RGB颜色
/// 255255255
///
[Newtonsoft.Json.JsonIgnore]
public int color
{
get
{
if (trait_color == null)
{
trait_color = function.Find((obj) => obj.name == "color");
//找不到属性需要声明一个,防止报错闪退
if (trait_color == null)
{
trait_color = new Trait()
{
name = "color",
value_key = new List { "FFFFFF" },
max = 0xFFFFFF,
min = 0x000000,
};
}
trait_color.value = trait_color.min;
}
return Convert.ToInt32(trait_color.value);
}
set
{
try
{
trait_color.value = value;
}
catch
{
MainPage.Log("color 数据刷新失败.");
}
}
}
[Newtonsoft.Json.JsonIgnore]
public int redColor
{
get {
try
{
return color >> 16;
}
catch (Exception ex)
{
MainPage.Log($"Get red color error : {ex.Message}");
return 0;
}
}
set
{
try
{
var rc = value << 16;
color = rc + (color & 0xFFFF);
}
catch (Exception ex)
{
MainPage.Log($"set red color error : {ex.Message}");
}
}
}
[Newtonsoft.Json.JsonIgnore]
public int greenColor
{
get
{
try
{
return (color & 0xFFFF) >> 8;
}
catch (Exception ex)
{
MainPage.Log($"Get green color error : {ex.Message}");
return 0;
}
}
set
{
try
{
var gc = value << 8;
color = gc + (color & 0xFF00FF);
}
catch (Exception ex)
{
MainPage.Log($"set green color error : {ex.Message}");
}
}
}
[Newtonsoft.Json.JsonIgnore]
public int blueColor
{
get
{
try
{
return color & 0xFF;
}
catch (Exception ex)
{
MainPage.Log($"Get blue color error : {ex.Message}");
return 0;
}
}
set
{
try
{
color = value + (color & 0xFFFF00);
}
catch (Exception ex)
{
MainPage.Log($"set blue color error : {ex.Message}");
}
}
}
}
}