Added card faces

Not super duper happy with consistency of sizes between different cards
This commit is contained in:
2025-03-09 00:23:02 +00:00
parent 367ad78198
commit 30884d7c35

View File

@@ -31,7 +31,7 @@ fn draw_waste(cards_in_waste: &Vec<card_stuffs::Card>, area: Rect, frame: &mut F
]); ]);
let [w1, w2, top_waste] = horizontal.areas(area); 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 { if cards_in_waste.len() == 0 {
frame.render_widget( frame.render_widget(
empty_pile(), empty_pile(),
@@ -88,21 +88,13 @@ fn deck_widget(cards_in_deck: &Vec<card_stuffs::Card>) -> Paragraph<'static> {
.border_type(BorderType::Rounded)) .border_type(BorderType::Rounded))
} }
fn card_widget<'a>(card: &'a card_stuffs::Card, top: bool, highlight: bool, select: bool) -> Paragraph<'a> { fn card_widget<'a>(card: &'a card_stuffs::Card, top: bool, highlight: bool, select: bool) -> Paragraph<'a> {
if !card.visible { if !card.visible {
return facedown_card(top); return facedown_card(top);
} }
let card_image = format!( let card_image = card_paragraph(&card);
"{value}{suit}
{suit} {suit}
{suit}
{suit} {suit}
{value}{suit}", value=card.value, suit=card.suit);
let card_style = match card.suit.colour() { let card_style = match card.suit.colour() {
card_stuffs::Colour::Black => Style::new().black().bg(Color::White), card_stuffs::Colour::Black => Style::new().black().bg(Color::White),
@@ -357,3 +349,287 @@ fn main() -> io::Result<()> {
ratatui::restore(); ratatui::restore();
app_result 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)
},
}
}