| 178 | * 文档地址:https://docs.iztro.com/posts/palace.html#functionalastrolabe |
| 179 | */ |
| 180 | export default class FunctionalPalace implements IFunctionalPalace { |
| 181 | private _astrolabe?: IFunctionalAstrolabe; |
| 182 | index; |
| 183 | name; |
| 184 | isBodyPalace; |
| 185 | isOriginalPalace; |
| 186 | heavenlyStem; |
| 187 | earthlyBranch; |
| 188 | majorStars; |
| 189 | minorStars; |
| 190 | adjectiveStars; |
| 191 | changsheng12; |
| 192 | boshi12; |
| 193 | jiangqian12; |
| 194 | suiqian12; |
| 195 | decadal; |
| 196 | ages; |
| 197 | |
| 198 | constructor(data: Palace) { |
| 199 | this.index = data.index; |
| 200 | this.name = data.name; |
| 201 | this.isBodyPalace = data.isBodyPalace; |
| 202 | this.isOriginalPalace = data.isOriginalPalace; |
| 203 | this.heavenlyStem = data.heavenlyStem; |
| 204 | this.earthlyBranch = data.earthlyBranch; |
| 205 | this.majorStars = data.majorStars; |
| 206 | this.minorStars = data.minorStars; |
| 207 | this.adjectiveStars = data.adjectiveStars; |
| 208 | this.changsheng12 = data.changsheng12; |
| 209 | this.boshi12 = data.boshi12; |
| 210 | this.jiangqian12 = data.jiangqian12; |
| 211 | this.suiqian12 = data.suiqian12; |
| 212 | this.decadal = data.decadal; |
| 213 | this.ages = data.ages; |
| 214 | |
| 215 | return this; |
| 216 | } |
| 217 | |
| 218 | has = (stars: StarName[]): boolean => hasStars(this, stars); |
| 219 | notHave = (stars: StarName[]): boolean => notHaveStars(this, stars); |
| 220 | hasOneOf = (stars: StarName[]): boolean => hasOneOfStars(this, stars); |
| 221 | hasMutagen = (mutagen: Mutagen): boolean => hasMutagenInPlace(this, mutagen); |
| 222 | notHaveMutagen = (mutagen: Mutagen): boolean => notHaveMutagenInPalce(this, mutagen); |
| 223 | isEmpty = (excludeStars?: StarName[]) => { |
| 224 | if (this.majorStars?.filter((star) => star.type === 'major').length) { |
| 225 | return false; |
| 226 | } |
| 227 | |
| 228 | if (excludeStars?.length && this.hasOneOf(excludeStars)) { |
| 229 | return false; |
| 230 | } |
| 231 | |
| 232 | return true; |
| 233 | }; |
| 234 | setAstrolabe = (astro: IFunctionalAstrolabe) => (this._astrolabe = astro); |
| 235 | astrolabe = () => this._astrolabe; |
| 236 | fliesTo = (to: number | PalaceName, withMutagens: Mutagen | Mutagen[]) => { |
| 237 | const toPalace = this.astrolabe()?.palace(to); |
nothing calls this directly
no test coverage detected