Added some of the wastes pile

It's not quite how I wanted to do it... but it'll work
This commit is contained in:
2025-02-26 21:14:08 +00:00
parent df8347577e
commit 3c4f4ce0ad

View File

@@ -63,23 +63,20 @@ fn waste_widget(cards_in_waste: &Vec<card_stuffs::Card>) -> List {
.border_type(BorderType::Rounded)) .border_type(BorderType::Rounded))
} }
fn deck_widget(cards_in_deck: &Vec<card_stuffs::Card>) -> List<'static> { fn deck_widget(cards_in_deck: &Vec<card_stuffs::Card>) -> Paragraph<'static> {
let hidden_card = [ let card_image = format!(
format!("#############"), "#############\n\
format!("#############"), #############\n\
format!("### Cards ###"), ### Cards ###\n\
format!("### Left ###"), ### Left ###\n\
format!("#############"), #############\n\
format!("#### {:02} #####", cards_in_deck.len()), #### {:02} #####\n\
format!("#############"), #############\n\
format!("#############"), #############\n\
format!("#############"), #############", cards_in_deck.len()
]; );
let card_image: Vec<ListItem> = hidden_card.iter().map(|m| {
ListItem::new(m.to_string()) Paragraph::new(card_image)
})
.collect();
List::new(card_image)
.block(Block::new() .block(Block::new()
.borders(Borders::ALL) .borders(Borders::ALL)
.border_type(BorderType::Rounded)) .border_type(BorderType::Rounded))
@@ -123,6 +120,24 @@ fn card_widget<'a>(card: &'a card_stuffs::Card, top: bool, highlight: bool, sele
.border_type(BorderType::Rounded)) .border_type(BorderType::Rounded))
} }
fn partially_covered_card(card: &card_stuffs::Card) -> Paragraph {
let card_image = format!(
"{value}{suit}", value=card.value, suit=card.suit
);
let card_style = match card.suit.colour() {
card_stuffs::Colour::Black => Style::new().black().bg(Color::White),
card_stuffs::Colour::Red => Style::new().red().bg(Color::White),
};
let borders = Borders::TOP | Borders::LEFT | Borders::BOTTOM;
let border_style = Style::new().white().on_black();
Paragraph::new(card_image)
.style(card_style)
.block(Block::new()
.style(border_style)
.borders(borders)
.border_type(BorderType::Rounded))
}
struct CardWidget { struct CardWidget {
card: card_stuffs::Card, card: card_stuffs::Card,
// put display stuff in here? // put display stuff in here?
@@ -193,7 +208,7 @@ impl App {
let horizontal = Layout::horizontal([ let horizontal = Layout::horizontal([
Constraint::Length(CARD_WIDTH), Constraint::Length(CARD_WIDTH),
Constraint::Length(3 + 3 + CARD_WIDTH), // 3+3 for 2 cards shown underneath Constraint::Length(3 + 3 + CARD_WIDTH), // for 2 cards shown underneath
Constraint::Length(CARD_WIDTH), Constraint::Length(CARD_WIDTH),
Constraint::Length(CARD_WIDTH), Constraint::Length(CARD_WIDTH),
Constraint::Length(CARD_WIDTH), Constraint::Length(CARD_WIDTH),
@@ -203,10 +218,25 @@ impl App {
let [deck_area, waste_area, fa, fb, fc, fd] = horizontal.areas(dwf_area); let [deck_area, waste_area, fa, fb, fc, fd] = horizontal.areas(dwf_area);
let foundation_areas = [fa, fb, fc, fd]; let foundation_areas = [fa, fb, fc, fd];
let horizontal = Layout::horizontal([
Constraint::Length(3),
Constraint::Length(3),
Constraint::Length(CARD_WIDTH),
]);
let [w1, w2, waste_area] = horizontal.areas(waste_area);
frame.render_widget( frame.render_widget(
deck_widget(&self.cards.deck), deck_widget(&self.cards.deck),
deck_area deck_area
); );
frame.render_widget(
partially_covered_card(&self.cards.piles[0][0]),
w1
);
frame.render_widget(
partially_covered_card(&self.cards.piles[1][0]),
w2
);
frame.render_widget( frame.render_widget(
waste_widget(&self.cards.waste), waste_widget(&self.cards.waste),
waste_area waste_area