diff --git a/card_stuffs/src/main.rs b/card_stuffs/src/main.rs index 68f25db..c077ddf 100644 --- a/card_stuffs/src/main.rs +++ b/card_stuffs/src/main.rs @@ -269,7 +269,10 @@ fn handle_move_highlighted(current_position: &CardPosition, direction: Direction match direction { Direction::Up | Direction::Left => { CardPosition::TopWaste }, Direction::Right => { CardPosition::Foundation(0) } - Direction::Down => { CardPosition:: Pile(0, 0) } + Direction::Down => { + let lowest_shown_card = cards.clone().lowest_visible_card_in_pile_from_index(1, 0); + CardPosition:: Pile(1, lowest_shown_card) + } } }, CardPosition::Pile(p, i) => { @@ -284,7 +287,14 @@ fn handle_move_highlighted(current_position: &CardPosition, direction: Direction Direction::Up => { let lowest_shown_card = cards.clone().lowest_visible_card_in_pile_from_index(*p, 0); if *i == lowest_shown_card { - CardPosition::TopWaste // FIXME - should move to the appropriate Waste or Foundation + match *p { + 0 | 1 => CardPosition::TopWaste, + 2 | 3 => CardPosition::Foundation(0), + 4 => CardPosition::Foundation(1), + 5 => CardPosition::Foundation(2), + 6 => CardPosition::Foundation(3), + _ => panic!("Should be on Pile over 6") + } } else { CardPosition::Pile(*p, *i - 1) } @@ -329,21 +339,21 @@ fn handle_move_highlighted(current_position: &CardPosition, direction: Direction Direction::Down => { match f { 0 => { - let i = cards.clone().lowest_visible_card_in_pile_from_index(2, 0); - CardPosition::Pile(2, i) - }, - 1 => { let i = cards.clone().lowest_visible_card_in_pile_from_index(3, 0); CardPosition::Pile(3, i) }, - 2 => { + 1 => { let i = cards.clone().lowest_visible_card_in_pile_from_index(4, 0); CardPosition::Pile(4, i) }, - 3 => { + 2 => { let i = cards.clone().lowest_visible_card_in_pile_from_index(5, 0); CardPosition::Pile(5, i) }, + 3 => { + let i = cards.clone().lowest_visible_card_in_pile_from_index(6, 0); + CardPosition::Pile(6, i) + }, _ => panic!("Can't be on a foundation this high") } }