From 30884d7c358e8c94ec04862f1baef78838e39175 Mon Sep 17 00:00:00 2001 From: Arthur Roberts Date: Sun, 9 Mar 2025 00:23:02 +0000 Subject: [PATCH] Added card faces Not super duper happy with consistency of sizes between different cards --- card_stuffs/src/main.rs | 298 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 287 insertions(+), 11 deletions(-) diff --git a/card_stuffs/src/main.rs b/card_stuffs/src/main.rs index 023316e..bd6e50a 100644 --- a/card_stuffs/src/main.rs +++ b/card_stuffs/src/main.rs @@ -31,7 +31,7 @@ fn draw_waste(cards_in_waste: &Vec, area: Rect, frame: &mut F ]); let [w1, w2, top_waste] = horizontal.areas(area); - // There must be a better way to do this + // There must be a better way to do all of this if cards_in_waste.len() == 0 { frame.render_widget( empty_pile(), @@ -88,21 +88,13 @@ fn deck_widget(cards_in_deck: &Vec) -> Paragraph<'static> { .border_type(BorderType::Rounded)) } + fn card_widget<'a>(card: &'a card_stuffs::Card, top: bool, highlight: bool, select: bool) -> Paragraph<'a> { if !card.visible { return facedown_card(top); } - let card_image = format!( -"{value}{suit} - - {suit} {suit} - - {suit} - - {suit} {suit} - - {value}{suit}", value=card.value, suit=card.suit); + let card_image = card_paragraph(&card); let card_style = match card.suit.colour() { card_stuffs::Colour::Black => Style::new().black().bg(Color::White), @@ -357,3 +349,287 @@ fn main() -> io::Result<()> { ratatui::restore(); app_result } + + + +fn card_paragraph(c: &card_stuffs::Card) -> String { + match c.value { + card_stuffs::Value::Ace => { +/* +XX + X + X X + X X + X X + XXXXXXX + X X + X X + XX + */ + format!( +"{value}{suit} + {suit} + {suit} {suit} + {suit} {suit} + {suit} {suit} + {suit}{suit}{suit}{suit}{suit}{suit}{suit} + {suit} {suit} + {suit} {suit} + {value}{suit}", value=c.value, suit=c.suit) + }, + card_stuffs::Value::Two => { +/* +XX + X + XXX + X + + X + XXX + X + XX + */ + format!( +"{value}{suit} + {suit} + {suit}{suit}{suit} + {suit} + + {suit} + {suit}{suit}{suit} + {suit} + {value}{suit}", value=c.value, suit=c.suit) + }, + card_stuffs::Value::Three => { +/* +XX X + XXX + X + X + XXX + X + X + XXX + X XX + */ + format!( +"{value}{suit} {suit} + {suit}{suit}{suit} + {suit} + {suit} + {suit}{suit}{suit} + {suit} + {suit} + {suit}{suit}{suit} + {suit} {value}{suit}", value=c.value, suit=c.suit) + }, + card_stuffs::Value::Four => { + format!( +"{value}{suit} + + {suit}{suit} {suit}{suit} + + + + {suit}{suit} {suit}{suit} + + {value}{suit}", value=c.value, suit=c.suit) + }, + card_stuffs::Value::Five => { + format!( +"{value}{suit} + + {suit}{suit} {suit}{suit} + + {suit}{suit} + + {suit}{suit} {suit}{suit} + + {value}{suit}", value=c.value, suit=c.suit) + }, + card_stuffs::Value::Six => { +/* +XX + + XX XX + + XX XX + + XX XX + + XX +*/ + format!( +"{value}{suit} + + {suit}{suit} {suit}{suit} + + {suit}{suit} {suit}{suit} + + {suit}{suit} {suit}{suit} + + {value}{suit}", value=c.value, suit=c.suit) + }, + card_stuffs::Value::Seven => { +/* +XX + XX XX + + XX + + XX XX + + XX XX + XX +*/ + format!( +"{value}{suit} + {suit}{suit} {suit}{suit} + + {suit}{suit} + + {suit}{suit} {suit}{suit} + + {suit}{suit} {suit}{suit} + {value}{suit}", value=c.value, suit=c.suit) + }, + card_stuffs::Value::Eight => { +/* +XX + + X X + X + X X + X + X X + + XX +*/ + format!( +"{value}{suit} + + {suit} {suit} + {suit} + {suit} {suit} + {suit} + {suit} {suit} + + {value}{suit}", value=c.value, suit=c.suit) + }, + card_stuffs::Value::Nine=> { +/* +XX + X X + + X X + X + X X + + X X + XX +*/ + format!( +"{value}{suit} + {suit} {suit} + + {suit} {suit} + {suit} + {suit} {suit} + + {suit} {suit} + {value}{suit}", value=c.value, suit=c.suit) + }, + card_stuffs::Value::Ten => { +/* +XX + X X + X + X X + + X X + X + X X + XX +*/ + format!( +"{value}{suit} + {suit} {suit} + {suit} + {suit} {suit} + + {suit} {suit} + {suit} + {suit} {suit} + {value}{suit}", value=c.value, suit=c.suit) + }, + card_stuffs::Value::Jack => { +/* +XX + + XXXXX + X + X + X X + XX + + XX +*/ + format!( +"{value}{suit} + + {suit}{suit}{suit}{suit}{suit} + {suit} + {suit} + {suit} {suit} + {suit}{suit} + + {value}{suit}", value=c.value, suit=c.suit) + }, + card_stuffs::Value::Queen => { +/* +XX + XXXX + X X + X X + X X + X XX + XXXXX + X + XX +*/ + format!( +"{value}{suit} + {suit}{suit}{suit}{suit} + {suit} {suit} + {suit} {suit} + {suit} {suit} + {suit} {suit} + {suit}{suit}{suit}{suit}{suit} + {suit} + {value}{suit}", value=c.value, suit=c.suit) + }, + card_stuffs::Value::King => { +/* +XX + X X + X XX + X XX + XX + X XX + X XX + X X + XX +*/ + format!( +"{value}{suit} + {suit} {suit} + {suit} {suit}{suit} + {suit} {suit}{suit} + {suit}{suit} + {suit} {suit}{suit} + {suit} {suit}{suit} + {suit} {suit} + {value}{suit}", value=c.value, suit=c.suit) + }, + } +}