Started changing List to Paragraph

List has a bunch of extra bits I don't need.
This commit is contained in:
2025-02-26 20:48:49 +00:00
parent 0ae0bf73b2
commit df8347577e

View File

@@ -3,10 +3,11 @@ use card_stuffs::{self};
use crossterm::event::{self, Event, KeyCode, KeyEvent, KeyEventKind}; use crossterm::event::{self, Event, KeyCode, KeyEvent, KeyEventKind};
use ratatui::{ use ratatui::{
buffer::Buffer,
layout::{Constraint, Layout, Rect, Flex}, layout::{Constraint, Layout, Rect, Flex},
style::{Style, Stylize, Color}, style::{Style, Stylize, Color},
text::Line, text::Line,
widgets::{Block, BorderType, Borders, ListItem, List}, widgets::{Block, BorderType, Borders, ListItem, List, Widget, Paragraph},
DefaultTerminal, Frame, DefaultTerminal, Frame,
}; };
@@ -37,6 +38,8 @@ fn waste_widget(cards_in_waste: &Vec<card_stuffs::Card>) -> List {
// a new widget I've make myself... I probably should do that for all cards // a new widget I've make myself... I probably should do that for all cards
// to be toootaly honest // to be toootaly honest
// This (and the rest) probably shouldn't be ListItems
let hidden_card = [ let hidden_card = [
format!("#############"), format!("#############"),
format!("#############"), format!("#############"),
@@ -82,70 +85,75 @@ fn deck_widget(cards_in_deck: &Vec<card_stuffs::Card>) -> List<'static> {
.border_type(BorderType::Rounded)) .border_type(BorderType::Rounded))
} }
fn card_widget<'a>(card: &'a card_stuffs::Card, top: bool, highlight: bool, select: bool) -> List<'a> { fn card_widget<'a>(card: &'a card_stuffs::Card, top: bool, highlight: bool, select: bool) -> Paragraph<'a> {
let five_card = [
format!("{value}{suit} ", value=card.value, suit=card.suit), let card_image = format!(
format!(" "), "{value}{suit}
format!(" {suit} {suit} ", suit=card.suit),
format!(" "), {suit} {suit}
format!(" {suit} ", suit=card.suit),
format!(" "), {suit}
format!(" {suit} {suit} ", suit=card.suit),
format!(" "), {suit} {suit}
format!(" {value}{suit}", value=card.value, suit=card.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),
card_stuffs::Colour::Red => Style::new().red().bg(Color::White), card_stuffs::Colour::Red => Style::new().red().bg(Color::White),
}; };
let card_image: Vec<ListItem> = five_card.iter().map(|m| {
ListItem::new(m.to_string())
.style(card_style)
})
.collect();
let mut borders = Borders::TOP | Borders::LEFT | Borders::RIGHT; let mut borders = Borders::TOP | Borders::LEFT | Borders::RIGHT;
if top { if top {
borders |= Borders::BOTTOM; borders |= Borders::BOTTOM;
} }
let mut border_style = Style::default(); let mut border_style = Style::new().white().on_black();
if highlight { if highlight {
border_style = border_style.fg(Color::Blue); border_style = border_style.fg(Color::Blue);
} else if select { } else if select {
border_style = border_style.fg(Color::Green); border_style = border_style.fg(Color::Green);
} }
List::new(card_image) Paragraph::new(card_image)
.style(card_style)
.block(Block::new() .block(Block::new()
.style(border_style) .style(border_style)
.borders(borders) .borders(borders)
.border_type(BorderType::Rounded)) .border_type(BorderType::Rounded))
} }
fn turned_over_card(top: bool) -> List<'static> { struct CardWidget {
let hidden_card = [ card: card_stuffs::Card,
format!("#############"), // put display stuff in here?
format!("#############"), }
format!("#############"),
format!("#############"), impl Widget for CardWidget {
format!("#############"), fn render(self, area: Rect, buf: &mut Buffer) {
format!("#############"), let mut border_style = Style::default();
format!("#############"),
format!("#############"), }
format!("#############"), }
];
let card: Vec<ListItem> = hidden_card.iter().map(|m| { fn facedown_card(top: bool) -> Paragraph<'static> {
ListItem::new(m.to_string()) let hidden_card = format!(
}) "#############\n\
.collect(); #############\n\
#############\n\
#############\n\
#############\n\
#############\n\
#############\n\
#############\n\
#############"
);
let mut borders = Borders::TOP | Borders::LEFT | Borders::RIGHT; let mut borders = Borders::TOP | Borders::LEFT | Borders::RIGHT;
if top { if top {
borders |= Borders::BOTTOM; borders |= Borders::BOTTOM;
} }
List::new(card) Paragraph::new(hidden_card)
.block(Block::new() .block(Block::new()
.borders(borders) .borders(borders)
.border_type(BorderType::Rounded)) .border_type(BorderType::Rounded))
@@ -193,7 +201,7 @@ impl App {
]).flex(Flex::SpaceAround); ]).flex(Flex::SpaceAround);
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];
frame.render_widget( frame.render_widget(
deck_widget(&self.cards.deck), deck_widget(&self.cards.deck),
@@ -204,6 +212,13 @@ impl App {
waste_area waste_area
); );
for fa in foundation_areas {
frame.render_widget(
facedown_card(true),
fa
);
}
let horizontal = Layout::horizontal([ let horizontal = Layout::horizontal([
Constraint::Length(CARD_WIDTH), Constraint::Length(CARD_WIDTH),
Constraint::Length(CARD_WIDTH), Constraint::Length(CARD_WIDTH),