mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 15:27:35 +00:00
LibCards+Game: Return ErrorOr from CardGame::drop_cards_on_stack()
This commit is contained in:
parent
8b3a94ffbc
commit
0855e9f014
4 changed files with 7 additions and 5 deletions
|
@ -297,7 +297,7 @@ void Game::mouseup_event(GUI::MouseEvent& event)
|
||||||
auto& stack = *target_stack;
|
auto& stack = *target_stack;
|
||||||
remember_move_for_undo(*moving_cards_source_stack(), stack, moving_cards());
|
remember_move_for_undo(*moving_cards_source_stack(), stack, moving_cards());
|
||||||
|
|
||||||
drop_cards_on_stack(stack, Cards::CardStack::MovementRule::Alternating);
|
drop_cards_on_stack(stack, Cards::CardStack::MovementRule::Alternating).release_value_but_fixme_should_propagate_errors();
|
||||||
|
|
||||||
if (moving_cards_source_stack()->type() == CardStack::Type::Play)
|
if (moving_cards_source_stack()->type() == CardStack::Type::Play)
|
||||||
pop_waste_to_play_stack();
|
pop_waste_to_play_stack();
|
||||||
|
|
|
@ -288,7 +288,7 @@ void Game::mousedown_event(GUI::MouseEvent& event)
|
||||||
void Game::move_focused_cards(CardStack& stack)
|
void Game::move_focused_cards(CardStack& stack)
|
||||||
{
|
{
|
||||||
auto card_count = moving_cards().size();
|
auto card_count = moving_cards().size();
|
||||||
drop_cards_on_stack(stack, Cards::CardStack::MovementRule::Any);
|
drop_cards_on_stack(stack, Cards::CardStack::MovementRule::Any).release_value_but_fixme_should_propagate_errors();
|
||||||
bool was_visible = moving_cards_source_stack()->is_empty() || !moving_cards_source_stack()->peek().is_upside_down();
|
bool was_visible = moving_cards_source_stack()->is_empty() || !moving_cards_source_stack()->peek().is_upside_down();
|
||||||
remember_move_for_undo(*moving_cards_source_stack(), stack, card_count, was_visible);
|
remember_move_for_undo(*moving_cards_source_stack(), stack, card_count, was_visible);
|
||||||
update_score(-1);
|
update_score(-1);
|
||||||
|
|
|
@ -83,17 +83,19 @@ RefPtr<CardStack> CardGame::find_stack_to_drop_on(CardStack::MovementRule moveme
|
||||||
return closest_stack;
|
return closest_stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CardGame::drop_cards_on_stack(Cards::CardStack& stack, CardStack::MovementRule movement_rule)
|
ErrorOr<void> CardGame::drop_cards_on_stack(Cards::CardStack& stack, CardStack::MovementRule movement_rule)
|
||||||
{
|
{
|
||||||
VERIFY(stack.is_allowed_to_push(m_moving_cards.at(0), m_moving_cards.size(), movement_rule));
|
VERIFY(stack.is_allowed_to_push(m_moving_cards.at(0), m_moving_cards.size(), movement_rule));
|
||||||
for (auto& to_intersect : moving_cards()) {
|
for (auto& to_intersect : moving_cards()) {
|
||||||
mark_intersecting_stacks_dirty(to_intersect);
|
mark_intersecting_stacks_dirty(to_intersect);
|
||||||
stack.push(to_intersect).release_value_but_fixme_should_propagate_errors();
|
TRY(stack.push(to_intersect));
|
||||||
(void)moving_cards_source_stack()->pop();
|
(void)moving_cards_source_stack()->pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
update(moving_cards_source_stack()->bounding_box());
|
update(moving_cards_source_stack()->bounding_box());
|
||||||
update(stack.bounding_box());
|
update(stack.bounding_box());
|
||||||
|
|
||||||
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
void CardGame::clear_moving_cards()
|
void CardGame::clear_moving_cards()
|
||||||
|
|
|
@ -44,7 +44,7 @@ public:
|
||||||
RefPtr<CardStack> moving_cards_source_stack() const { return m_moving_cards_source_stack; }
|
RefPtr<CardStack> moving_cards_source_stack() const { return m_moving_cards_source_stack; }
|
||||||
void pick_up_cards_from_stack(CardStack&, Gfx::IntPoint click_location, CardStack::MovementRule);
|
void pick_up_cards_from_stack(CardStack&, Gfx::IntPoint click_location, CardStack::MovementRule);
|
||||||
RefPtr<CardStack> find_stack_to_drop_on(CardStack::MovementRule) const;
|
RefPtr<CardStack> find_stack_to_drop_on(CardStack::MovementRule) const;
|
||||||
void drop_cards_on_stack(CardStack&, CardStack::MovementRule);
|
ErrorOr<void> drop_cards_on_stack(CardStack&, CardStack::MovementRule);
|
||||||
void clear_moving_cards();
|
void clear_moving_cards();
|
||||||
|
|
||||||
bool is_previewing_card() const { return !m_previewed_card_stack.is_null(); }
|
bool is_previewing_card() const { return !m_previewed_card_stack.is_null(); }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue