mirror of
https://github.com/RGBCube/serenity
synced 2025-06-01 10:18:13 +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;
|
||||
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)
|
||||
pop_waste_to_play_stack();
|
||||
|
|
|
@ -288,7 +288,7 @@ void Game::mousedown_event(GUI::MouseEvent& event)
|
|||
void Game::move_focused_cards(CardStack& stack)
|
||||
{
|
||||
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();
|
||||
remember_move_for_undo(*moving_cards_source_stack(), stack, card_count, was_visible);
|
||||
update_score(-1);
|
||||
|
|
|
@ -83,17 +83,19 @@ RefPtr<CardStack> CardGame::find_stack_to_drop_on(CardStack::MovementRule moveme
|
|||
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));
|
||||
for (auto& to_intersect : moving_cards()) {
|
||||
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();
|
||||
}
|
||||
|
||||
update(moving_cards_source_stack()->bounding_box());
|
||||
update(stack.bounding_box());
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
void CardGame::clear_moving_cards()
|
||||
|
|
|
@ -44,7 +44,7 @@ public:
|
|||
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);
|
||||
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();
|
||||
|
||||
bool is_previewing_card() const { return !m_previewed_card_stack.is_null(); }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue