use crate::balatro_enum;
use serde::{Deserialize, Serialize};
use self::Rank::*;
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct PlayingCard {
pub edition: Option<CardEdition>,
pub enhancement: Option<Enhancement>,
pub rank: Rank,
pub suit: Suit,
pub seal: Option<Seal>,
pub debuffed: bool,
}
#[derive(Serialize, Deserialize, Debug, Clone, Copy, Eq, PartialEq, PartialOrd, Ord)]
#[serde(rename_all = "PascalCase")]
pub enum Suit {
Spades,
Hearts,
Clubs,
Diamonds,
}
#[derive(Serialize, Deserialize, Debug, Clone, Copy, Eq, PartialEq, PartialOrd, Ord)]
pub enum Rank {
#[serde(rename = "2")]
Two,
#[serde(rename = "3")]
Three,
#[serde(rename = "4")]
Four,
#[serde(rename = "5")]
Five,
#[serde(rename = "6")]
Six,
#[serde(rename = "7")]
Seven,
#[serde(rename = "8")]
Eight,
#[serde(rename = "9")]
Nine,
#[serde(rename = "10")]
Ten,
Jack,
Queen,
King,
#[serde(rename = "Ace")]
Ace,
}
impl Rank {
pub fn next(self) -> Rank {
match self {
Ace => Two,
Two => Three,
Three => Four,
Four => Five,
Five => Six,
Six => Seven,
Seven => Eight,
Eight => Nine,
Nine => Ten,
Ten => Jack,
Jack => Queen,
Queen => King,
King => Ace,
}
}
}
balatro_enum!(Enhancement {
Wild = "m_wild",
Glass = "m_glass",
Bonus = "m_bonus",
Mult = "m_mult",
Lucky = "m_lucky",
Steel = "m_steel",
Stone = "m_stone",
Gold = "m_gold"
});
balatro_enum!(Seal {
Blue = "blue_seal",
Red = "red_seal",
Purple = "purple_seal",
Gold = "gold_seal"
});
balatro_enum!(CardEdition {
Foil = "e_foil",
Holographic = "e_holo",
Polychrome = "e_polychrome"
});