use crate::core::{Brightness, Mutagen, PalaceName, Scope, StarCategory, StarKind, StarName};
use crate::features::domains::Domain;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
pub struct StarFeature {
palace: PalaceName,
star: StarName,
kind: StarKind,
brightness: Brightness,
mutagen: Option<Mutagen>,
scope: Scope,
domain: Option<Domain>,
}
impl StarFeature {
pub const fn new(
palace: PalaceName,
star: StarName,
kind: StarKind,
brightness: Brightness,
mutagen: Option<Mutagen>,
scope: Scope,
domain: Option<Domain>,
) -> Self {
Self {
palace,
star,
kind,
brightness,
mutagen,
scope,
domain,
}
}
pub const fn palace(&self) -> PalaceName {
self.palace
}
pub const fn star(&self) -> StarName {
self.star
}
pub const fn kind(&self) -> StarKind {
self.kind
}
pub const fn category(&self) -> StarCategory {
self.kind.category()
}
pub const fn brightness(&self) -> Brightness {
self.brightness
}
pub const fn mutagen(&self) -> Option<Mutagen> {
self.mutagen
}
pub const fn scope(&self) -> Scope {
self.scope
}
pub const fn domain(&self) -> Option<Domain> {
self.domain
}
}