using CommunityToolkit.Mvvm.ComponentModel;
using System;
namespace BetterGenshinImpact.GameTask.SkillCd;
///
/// 技能 CD 提示配置
///
[Serializable]
public partial class SkillCdConfig : ObservableObject
{
///
/// 是否启用
///
[ObservableProperty]
private bool _enabled = false;
///
/// 特定角色CD修正配置列表
///
[ObservableProperty]
private System.Collections.Generic.List _customCdList = new();
///
/// 使用战技时触发(E键)
///
[ObservableProperty]
private bool _triggerOnSkillUse = false;
///
/// 冷却为0时隐藏
///
[ObservableProperty]
private bool _hideWhenZero = false;
///
/// 横坐标
///
[ObservableProperty]
private double _pX = 1520.0;
partial void OnPXChanged(double value)
{
if (value < 0.0) PX = 0.0;
else if (value > 1920.0) PX = 1920.0;
}
///
/// 纵坐标
///
[ObservableProperty]
private double _pY = 245.0;
partial void OnPYChanged(double value)
{
if (value < 0.0) PY = 0.0;
else if (value > 1080.0) PY = 1080.0;
}
///
/// 计时器间隔
///
[ObservableProperty]
private double _gap = 91.2;
partial void OnGapChanged(double value)
{
if (value < 0.0) Gap = 0.0;
else if (value > 200.0) Gap = 200.0;
}
///
/// 计时器缩放
///
[ObservableProperty]
private double _scale = 1.0;
partial void OnScaleChanged(double value)
{
if (value < 0.0) Scale = 0.0;
else if (value > 10.0) Scale = 10.0;
}
///
/// CD大于0.8s时计时器背景色(默认白色 #FFFFFFFF)
///
[ObservableProperty]
private string _backgroundNormalColor = "#FFFFFFFF";
partial void OnBackgroundNormalColorChanged(string value)
{
if (string.IsNullOrWhiteSpace(value))
{
BackgroundNormalColor = "#FFFFFFFF";
}
}
///
/// CD大于0.8s时计时器文本色(默认 #DA4A23)
///
[ObservableProperty]
private string _textNormalColor = "#DA4A23FF";
partial void OnTextNormalColorChanged(string value)
{
if (string.IsNullOrWhiteSpace(value))
{
TextNormalColor = "#DA4A23FF";
}
}
///
/// CD小于0.8s时计时器背景色(默认白色 #FFFFFFFF)
///
[ObservableProperty]
private string _backgroundReadyColor = "#FFFFFFFF";
partial void OnBackgroundReadyColorChanged(string value)
{
if (string.IsNullOrWhiteSpace(value))
{
BackgroundReadyColor = "#FFFFFFFF";
}
}
///
/// CD小于0.8s时计时器文本色(默认 #5DCC17)
///
[ObservableProperty]
private string _textReadyColor = "#5DCC17FF";
partial void OnTextReadyColorChanged(string value)
{
if (string.IsNullOrWhiteSpace(value))
{
TextReadyColor = "#5DCC17FF";
}
}
}
///
/// 角色CD修正规则
///
public partial class SkillCdRule : ObservableObject
{
[ObservableProperty]
private string _roleName;
[ObservableProperty]
private string _cdValueText;
[System.Text.Json.Serialization.JsonIgnore]
[Newtonsoft.Json.JsonIgnore]
public double? CdValue
{
get
{
if (string.IsNullOrWhiteSpace(CdValueText))
return null;
if (double.TryParse(
CdValueText,
System.Globalization.NumberStyles.Float,
System.Globalization.CultureInfo.InvariantCulture,
out var v))
{
return v;
}
return null;
}
}
}