1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 11:37:44 +00:00

Spider: Make double-click skip the new-game animation

This commit is contained in:
Sam Atkins 2023-01-28 17:47:33 +00:00 committed by Linus Groh
parent 8744e8b561
commit ced59fb3a0
2 changed files with 52 additions and 34 deletions

View file

@ -368,13 +368,19 @@ void Game::mousemove_event(GUI::MouseEvent& event)
m_mouse_down_location = click_location;
}
void Game::timer_event(Core::TimerEvent&)
void Game::doubleclick_event(GUI::MouseEvent& event)
{
GUI::Frame::doubleclick_event(event);
if (m_state == State::NewGameAnimation) {
if (m_new_game_animation_delay < new_game_animation_delay) {
++m_new_game_animation_delay;
} else {
m_new_game_animation_delay = 0;
while (m_state == State::NewGameAnimation)
deal_next_card();
return;
}
}
void Game::deal_next_card()
{
auto& current_pile = stack_at_location(piles.at(m_new_game_animation_pile));
// for first 4 piles, draw 6 cards
@ -404,6 +410,16 @@ void Game::timer_event(Core::TimerEvent&)
m_state = State::WaitingForNewGame;
stop_timer();
}
}
void Game::timer_event(Core::TimerEvent&)
{
if (m_state == State::NewGameAnimation) {
if (m_new_game_animation_delay < new_game_animation_delay) {
++m_new_game_animation_delay;
} else {
m_new_game_animation_delay = 0;
deal_next_card();
}
} else if (m_state == State::DrawAnimation) {
if (m_draw_animation_delay < draw_animation_delay) {

View file

@ -92,12 +92,14 @@ private:
void detect_victory();
void move_focused_cards(CardStack& stack);
void clear_hovered_stack();
void deal_next_card();
void paint_event(GUI::PaintEvent&) override;
void mousedown_event(GUI::MouseEvent&) override;
void mouseup_event(GUI::MouseEvent&) override;
void mousemove_event(GUI::MouseEvent&) override;
void timer_event(Core::TimerEvent&) override;
virtual void paint_event(GUI::PaintEvent&) override;
virtual void mousedown_event(GUI::MouseEvent&) override;
virtual void mouseup_event(GUI::MouseEvent&) override;
virtual void mousemove_event(GUI::MouseEvent&) override;
virtual void doubleclick_event(GUI::MouseEvent&) override;
virtual void timer_event(Core::TimerEvent&) override;
Mode m_mode { Mode::SingleSuit };