diff --git a/src/main.zig b/src/main.zig index 639f2ab..e37aa26 100644 --- a/src/main.zig +++ b/src/main.zig @@ -655,9 +655,16 @@ pub fn moveUp(pressed: bool) !void { return try menu_fn(.up); } - // move which pile is hovered + // move which card/pile is hovered const snapshot = &history.items[history.items.len - 1]; if (hovered_deck) |hovered| { + if (hovered_card != null and hovered.getDeckKind() == .stack) { + const top_of_movable_stack = indexOfTopOfStack(snapshot.getDeck(hovered)); + if (hovered_card.? > top_of_movable_stack) { + hovered_card = hovered_card.? - 1; + return; + } + } hovered_deck = hovered.getDeckUpwards(last_hovered_stack); } else { hovered_deck = .draw_pile; @@ -684,9 +691,15 @@ pub fn moveDown(pressed: bool) !void { return try menu_fn(.down); } - // move which pile is hovered + // move which card/pile is hovered const snapshot = &history.items[history.items.len - 1]; if (hovered_deck) |hovered| { + if (hovered_card != null and hovered.getDeckKind() == .stack) { + if (hovered_card.? + 1 < snapshot.deck_card_count[@intFromEnum(hovered)]) { + hovered_card = hovered_card.? + 1; + return; + } + } hovered_deck = hovered.getDeckDownwards(last_hovered_stack); } else { hovered_deck = .draw_pile;