Spider: Automatically reveal top cards

This matches basically all other Spider implementations I've played,
and makes playing much easier :)

I have left click-to-reveal in place, but mostly incase there is a
condition I've forgotten about.
This commit is contained in:
Jamie Mansfield 2021-07-15 17:00:07 +01:00 committed by Andreas Kling
parent 1021aba226
commit c0bc884295
2 changed files with 17 additions and 0 deletions

View file

@ -114,6 +114,18 @@ void Game::draw_cards()
update();
}
void Game::ensure_top_card_is_visible(NonnullRefPtr<CardStack> stack)
{
if (stack->is_empty())
return;
auto& top_card = stack->peek();
if (top_card.is_upside_down()) {
top_card.set_upside_down(false);
update(top_card.rect());
}
}
void Game::detect_full_stacks()
{
auto& completed_stack = stack(Completed);
@ -143,6 +155,8 @@ void Game::detect_full_stacks()
completed_stack.push(current_pile.pop());
}
ensure_top_card_is_visible(current_pile);
update_score(101);
}
@ -301,6 +315,8 @@ void Game::mouseup_event(GUI::MouseEvent& event)
detect_full_stacks();
ensure_top_card_is_visible(*m_focused_stack);
rebound = false;
break;
}

View file

@ -67,6 +67,7 @@ private:
void start_timer_if_necessary();
void update_score(int delta);
void draw_cards();
void ensure_top_card_is_visible(NonnullRefPtr<CardStack> stack);
void detect_full_stacks();
void detect_victory();