fortel-ziweidoushu
Version:
紫微斗數排盤 Zi Wei Dou Shu
99 lines (86 loc) • 3.21 kB
text/typescript
import util from 'util'
import { MajorStar } from './majorStar'
import { MinorStar } from './minorStar'
import { Sky } from './sky'
class StarDerivative {
key: string
displayName: string
constructor(key: string, displayName: string) {
this.key = key
this.displayName = displayName
}
toJSON() {
return this.displayName
}
toString(): string {
return this.displayName
}
euqals(starDerivative: StarDerivative) {
return this.key === starDerivative.key
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
[util.inspect.custom](depth: number, opts: any): string {
return this.toString()
}
static WEALTHINESS = Object.freeze(new StarDerivative('WEALTHINESS', '祿'))
static POWER = Object.freeze(new StarDerivative('POWER', '權'))
static FAME = Object.freeze(new StarDerivative('FAME', '科'))
static PROBLEM = Object.freeze(new StarDerivative('PROBLEM', '忌'))
static getWealthinessStar(sky: Sky): Readonly<MajorStar> {
return [
MajorStar.MAJOR_STAR_FIRE,
MajorStar.MAJOR_STAR_CHANGE,
MajorStar.MAJOR_STAR_ENJOYMENT,
MajorStar.MAJOR_STAR_MOON,
MajorStar.MAJOR_STAR_GREED,
MajorStar.MAJOR_STAR_GOLD,
MajorStar.MAJOR_STAR_SUN,
MajorStar.MAJOR_STAR_ARGUMENT,
MajorStar.MAJOR_STAR_RULE,
MajorStar.MAJOR_STAR_PIONEER,
][sky.index]
}
static getPowerStar(sky: Sky): Readonly<MajorStar> {
return [
MajorStar.MAJOR_STAR_PIONEER,
MajorStar.MAJOR_STAR_RULE,
MajorStar.MAJOR_STAR_CHANGE,
MajorStar.MAJOR_STAR_ENJOYMENT,
MajorStar.MAJOR_STAR_MOON,
MajorStar.MAJOR_STAR_GREED,
MajorStar.MAJOR_STAR_GOLD,
MajorStar.MAJOR_STAR_SUN,
MajorStar.MAJOR_STAR_EMPEROR,
MajorStar.MAJOR_STAR_ARGUMENT,
][sky.index]
}
static getFameStar(sky: Sky): Readonly<MajorStar | MinorStar> {
return [
MajorStar.MAJOR_STAR_GOLD,
MajorStar.MAJOR_STAR_EMPEROR,
MinorStar.MINOR_STAR_CLEVER,
MajorStar.MAJOR_STAR_CHANGE,
MajorStar.MAJOR_STAR_SUN,
MajorStar.MAJOR_STAR_RULE,
MajorStar.MAJOR_STAR_TREASURY,
MinorStar.MINOR_STAR_SKILL,
MajorStar.MAJOR_STAR_TREASURY,
MajorStar.MAJOR_STAR_MOON,
][sky.index]
}
static getProblemStar(sky: Sky): Readonly<MajorStar | MinorStar> {
return [
MajorStar.MAJOR_STAR_SUN,
MajorStar.MAJOR_STAR_MOON,
MajorStar.MAJOR_STAR_FIRE,
MajorStar.MAJOR_STAR_ARGUMENT,
MajorStar.MAJOR_STAR_CHANGE,
MinorStar.MINOR_STAR_SKILL,
MajorStar.MAJOR_STAR_ENJOYMENT,
MinorStar.MINOR_STAR_CLEVER,
MajorStar.MAJOR_STAR_GOLD,
MajorStar.MAJOR_STAR_GREED,
][sky.index]
}
}
export { StarDerivative }