feat: Add title and description methods to AchievementId (#47)

This commit is contained in:
demenik
2025-12-11 20:19:00 +01:00
parent e8af0add0b
commit d58b23c1b1

View File

@@ -19,21 +19,41 @@ pub enum AchievementId {
} }
impl AchievementId { impl AchievementId {
/// Label to be displayed ingame /// Title to be displayed ingame
pub fn label(&self) -> String { pub fn title(&self) -> String {
match self { match self {
AchievementId::FirstSteps => "Erste Schritte: Verdiene eine Beere.", AchievementId::FirstSteps => "Erste Schritte",
AchievementId::MasterFarmer => "Meisterbauer: Verdiene 100 Beeren.", AchievementId::MasterFarmer => "Meisterbauer",
AchievementId::BerryTycoon => "Beeren-Tycoon: Verdiene 1.000 Beeren.", AchievementId::BerryTycoon => "Beeren-Tycoon",
AchievementId::GettingStarted => "Aller Anfang: Schließe deine erste Fokus-Phase ab.", AchievementId::GettingStarted => "Aller Anfang",
AchievementId::FocusMaster => "Fokus-Meister: Schließe 10 Fokus-Phasen ab.", AchievementId::FocusMaster => "Fokus-Meister",
AchievementId::ZenMaster => "Zen-Meister: Schließe 50 Fokus-Phasen ab.", AchievementId::ZenMaster => "Zen-Meister",
AchievementId::Negligent => "Nachlässig: Lasse eine Pflanze verdorren.", AchievementId::Negligent => "Nachlässig",
AchievementId::CompostKing => "Kompost-König: Lasse 10 Pflanzen verdorren.", AchievementId::CompostKing => "Kompost-König",
} }
.into() .into()
} }
/// Description to be displayed ingame
pub fn description(&self) -> String {
match self {
AchievementId::FirstSteps => "Verdiene eine Beere.",
AchievementId::MasterFarmer => "Verdiene 100 Beeren.",
AchievementId::BerryTycoon => "Verdiene 1.000 Beeren.",
AchievementId::GettingStarted => "Schließe deine erste Fokus-Phase ab.",
AchievementId::FocusMaster => "Schließe 10 Fokus-Phasen ab.",
AchievementId::ZenMaster => "Schließe 50 Fokus-Phasen ab.",
AchievementId::Negligent => "Lasse eine Pflanze verdorren.",
AchievementId::CompostKing => "Lasse 10 Pflanzen verdorren.",
}
.into()
}
/// Label to be displayed ingame (Title: Description)
pub fn label(&self) -> String {
format!("{}: {}", self.title(), self.description())
}
/// Checks if an achievement's conditions are met /// Checks if an achievement's conditions are met
pub fn conditions_met(&self, tracker: &SessionTracker) -> bool { pub fn conditions_met(&self, tracker: &SessionTracker) -> bool {
match self { match self {