using Lunar.Util;
// ReSharper disable IdentifierTypo
// ReSharper disable MemberCanBePrivate.Global
// ReSharper disable UnusedAutoPropertyAccessor.Global
namespace Lunar.EightChar
{
///
/// 小运
///
public class XiaoYun
{
///
/// 序数,0-9
///
public int Index { get; }
///
/// 大运
///
public DaYun DaYun { get; }
///
/// 年
///
public int Year { get; }
///
/// 年龄
///
public int Age { get; }
///
/// 是否顺推
///
public bool Forward { get; }
///
/// 阴历
///
public Lunar Lunar { get; }
///
/// 初始化
///
/// 大运
/// 序数,0-9
/// 是否顺推
public XiaoYun(DaYun daYun, int index, bool forward)
{
DaYun = daYun;
Lunar = daYun.Lunar;
Index = index;
Year = daYun.StartYear + index;
Age = daYun.StartAge + index;
Forward = forward;
}
///
/// 干支
///
public string GanZhi
{
get
{
var offset = LunarUtil.GetJiaZiIndex(Lunar.TimeInGanZhi);
var add = Index + 1;
if (DaYun.Index > 0)
{
add += DaYun.StartAge - 1;
}
offset += Forward ? add : -add;
var size = LunarUtil.JIA_ZI.Length;
while (offset < 0)
{
offset += size;
}
offset %= size;
return LunarUtil.JIA_ZI[offset];
}
}
///
/// 旬
///
public string Xun => LunarUtil.GetXun(GanZhi);
///
/// 旬空(空亡)
///
public string XunKong => LunarUtil.GetXunKong(GanZhi);
}
}