Deck to waste and waste to deck working-ish
This commit is contained in:
@@ -204,18 +204,26 @@ pub struct Klondike {
|
|||||||
pub foundation: [Vec<Card>; 4], // 4 = len of num suits
|
pub foundation: [Vec<Card>; 4], // 4 = len of num suits
|
||||||
_max_num_passes_through_deck: NumPassesThroughDeck,
|
_max_num_passes_through_deck: NumPassesThroughDeck,
|
||||||
_current_num_passes_through_deck: u64,
|
_current_num_passes_through_deck: u64,
|
||||||
_num_cards_turned: u8,
|
num_cards_turned: u8,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Klondike {
|
impl Klondike {
|
||||||
pub fn draw(self: &mut Self) {
|
pub fn deck_to_waste(self: &mut Self) {
|
||||||
// completely temporary
|
for _ in 0..self.num_cards_turned {
|
||||||
let c1 = self.deck.pop().unwrap();
|
let card = self.deck.pop();
|
||||||
let c2 = self.deck.pop().unwrap();
|
match card {
|
||||||
let c3 = self.deck.pop().unwrap();
|
None => (),
|
||||||
self.waste.push(c1);
|
Some(c) => self.waste.push(c),
|
||||||
self.waste.push(c2);
|
}
|
||||||
self.waste.push(c3);
|
}
|
||||||
|
}
|
||||||
|
pub fn waste_to_deck(self: &mut Self) {
|
||||||
|
if self.deck.len() != 0 {
|
||||||
|
// no!
|
||||||
|
} else {
|
||||||
|
self.deck = self.waste.clone();
|
||||||
|
self.waste = vec![];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,7 +248,7 @@ impl Default for Klondike {
|
|||||||
foundation: [Vec::new(), Vec::new(), Vec::new(), Vec::new()], // is this really the best way?
|
foundation: [Vec::new(), Vec::new(), Vec::new(), Vec::new()], // is this really the best way?
|
||||||
_max_num_passes_through_deck: NumPassesThroughDeck::Unlimited,
|
_max_num_passes_through_deck: NumPassesThroughDeck::Unlimited,
|
||||||
_current_num_passes_through_deck: 0,
|
_current_num_passes_through_deck: 0,
|
||||||
_num_cards_turned: 3,
|
num_cards_turned: 3,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,18 +25,16 @@ const CARD_HEIGHT: u16 = 11;
|
|||||||
const CARD_WIDTH: u16 = 15;
|
const CARD_WIDTH: u16 = 15;
|
||||||
|
|
||||||
fn draw_waste(cards_in_waste: &Vec<card_stuffs::Card>, area: Rect, frame: &mut Frame) {
|
fn draw_waste(cards_in_waste: &Vec<card_stuffs::Card>, area: Rect, frame: &mut Frame) {
|
||||||
|
|
||||||
let horizontal = Layout::horizontal([
|
let horizontal = Layout::horizontal([
|
||||||
Constraint::Length(3),
|
Constraint::Length(3),
|
||||||
Constraint::Length(3),
|
Constraint::Length(3),
|
||||||
Constraint::Length(CARD_WIDTH),
|
Constraint::Length(CARD_WIDTH),
|
||||||
]);
|
]);
|
||||||
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 this
|
||||||
if cards_in_waste.len() == 0 {
|
if cards_in_waste.len() == 0 {
|
||||||
frame.render_widget(
|
frame.render_widget(
|
||||||
// TODO too tall for some reason
|
|
||||||
empty_pile(),
|
empty_pile(),
|
||||||
top_waste
|
top_waste
|
||||||
);
|
);
|
||||||
@@ -332,7 +330,8 @@ impl App {
|
|||||||
fn handle_key_event(&mut self, key_event: KeyEvent) {
|
fn handle_key_event(&mut self, key_event: KeyEvent) {
|
||||||
match key_event.code {
|
match key_event.code {
|
||||||
KeyCode::Char('q') => self.exit(),
|
KeyCode::Char('q') => self.exit(),
|
||||||
KeyCode::Char('d') => self.cards.draw(),
|
KeyCode::Char('d') => self.cards.deck_to_waste(),
|
||||||
|
KeyCode::Char('w') => self.cards.waste_to_deck(),
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user