remotro 0.2.0

A crate allowing remote control of Balatro
Documentation
use crate::balatro::deck::{Rank, Suit};
use crate::balatro::play::PokerHandKind;
use crate::balatro_enum;
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Joker {
    pub kind: JokerKind,
    pub price: u64,
    pub edition: Option<JokerEdition>,
    pub rental: bool,
    pub lifespan: Lifespan,
}

balatro_enum!(JokerEdition {
    Foil = "e_foil",
    Holographic = "e_holo",
    Polychrome = "e_polychrome",
    Negative = "e_negative"
});

balatro_enum!(JokerKind {
    Joker = "j_joker",
    GreedyJoker = "j_greedy_joker",
    LustyJoker = "j_lusty_joker",
    WrathfulJoker = "j_wrathful_joker",
    GluttenousJoker = "j_gluttenous_joker",
    Jolly = "j_jolly",
    Zany = "j_zany",
    Mad = "j_mad",
    Crazy = "j_crazy",
    Droll = "j_droll",
    Sly = "j_sly",
    Wily = "j_wily",
    Clever = "j_clever",
    Devious = "j_devious",
    Crafty = "j_crafty",
    Half = "j_half",
    EightBall { probability: u64 } = "j_8_ball",
    Stencil { xmult: u64 } = "j_stencil",
    FourFingers = "j_four_fingers",
    Mime = "j_mime",
    CreditCard = "j_credit_card",
    Ceremonial { mult: u64 } = "j_ceremonial",
    Banner = "j_banner",
    MysticSummit = "j_mystic_summit",
    Marble = "j_marble",
    LoyaltyCard { left: u64 } = "j_loyalty_card",
    Misprint = "j_misprint",
    Dusk = "j_dusk",
    RaisedFist = "j_raised_fist",
    Chaos = "j_chaos",
    Fibonacci = "j_fibonacci",
    SteelJoker { xmult: f64 } = "j_steel_joker",
    ScaryFace = "j_scary_face",
    Abstract { mult: u64 } = "j_abstract",
    DelayedGrat = "j_delayed_grat",
    Hack = "j_hack",
    Pareidolia = "j_pareidolia",
    GrosMichel { probability: u64 } = "j_gros_michel",
    EvenSteven = "j_even_steven",
    OddTodd = "j_odd_todd",
    Scholar = "j_scholar",
    Business { probability: u64 } = "j_business",
    Supernova = "j_supernova",
    RideTheBus { mult: u64 } = "j_ride_the_bus",
    Space { probability: u64 } = "j_space",
    Egg = "j_egg",
    Burglar = "j_burglar",
    Blackboard = "j_blackboard",
    Runner { chips: u64 } = "j_runner",
    IceCream { chips: u64 } = "j_ice_cream",
    Dna { active: bool } = "j_dna",
    Splash = "j_splash",
    BlueJoker { chips: u64 } = "j_blue_joker",
    SixthSense = "j_sixth_sense",
    Constellation { xmult: f64 } = "j_constellation",
    Hiker = "j_hiker",
    Faceless = "j_faceless",
    GreenJoker { mult: u64 } = "j_green_joker",
    Superposition = "j_superposition",
    TodoList { poker_hand: PokerHandKind } = "j_todo_list",
    Cavendish { probability: u64 } = "j_cavendish",
    CardSharp = "j_card_sharp",
    RedCard { mult: u64 } = "j_red_card",
    Madness { xmult: f64 } = "j_madness",
    Square { chips: u64 } = "j_square",
    Seance = "j_seance",
    RiffRaff = "j_riff_raff",
    Vampire { xmult: f64 } = "j_vampire",
    Shortcut = "j_shortcut",
    Hologram { xmult: f64 } = "j_hologram",
    Vagabond = "j_vagabond",
    Baron = "j_baron",
    Cloud9 { earnings: u64 } = "j_cloud_9",
    Rocket { earnings: u64 } = "j_rocket",
    Obelisk { xmult: f64 } = "j_obelisk",
    MidasMask = "j_midas_mask",
    Luchador = "j_luchador",
    Photograph = "j_photograph",
    Gift = "j_gift",
    TurtleBean { hand_size: u64 } = "j_turtle_bean",
    Erosion { mult: u64 } = "j_erosion",
    ReservedParking { probability: u64 } = "j_reserved_parking",
    Mail { rank: Rank } = "j_mail",
    ToTheMoon = "j_to_the_moon",
    Hallucination { probability: u64 } = "j_hallucination",
    FortuneTeller { mult: u64 } = "j_fortune_teller",
    Juggler = "j_juggler",
    Drunkard = "j_drunkard",
    Stone { chips: u64 } = "j_stone",
    Golden = "j_golden",
    LuckyCat { xmult: f64 } = "j_lucky_cat",
    Baseball = "j_baseball",
    Bull = "j_bull",
    DietCola = "j_diet_cola",
    Trading = "j_trading",
    Flash { mult: u64 } = "j_flash",
    Popcorn { mult: u64 } = "j_popcorn",
    Trousers { mult: u64 } = "j_trousers",
    Ancient { suit: Suit } = "j_ancient",
    Ramen { xmult: f64 } = "j_ramen",
    WalkieTalkie = "j_walkie_talkie",
    Selzer { hands_left: u64 } = "j_selzer",
    Castle { chips: u64, suit: Suit } = "j_castle",
    Smiley = "j_smiley",
    Campfire { xmult: f64 } = "j_campfire",
    Ticket = "j_ticket",
    MrBones = "j_mr_bones",
    Acrobat = "j_acrobat",
    SockAndBuskin = "j_sock_and_buskin",
    Swashbuckler { mult: u64 } = "j_swashbuckler",
    Troubadour = "j_troubadour",
    Certificate = "j_certificate",
    Smeared = "j_smeared",
    Throwback { xmult: f64 } = "j_throwback",
    HangingChad = "j_hanging_chad",
    RoughGem = "j_rough_gem",
    Bloodstone { probability: u64 } = "j_bloodstone",
    Arrowhead = "j_arrowhead",
    OnyxAgate = "j_onyx_agate",
    Glass { xmult: f64  } = "j_glass",
    RingMaster = "j_ring_master",
    FlowerPot = "j_flower_pot",
    Blueprint = "j_blueprint",
    Wee { chips: u64 } = "j_wee",
    MerryAndy = "j_merry_andy",
    Oops = "j_oops",
    Idol { rank: Rank, suit: Suit } = "j_idol",
    SeeingDouble = "j_seeing_double",
    Matador = "j_matador",
    HitTheRoad { xmult: f64 } = "j_hit_the_road",
    Duo = "j_duo",
    Trio = "j_trio",
    Family = "j_family",
    Order = "j_order",
    Tribe = "j_tribe",
    Stuntman = "j_stuntman",
    Invisible { rounds: u64 } = "j_invisible",
    Brainstorm = "j_brainstorm",
    Satellite { earnings: u64  } = "j_satellite",
    ShootTheMoon = "j_shoot_the_moon",
    DriversLicense { cards: u64 } = "j_drivers_license",
    Cartomancer = "j_cartomancer",
    Astronomer { xmult: f64 } = "j_astronomer",
    Burnt = "j_burnt",
    Bootstraps { mult: u64 } = "j_bootstraps",
    Caino { xmult: f64 } = "j_caino",
    Triboulet = "j_triboulet",
    Yorick { xmult: f64 } = "j_yorick",
    Chicot = "j_chicot",
    Perkeo = "j_perkeo",
});

#[derive(Serialize, Deserialize, Debug, Clone)]
pub enum Lifespan {
    Normal,
    Eternal,
    Perishable { rounds_left: u64 },
}