Started changing List to Paragraph
List has a bunch of extra bits I don't need.
This commit is contained in:
@@ -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),
|
||||||
|
|||||||
Reference in New Issue
Block a user