use serde::{Deserialize, Serialize};
use super::types::{Brightness, FiveElements, Mutagen, YinYang};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum StarKey {
ZiweiMaj,
TianjiMaj,
TaiyangMaj,
WuquMaj,
TiantongMaj,
LianzhenMaj,
TianfuMaj,
TaiyinMaj,
TanlangMaj,
JumenMaj,
TianxiangMaj,
TianliangMaj,
QishaMaj,
PojunMaj,
ZuofuMin,
YoubiMin,
WenchangMin,
WenquMin,
LucunMin,
TianmaMin,
QingyangMin,
TuoluoMin,
HuoxingMin,
LingxingMin,
TiankuiMin,
TianyueMin,
DikongMin,
DijieMin,
JieshaAdj,
Tiankong,
Tianxing,
Tianyao,
Jieshen,
Yinsha,
Tianxi,
Tianguan,
Tianfu,
Tianku,
Tianxu,
Longchi,
Fengge,
Hongluan,
Guchen,
Guasu,
Feilian,
Posui,
Taifu,
Fenggao,
Tianwu,
Tianyue2,
Santai,
Bazuo,
Engguang,
Tiangui,
Tiancai,
Tianshou,
Jiekong,
Xunzhong,
Xunkong,
Kongwang,
Jielu,
Yuede,
Tianshang,
Tianshi,
Tianchu,
Changsheng,
Muyu,
Guandai,
Linguan,
Diwang,
Shuai,
Bing,
Si,
Mu,
Jue,
Tai,
Yang,
Boshi,
Lishi,
Qinglong,
Xiaohao,
Jiangjun,
Zhoushu,
Faylian,
Xishen,
Bingfu,
Dahao,
Suipo,
Fubing,
Guanfu,
Suijian,
Huiqi,
Sangmen,
Guansuo,
Gwanfu,
Longde,
Baihu,
Tiande,
Diaoke,
Jiangxing,
Panan,
Suiyi,
Xiishen,
Huagai,
Jiesha,
Zhaisha,
Tiansha,
Zhibei,
Xianchi,
Yuesha,
Wangshen,
Yunkui,
Yunyue,
Yunchang,
Yunqu,
Yunluan,
Yunxi,
Yunlu,
Yunyang,
Yuntuo,
Yunma,
Liukui,
Liuyue,
Liuchang,
Liuqu,
Liuluan,
Liuxi,
Liulu,
Liuyang,
Liutuo,
Liuma,
Nianjie,
Yuekui,
Yueyue,
Yuechang,
Yuequ,
Yueluan,
Yuexi,
Yuelu,
Yueyang,
Yuetuo,
Yuema,
Rikui,
Riyue,
Richang,
Riqu,
Riluan,
Rixi,
Rilu,
Riyang,
Rituo,
Rima,
Shikui,
Shiyue,
Shichang,
Shiqu,
Shiluan,
Shixi,
Shilu,
Shiyang,
Shituo,
Shima,
}
pub const MUTAGEN: [Mutagen; 4] = [Mutagen::Lu, Mutagen::Quan, Mutagen::Ke, Mutagen::Ji];
pub const ALL_STARS: [StarKey; 162] = [
StarKey::ZiweiMaj,
StarKey::TianjiMaj,
StarKey::TaiyangMaj,
StarKey::WuquMaj,
StarKey::TiantongMaj,
StarKey::LianzhenMaj,
StarKey::TianfuMaj,
StarKey::TaiyinMaj,
StarKey::TanlangMaj,
StarKey::JumenMaj,
StarKey::TianxiangMaj,
StarKey::TianliangMaj,
StarKey::QishaMaj,
StarKey::PojunMaj,
StarKey::ZuofuMin,
StarKey::YoubiMin,
StarKey::WenchangMin,
StarKey::WenquMin,
StarKey::LucunMin,
StarKey::TianmaMin,
StarKey::QingyangMin,
StarKey::TuoluoMin,
StarKey::HuoxingMin,
StarKey::LingxingMin,
StarKey::TiankuiMin,
StarKey::TianyueMin,
StarKey::DikongMin,
StarKey::DijieMin,
StarKey::JieshaAdj,
StarKey::Tiankong,
StarKey::Tianxing,
StarKey::Tianyao,
StarKey::Jieshen,
StarKey::Yinsha,
StarKey::Tianxi,
StarKey::Tianguan,
StarKey::Tianfu,
StarKey::Tianku,
StarKey::Tianxu,
StarKey::Longchi,
StarKey::Fengge,
StarKey::Hongluan,
StarKey::Guchen,
StarKey::Guasu,
StarKey::Feilian,
StarKey::Posui,
StarKey::Taifu,
StarKey::Fenggao,
StarKey::Tianwu,
StarKey::Tianyue2,
StarKey::Santai,
StarKey::Bazuo,
StarKey::Engguang,
StarKey::Tiangui,
StarKey::Tiancai,
StarKey::Tianshou,
StarKey::Jiekong,
StarKey::Xunzhong,
StarKey::Xunkong,
StarKey::Kongwang,
StarKey::Jielu,
StarKey::Yuede,
StarKey::Tianshang,
StarKey::Tianshi,
StarKey::Tianchu,
StarKey::Changsheng,
StarKey::Muyu,
StarKey::Guandai,
StarKey::Linguan,
StarKey::Diwang,
StarKey::Shuai,
StarKey::Bing,
StarKey::Si,
StarKey::Mu,
StarKey::Jue,
StarKey::Tai,
StarKey::Yang,
StarKey::Boshi,
StarKey::Lishi,
StarKey::Qinglong,
StarKey::Xiaohao,
StarKey::Jiangjun,
StarKey::Zhoushu,
StarKey::Faylian,
StarKey::Xishen,
StarKey::Bingfu,
StarKey::Dahao,
StarKey::Suipo,
StarKey::Fubing,
StarKey::Guanfu,
StarKey::Suijian,
StarKey::Huiqi,
StarKey::Sangmen,
StarKey::Guansuo,
StarKey::Gwanfu,
StarKey::Longde,
StarKey::Baihu,
StarKey::Tiande,
StarKey::Diaoke,
StarKey::Jiangxing,
StarKey::Panan,
StarKey::Suiyi,
StarKey::Xiishen,
StarKey::Huagai,
StarKey::Jiesha,
StarKey::Zhaisha,
StarKey::Tiansha,
StarKey::Zhibei,
StarKey::Xianchi,
StarKey::Yuesha,
StarKey::Wangshen,
StarKey::Yunkui,
StarKey::Yunyue,
StarKey::Yunchang,
StarKey::Yunqu,
StarKey::Yunluan,
StarKey::Yunxi,
StarKey::Yunlu,
StarKey::Yunyang,
StarKey::Yuntuo,
StarKey::Yunma,
StarKey::Liukui,
StarKey::Liuyue,
StarKey::Liuchang,
StarKey::Liuqu,
StarKey::Liuluan,
StarKey::Liuxi,
StarKey::Liulu,
StarKey::Liuyang,
StarKey::Liutuo,
StarKey::Liuma,
StarKey::Nianjie,
StarKey::Yuekui,
StarKey::Yueyue,
StarKey::Yuechang,
StarKey::Yuequ,
StarKey::Yueluan,
StarKey::Yuexi,
StarKey::Yuelu,
StarKey::Yueyang,
StarKey::Yuetuo,
StarKey::Yuema,
StarKey::Rikui,
StarKey::Riyue,
StarKey::Richang,
StarKey::Riqu,
StarKey::Riluan,
StarKey::Rixi,
StarKey::Rilu,
StarKey::Riyang,
StarKey::Rituo,
StarKey::Rima,
StarKey::Shikui,
StarKey::Shiyue,
StarKey::Shichang,
StarKey::Shiqu,
StarKey::Shiluan,
StarKey::Shixi,
StarKey::Shilu,
StarKey::Shiyang,
StarKey::Shituo,
StarKey::Shima,
];
pub const STARS_WITH_INFO: [StarKey; 20] = [
StarKey::ZiweiMaj,
StarKey::TianjiMaj,
StarKey::TaiyangMaj,
StarKey::WuquMaj,
StarKey::TiantongMaj,
StarKey::LianzhenMaj,
StarKey::TianfuMaj,
StarKey::TaiyinMaj,
StarKey::TanlangMaj,
StarKey::JumenMaj,
StarKey::TianxiangMaj,
StarKey::TianliangMaj,
StarKey::QishaMaj,
StarKey::PojunMaj,
StarKey::WenchangMin,
StarKey::WenquMin,
StarKey::HuoxingMin,
StarKey::LingxingMin,
StarKey::QingyangMin,
StarKey::TuoluoMin,
];
pub struct StarInfo {
pub brightness: [Option<Brightness>; 12],
pub five_elements: Option<FiveElements>,
pub yin_yang: Option<YinYang>,
}
pub fn get_star_info(key: StarKey) -> Option<StarInfo> {
let (five_elements, yin_yang) = star_five_elements_and_yin_yang(key);
Some(StarInfo {
brightness: get_brightness_table(key)?,
five_elements,
yin_yang,
})
}
fn star_five_elements_and_yin_yang(key: StarKey) -> (Option<FiveElements>, Option<YinYang>) {
use FiveElements::*;
use YinYang::*;
match key {
StarKey::ZiweiMaj => (Some(Earth), Some(Yin)),
StarKey::TianjiMaj => (Some(Wood), Some(Yin)),
StarKey::WuquMaj => (Some(Metal), Some(Yin)),
StarKey::TiantongMaj => (Some(Water), Some(Yang)),
StarKey::LianzhenMaj => (Some(Fire), Some(Yin)),
StarKey::TianfuMaj => (Some(Earth), Some(Yang)),
StarKey::TaiyinMaj => (Some(Water), Some(Yin)),
StarKey::TanlangMaj => (Some(Water), None),
StarKey::JumenMaj => (Some(Earth), Some(Yin)),
StarKey::TianxiangMaj => (Some(Water), None),
StarKey::TianliangMaj => (Some(Earth), None),
StarKey::PojunMaj => (Some(Water), None),
_ => (None, None),
}
}
pub fn get_brightness_table(key: StarKey) -> Option<[Option<Brightness>; 12]> {
use Brightness::*;
let s = |b: Brightness| Some(b);
let n: Option<Brightness> = None;
match key {
StarKey::ZiweiMaj => Some([
s(Wang),
s(Wang),
s(De),
s(Wang),
s(Miao),
s(Miao),
s(Wang),
s(Wang),
s(De),
s(Wang),
s(Ping),
s(Miao),
]),
StarKey::TianjiMaj => Some([
s(De),
s(Wang),
s(Li),
s(Ping),
s(Miao),
s(Xian),
s(De),
s(Wang),
s(Li),
s(Ping),
s(Miao),
s(Xian),
]),
StarKey::TaiyangMaj => Some([
s(Wang),
s(Miao),
s(Wang),
s(Wang),
s(Wang),
s(De),
s(De),
s(Xian),
s(Bu),
s(Xian),
s(Xian),
s(Bu),
]),
StarKey::WuquMaj => Some([
s(De),
s(Li),
s(Miao),
s(Ping),
s(Wang),
s(Miao),
s(De),
s(Li),
s(Miao),
s(Ping),
s(Wang),
s(Miao),
]),
StarKey::TiantongMaj => Some([
s(Li),
s(Ping),
s(Ping),
s(Miao),
s(Xian),
s(Bu),
s(Wang),
s(Ping),
s(Ping),
s(Miao),
s(Wang),
s(Bu),
]),
StarKey::LianzhenMaj => Some([
s(Miao),
s(Ping),
s(Li),
s(Xian),
s(Ping),
s(Li),
s(Miao),
s(Ping),
s(Li),
s(Xian),
s(Ping),
s(Li),
]),
StarKey::TianfuMaj => Some([
s(Miao),
s(De),
s(Miao),
s(De),
s(Wang),
s(Miao),
s(De),
s(Wang),
s(Miao),
s(De),
s(Miao),
s(Miao),
]),
StarKey::TaiyinMaj => Some([
s(Wang),
s(Xian),
s(Xian),
s(Xian),
s(Bu),
s(Bu),
s(Li),
s(Bu),
s(Wang),
s(Miao),
s(Miao),
s(Miao),
]),
StarKey::TanlangMaj => Some([
s(Ping),
s(Li),
s(Miao),
s(Xian),
s(Wang),
s(Miao),
s(Ping),
s(Li),
s(Miao),
s(Xian),
s(Wang),
s(Miao),
]),
StarKey::JumenMaj => Some([
s(Miao),
s(Miao),
s(Xian),
s(Wang),
s(Wang),
s(Bu),
s(Miao),
s(Miao),
s(Xian),
s(Wang),
s(Wang),
s(Bu),
]),
StarKey::TianxiangMaj => Some([
s(Miao),
s(Xian),
s(De),
s(De),
s(Miao),
s(De),
s(Miao),
s(Xian),
s(De),
s(De),
s(Miao),
s(Miao),
]),
StarKey::TianliangMaj => Some([
s(Miao),
s(Miao),
s(Miao),
s(Xian),
s(Miao),
s(Wang),
s(Xian),
s(De),
s(Miao),
s(Xian),
s(Miao),
s(Wang),
]),
StarKey::QishaMaj => Some([
s(Miao),
s(Wang),
s(Miao),
s(Ping),
s(Wang),
s(Miao),
s(Miao),
s(Miao),
s(Miao),
s(Ping),
s(Wang),
s(Miao),
]),
StarKey::PojunMaj => Some([
s(De),
s(Xian),
s(Wang),
s(Ping),
s(Miao),
s(Wang),
s(De),
s(Xian),
s(Wang),
s(Ping),
s(Miao),
s(Wang),
]),
StarKey::WenchangMin => Some([
s(Xian),
s(Li),
s(De),
s(Miao),
s(Xian),
s(Li),
s(De),
s(Miao),
s(Xian),
s(Li),
s(De),
s(Miao),
]),
StarKey::WenquMin => Some([
s(Ping),
s(Wang),
s(De),
s(Miao),
s(Xian),
s(Wang),
s(De),
s(Miao),
s(Xian),
s(Wang),
s(De),
s(Miao),
]),
StarKey::HuoxingMin => Some([
s(Miao),
s(Li),
s(Xian),
s(De),
s(Miao),
s(Li),
s(Xian),
s(De),
s(Miao),
s(Li),
s(Xian),
s(De),
]),
StarKey::LingxingMin => Some([
s(Miao),
s(Li),
s(Xian),
s(De),
s(Miao),
s(Li),
s(Xian),
s(De),
s(Miao),
s(Li),
s(Xian),
s(De),
]),
StarKey::QingyangMin => Some([
n,
s(Xian),
s(Miao),
n,
s(Xian),
s(Miao),
n,
s(Xian),
s(Miao),
n,
s(Xian),
s(Miao),
]),
StarKey::TuoluoMin => Some([
s(Xian),
n,
s(Miao),
s(Xian),
n,
s(Miao),
s(Xian),
n,
s(Miao),
s(Xian),
n,
s(Miao),
]),
_ => None,
}
}
impl StarKey {
pub fn as_key(&self) -> &'static str {
match self {
StarKey::ZiweiMaj => "ziweiMaj",
StarKey::TianjiMaj => "tianjiMaj",
StarKey::TaiyangMaj => "taiyangMaj",
StarKey::WuquMaj => "wuquMaj",
StarKey::TiantongMaj => "tiantongMaj",
StarKey::LianzhenMaj => "lianzhenMaj",
StarKey::TianfuMaj => "tianfuMaj",
StarKey::TaiyinMaj => "taiyinMaj",
StarKey::TanlangMaj => "tanlangMaj",
StarKey::JumenMaj => "jumenMaj",
StarKey::TianxiangMaj => "tianxiangMaj",
StarKey::TianliangMaj => "tianliangMaj",
StarKey::QishaMaj => "qishaMaj",
StarKey::PojunMaj => "pojunMaj",
StarKey::ZuofuMin => "zuofuMin",
StarKey::YoubiMin => "youbiMin",
StarKey::WenchangMin => "wenchangMin",
StarKey::WenquMin => "wenquMin",
StarKey::LucunMin => "lucunMin",
StarKey::TianmaMin => "tianmaMin",
StarKey::QingyangMin => "qingyangMin",
StarKey::TuoluoMin => "tuoluoMin",
StarKey::HuoxingMin => "huoxingMin",
StarKey::LingxingMin => "lingxingMin",
StarKey::TiankuiMin => "tiankuiMin",
StarKey::TianyueMin => "tianyueMin",
StarKey::DikongMin => "dikongMin",
StarKey::DijieMin => "dijieMin",
StarKey::JieshaAdj => "jieshaAdj",
StarKey::Tiankong => "tiankong",
StarKey::Tianxing => "tianxing",
StarKey::Tianyao => "tianyao",
StarKey::Jieshen => "jieshen",
StarKey::Yinsha => "yinsha",
StarKey::Tianxi => "tianxi",
StarKey::Tianguan => "tianguan",
StarKey::Tianfu => "tianfu",
StarKey::Tianku => "tianku",
StarKey::Tianxu => "tianxu",
StarKey::Longchi => "longchi",
StarKey::Fengge => "fengge",
StarKey::Hongluan => "hongluan",
StarKey::Guchen => "guchen",
StarKey::Guasu => "guasu",
StarKey::Feilian => "feilian",
StarKey::Posui => "posui",
StarKey::Taifu => "taifu",
StarKey::Fenggao => "fenggao",
StarKey::Tianwu => "tianwu",
StarKey::Tianyue2 => "tianyue",
StarKey::Santai => "santai",
StarKey::Bazuo => "bazuo",
StarKey::Engguang => "engguang",
StarKey::Tiangui => "tiangui",
StarKey::Tiancai => "tiancai",
StarKey::Tianshou => "tianshou",
StarKey::Jiekong => "jiekong",
StarKey::Xunzhong => "xunzhong",
StarKey::Xunkong => "xunkong",
StarKey::Kongwang => "kongwang",
StarKey::Jielu => "jielu",
StarKey::Yuede => "yuede",
StarKey::Tianshang => "tianshang",
StarKey::Tianshi => "tianshi",
StarKey::Tianchu => "tianchu",
StarKey::Changsheng => "changsheng",
StarKey::Muyu => "muyu",
StarKey::Guandai => "guandai",
StarKey::Linguan => "linguan",
StarKey::Diwang => "diwang",
StarKey::Shuai => "shuai",
StarKey::Bing => "bing",
StarKey::Si => "si",
StarKey::Mu => "mu",
StarKey::Jue => "jue",
StarKey::Tai => "tai",
StarKey::Yang => "yang",
StarKey::Boshi => "boshi",
StarKey::Lishi => "lishi",
StarKey::Qinglong => "qinglong",
StarKey::Xiaohao => "xiaohao",
StarKey::Jiangjun => "jiangjun",
StarKey::Zhoushu => "zhoushu",
StarKey::Faylian => "faylian",
StarKey::Xishen => "xishen",
StarKey::Bingfu => "bingfu",
StarKey::Dahao => "dahao",
StarKey::Suipo => "suipo",
StarKey::Fubing => "fubing",
StarKey::Guanfu => "guanfu",
StarKey::Suijian => "suijian",
StarKey::Huiqi => "huiqi",
StarKey::Sangmen => "sangmen",
StarKey::Guansuo => "guansuo",
StarKey::Gwanfu => "gwanfu",
StarKey::Longde => "longde",
StarKey::Baihu => "baihu",
StarKey::Tiande => "tiande",
StarKey::Diaoke => "diaoke",
StarKey::Jiangxing => "jiangxing",
StarKey::Panan => "panan",
StarKey::Suiyi => "suiyi",
StarKey::Xiishen => "xiishen",
StarKey::Huagai => "huagai",
StarKey::Jiesha => "jiesha",
StarKey::Zhaisha => "zhaisha",
StarKey::Tiansha => "tiansha",
StarKey::Zhibei => "zhibei",
StarKey::Xianchi => "xianchi",
StarKey::Yuesha => "yuesha",
StarKey::Wangshen => "wangshen",
StarKey::Yunkui => "yunkui",
StarKey::Yunyue => "yunyue",
StarKey::Yunchang => "yunchang",
StarKey::Yunqu => "yunqu",
StarKey::Yunluan => "yunluan",
StarKey::Yunxi => "yunxi",
StarKey::Yunlu => "yunlu",
StarKey::Yunyang => "yunyang",
StarKey::Yuntuo => "yuntuo",
StarKey::Yunma => "yunma",
StarKey::Liukui => "liukui",
StarKey::Liuyue => "liuyue",
StarKey::Liuchang => "liuchang",
StarKey::Liuqu => "liuqu",
StarKey::Liuluan => "liuluan",
StarKey::Liuxi => "liuxi",
StarKey::Liulu => "liulu",
StarKey::Liuyang => "liuyang",
StarKey::Liutuo => "liutuo",
StarKey::Liuma => "liuma",
StarKey::Nianjie => "nianjie",
StarKey::Yuekui => "yuekui",
StarKey::Yueyue => "yueyue",
StarKey::Yuechang => "yuechang",
StarKey::Yuequ => "yuequ",
StarKey::Yueluan => "yueluan",
StarKey::Yuexi => "yuexi",
StarKey::Yuelu => "yuelu",
StarKey::Yueyang => "yueyang",
StarKey::Yuetuo => "yuetuo",
StarKey::Yuema => "yuema",
StarKey::Rikui => "rikui",
StarKey::Riyue => "riyue",
StarKey::Richang => "richang",
StarKey::Riqu => "riqu",
StarKey::Riluan => "riluan",
StarKey::Rixi => "rixi",
StarKey::Rilu => "rilu",
StarKey::Riyang => "riyang",
StarKey::Rituo => "rituo",
StarKey::Rima => "rima",
StarKey::Shikui => "shikui",
StarKey::Shiyue => "shiyue",
StarKey::Shichang => "shichang",
StarKey::Shiqu => "shiqu",
StarKey::Shiluan => "shiluan",
StarKey::Shixi => "shixi",
StarKey::Shilu => "shilu",
StarKey::Shiyang => "shiyang",
StarKey::Shituo => "shituo",
StarKey::Shima => "shima",
}
}
}
impl StarKey {
pub fn from_key(key: &str) -> Option<StarKey> {
match key {
"ziweiMaj" => Some(StarKey::ZiweiMaj),
"tianjiMaj" => Some(StarKey::TianjiMaj),
"taiyangMaj" => Some(StarKey::TaiyangMaj),
"wuquMaj" => Some(StarKey::WuquMaj),
"tiantongMaj" => Some(StarKey::TiantongMaj),
"lianzhenMaj" => Some(StarKey::LianzhenMaj),
"tianfuMaj" => Some(StarKey::TianfuMaj),
"taiyinMaj" => Some(StarKey::TaiyinMaj),
"tanlangMaj" => Some(StarKey::TanlangMaj),
"jumenMaj" => Some(StarKey::JumenMaj),
"tianxiangMaj" => Some(StarKey::TianxiangMaj),
"tianliangMaj" => Some(StarKey::TianliangMaj),
"qishaMaj" => Some(StarKey::QishaMaj),
"pojunMaj" => Some(StarKey::PojunMaj),
"zuofuMin" => Some(StarKey::ZuofuMin),
"youbiMin" => Some(StarKey::YoubiMin),
"wenchangMin" => Some(StarKey::WenchangMin),
"wenquMin" => Some(StarKey::WenquMin),
"lucunMin" => Some(StarKey::LucunMin),
"tianmaMin" => Some(StarKey::TianmaMin),
"qingyangMin" => Some(StarKey::QingyangMin),
"tuoluoMin" => Some(StarKey::TuoluoMin),
"huoxingMin" => Some(StarKey::HuoxingMin),
"lingxingMin" => Some(StarKey::LingxingMin),
"tiankuiMin" => Some(StarKey::TiankuiMin),
"tianyueMin" => Some(StarKey::TianyueMin),
"dikongMin" => Some(StarKey::DikongMin),
"dijieMin" => Some(StarKey::DijieMin),
"jieshaAdj" => Some(StarKey::JieshaAdj),
"tiankong" => Some(StarKey::Tiankong),
"tianxing" => Some(StarKey::Tianxing),
"tianyao" => Some(StarKey::Tianyao),
"jieshen" => Some(StarKey::Jieshen),
"yinsha" => Some(StarKey::Yinsha),
"tianxi" => Some(StarKey::Tianxi),
"tianguan" => Some(StarKey::Tianguan),
"tianfu" => Some(StarKey::Tianfu),
"tianku" => Some(StarKey::Tianku),
"tianxu" => Some(StarKey::Tianxu),
"longchi" => Some(StarKey::Longchi),
"fengge" => Some(StarKey::Fengge),
"hongluan" => Some(StarKey::Hongluan),
"guchen" => Some(StarKey::Guchen),
"guasu" => Some(StarKey::Guasu),
"feilian" => Some(StarKey::Feilian),
"posui" => Some(StarKey::Posui),
"taifu" => Some(StarKey::Taifu),
"fenggao" => Some(StarKey::Fenggao),
"tianwu" => Some(StarKey::Tianwu),
"tianyue" => Some(StarKey::Tianyue2),
"santai" => Some(StarKey::Santai),
"bazuo" => Some(StarKey::Bazuo),
"engguang" => Some(StarKey::Engguang),
"tiangui" => Some(StarKey::Tiangui),
"tiancai" => Some(StarKey::Tiancai),
"tianshou" => Some(StarKey::Tianshou),
"jiekong" => Some(StarKey::Jiekong),
"xunzhong" => Some(StarKey::Xunzhong),
"xunkong" => Some(StarKey::Xunkong),
"kongwang" => Some(StarKey::Kongwang),
"jielu" => Some(StarKey::Jielu),
"yuede" => Some(StarKey::Yuede),
"tianshang" => Some(StarKey::Tianshang),
"tianshi" => Some(StarKey::Tianshi),
"tianchu" => Some(StarKey::Tianchu),
"changsheng" => Some(StarKey::Changsheng),
"muyu" => Some(StarKey::Muyu),
"guandai" => Some(StarKey::Guandai),
"linguan" => Some(StarKey::Linguan),
"diwang" => Some(StarKey::Diwang),
"shuai" => Some(StarKey::Shuai),
"bing" => Some(StarKey::Bing),
"si" => Some(StarKey::Si),
"mu" => Some(StarKey::Mu),
"jue" => Some(StarKey::Jue),
"tai" => Some(StarKey::Tai),
"yang" => Some(StarKey::Yang),
"boshi" => Some(StarKey::Boshi),
"lishi" => Some(StarKey::Lishi),
"qinglong" => Some(StarKey::Qinglong),
"xiaohao" => Some(StarKey::Xiaohao),
"jiangjun" => Some(StarKey::Jiangjun),
"zhoushu" => Some(StarKey::Zhoushu),
"faylian" => Some(StarKey::Faylian),
"xishen" => Some(StarKey::Xishen),
"bingfu" => Some(StarKey::Bingfu),
"dahao" => Some(StarKey::Dahao),
"suipo" => Some(StarKey::Suipo),
"fubing" => Some(StarKey::Fubing),
"guanfu" => Some(StarKey::Guanfu),
"suijian" => Some(StarKey::Suijian),
"huiqi" => Some(StarKey::Huiqi),
"sangmen" => Some(StarKey::Sangmen),
"guansuo" => Some(StarKey::Guansuo),
"gwanfu" => Some(StarKey::Gwanfu),
"longde" => Some(StarKey::Longde),
"baihu" => Some(StarKey::Baihu),
"tiande" => Some(StarKey::Tiande),
"diaoke" => Some(StarKey::Diaoke),
"jiangxing" => Some(StarKey::Jiangxing),
"panan" => Some(StarKey::Panan),
"suiyi" => Some(StarKey::Suiyi),
"xiishen" => Some(StarKey::Xiishen),
"huagai" => Some(StarKey::Huagai),
"jiesha" => Some(StarKey::Jiesha),
"zhaisha" => Some(StarKey::Zhaisha),
"tiansha" => Some(StarKey::Tiansha),
"zhibei" => Some(StarKey::Zhibei),
"xianchi" => Some(StarKey::Xianchi),
"yuesha" => Some(StarKey::Yuesha),
"wangshen" => Some(StarKey::Wangshen),
"yunkui" => Some(StarKey::Yunkui),
"yunyue" => Some(StarKey::Yunyue),
"yunchang" => Some(StarKey::Yunchang),
"yunqu" => Some(StarKey::Yunqu),
"yunluan" => Some(StarKey::Yunluan),
"yunxi" => Some(StarKey::Yunxi),
"yunlu" => Some(StarKey::Yunlu),
"yunyang" => Some(StarKey::Yunyang),
"yuntuo" => Some(StarKey::Yuntuo),
"yunma" => Some(StarKey::Yunma),
"liukui" => Some(StarKey::Liukui),
"liuyue" => Some(StarKey::Liuyue),
"liuchang" => Some(StarKey::Liuchang),
"liuqu" => Some(StarKey::Liuqu),
"liuluan" => Some(StarKey::Liuluan),
"liuxi" => Some(StarKey::Liuxi),
"liulu" => Some(StarKey::Liulu),
"liuyang" => Some(StarKey::Liuyang),
"liutuo" => Some(StarKey::Liutuo),
"liuma" => Some(StarKey::Liuma),
"nianjie" => Some(StarKey::Nianjie),
"yuekui" => Some(StarKey::Yuekui),
"yueyue" => Some(StarKey::Yueyue),
"yuechang" => Some(StarKey::Yuechang),
"yuequ" => Some(StarKey::Yuequ),
"yueluan" => Some(StarKey::Yueluan),
"yuexi" => Some(StarKey::Yuexi),
"yuelu" => Some(StarKey::Yuelu),
"yueyang" => Some(StarKey::Yueyang),
"yuetuo" => Some(StarKey::Yuetuo),
"yuema" => Some(StarKey::Yuema),
"rikui" => Some(StarKey::Rikui),
"riyue" => Some(StarKey::Riyue),
"richang" => Some(StarKey::Richang),
"riqu" => Some(StarKey::Riqu),
"riluan" => Some(StarKey::Riluan),
"rixi" => Some(StarKey::Rixi),
"rilu" => Some(StarKey::Rilu),
"riyang" => Some(StarKey::Riyang),
"rituo" => Some(StarKey::Rituo),
"rima" => Some(StarKey::Rima),
"shikui" => Some(StarKey::Shikui),
"shiyue" => Some(StarKey::Shiyue),
"shichang" => Some(StarKey::Shichang),
"shiqu" => Some(StarKey::Shiqu),
"shiluan" => Some(StarKey::Shiluan),
"shixi" => Some(StarKey::Shixi),
"shilu" => Some(StarKey::Shilu),
"shiyang" => Some(StarKey::Shiyang),
"shituo" => Some(StarKey::Shituo),
"shima" => Some(StarKey::Shima),
_ => None,
}
}
}