Skip to main content

manabrew_engine/keyword/
firebending.rs

1//! Firebending keyword implementation.
2//!
3//! Ported from Java's `Firebending.java` in `forge/game/keyword/`.
4
5use super::keyword_instance::Keyword;
6use super::keyword_with_amount::KeywordWithAmount;
7
8/// Firebending keyword data.
9/// Whenever this creature attacks, add red mana.
10#[derive(Debug, Clone)]
11pub struct Firebending {
12    pub inner: KeywordWithAmount,
13}
14
15impl Firebending {
16    /// Create a new Firebending keyword.
17    pub fn new(original: String) -> Self {
18        Self {
19            inner: KeywordWithAmount::new(Keyword::Firebending, original),
20        }
21    }
22
23    /// Parse the details string.
24    pub fn parse(&mut self, details: &str) {
25        self.inner.parse(details);
26    }
27
28    /// Format reminder text.
29    pub fn format_reminder_text(&self, reminder_text: &str) -> String {
30        let fire = if self.inner.with_x {
31            "X {R}".to_string()
32        } else {
33            "{R}".repeat(self.inner.amount as usize)
34        };
35        reminder_text.replace("%s", &fire)
36    }
37
38    /// Get the display title.
39    pub fn get_title(&self) -> String {
40        self.inner.get_title()
41    }
42}