mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-22 12:35:14 +00:00
LibCards+Games: Make CardGame::add_stack()
fallible
And while we're at it, handle the CardStack allocation (and failure thereof) internally.
This commit is contained in:
parent
08ff87b3ce
commit
d7ba577c90
Notes:
sideshowbarker
2024-07-17 05:19:06 +09:00
Author: https://github.com/AtkinsSJ Commit: https://github.com/SerenityOS/serenity/commit/d7ba577c90 Pull-request: https://github.com/SerenityOS/serenity/pull/16851 Reviewed-by: https://github.com/linusg Reviewed-by: https://github.com/trflynn89 ✅
4 changed files with 24 additions and 23 deletions
|
@ -21,20 +21,20 @@ static constexpr int s_timer_interval_ms = 1000 / 60;
|
|||
|
||||
Game::Game()
|
||||
{
|
||||
add_stack(adopt_ref(*new CardStack({ 10, 10 }, CardStack::Type::Stock)));
|
||||
add_stack(adopt_ref(*new CardStack({ 10 + Card::width + 10, 10 }, CardStack::Type::Waste)));
|
||||
add_stack(adopt_ref(*new CardStack({ 10 + Card::width + 10, 10 }, CardStack::Type::Play, stack_at_location(Waste))));
|
||||
add_stack(adopt_ref(*new CardStack({ Game::width - 4 * Card::width - 40, 10 }, CardStack::Type::Foundation)));
|
||||
add_stack(adopt_ref(*new CardStack({ Game::width - 3 * Card::width - 30, 10 }, CardStack::Type::Foundation)));
|
||||
add_stack(adopt_ref(*new CardStack({ Game::width - 2 * Card::width - 20, 10 }, CardStack::Type::Foundation)));
|
||||
add_stack(adopt_ref(*new CardStack({ Game::width - Card::width - 10, 10 }, CardStack::Type::Foundation)));
|
||||
add_stack(adopt_ref(*new CardStack({ 10, 10 + Card::height + 10 }, CardStack::Type::Normal)));
|
||||
add_stack(adopt_ref(*new CardStack({ 10 + Card::width + 10, 10 + Card::height + 10 }, CardStack::Type::Normal)));
|
||||
add_stack(adopt_ref(*new CardStack({ 10 + 2 * Card::width + 20, 10 + Card::height + 10 }, CardStack::Type::Normal)));
|
||||
add_stack(adopt_ref(*new CardStack({ 10 + 3 * Card::width + 30, 10 + Card::height + 10 }, CardStack::Type::Normal)));
|
||||
add_stack(adopt_ref(*new CardStack({ 10 + 4 * Card::width + 40, 10 + Card::height + 10 }, CardStack::Type::Normal)));
|
||||
add_stack(adopt_ref(*new CardStack({ 10 + 5 * Card::width + 50, 10 + Card::height + 10 }, CardStack::Type::Normal)));
|
||||
add_stack(adopt_ref(*new CardStack({ 10 + 6 * Card::width + 60, 10 + Card::height + 10 }, CardStack::Type::Normal)));
|
||||
MUST(add_stack(Gfx::IntPoint { 10, 10 }, CardStack::Type::Stock));
|
||||
MUST(add_stack(Gfx::IntPoint { 10 + Card::width + 10, 10 }, CardStack::Type::Waste));
|
||||
MUST(add_stack(Gfx::IntPoint { 10 + Card::width + 10, 10 }, CardStack::Type::Play, stack_at_location(Waste)));
|
||||
MUST(add_stack(Gfx::IntPoint { Game::width - 4 * Card::width - 40, 10 }, CardStack::Type::Foundation));
|
||||
MUST(add_stack(Gfx::IntPoint { Game::width - 3 * Card::width - 30, 10 }, CardStack::Type::Foundation));
|
||||
MUST(add_stack(Gfx::IntPoint { Game::width - 2 * Card::width - 20, 10 }, CardStack::Type::Foundation));
|
||||
MUST(add_stack(Gfx::IntPoint { Game::width - Card::width - 10, 10 }, CardStack::Type::Foundation));
|
||||
MUST(add_stack(Gfx::IntPoint { 10, 10 + Card::height + 10 }, CardStack::Type::Normal));
|
||||
MUST(add_stack(Gfx::IntPoint { 10 + Card::width + 10, 10 + Card::height + 10 }, CardStack::Type::Normal));
|
||||
MUST(add_stack(Gfx::IntPoint { 10 + 2 * Card::width + 20, 10 + Card::height + 10 }, CardStack::Type::Normal));
|
||||
MUST(add_stack(Gfx::IntPoint { 10 + 3 * Card::width + 30, 10 + Card::height + 10 }, CardStack::Type::Normal));
|
||||
MUST(add_stack(Gfx::IntPoint { 10 + 4 * Card::width + 40, 10 + Card::height + 10 }, CardStack::Type::Normal));
|
||||
MUST(add_stack(Gfx::IntPoint { 10 + 5 * Card::width + 50, 10 + Card::height + 10 }, CardStack::Type::Normal));
|
||||
MUST(add_stack(Gfx::IntPoint { 10 + 6 * Card::width + 60, 10 + Card::height + 10 }, CardStack::Type::Normal));
|
||||
}
|
||||
|
||||
static float rand_float()
|
||||
|
|
|
@ -22,11 +22,11 @@ static constexpr int s_timer_interval_ms = 1000 / 60;
|
|||
|
||||
Game::Game()
|
||||
{
|
||||
add_stack(adopt_ref(*new CardStack({ 10, Game::height - Card::height - 10 }, CardStack::Type::Waste)));
|
||||
add_stack(adopt_ref(*new CardStack({ Game::width - Card::width - 10, Game::height - Card::height - 10 }, CardStack::Type::Stock)));
|
||||
MUST(add_stack(Gfx::IntPoint { 10, Game::height - Card::height - 10 }, CardStack::Type::Waste));
|
||||
MUST(add_stack(Gfx::IntPoint { Game::width - Card::width - 10, Game::height - Card::height - 10 }, CardStack::Type::Stock));
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
add_stack(adopt_ref(*new CardStack({ 10 + i * (Card::width + 10), 10 }, CardStack::Type::Normal)));
|
||||
MUST(add_stack(Gfx::IntPoint { 10 + i * (Card::width + 10), 10 }, CardStack::Type::Normal));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -33,11 +33,6 @@ CardGame::CardGame()
|
|||
set_background_color(background_color.value_or(Color::from_rgb(0x008000)));
|
||||
}
|
||||
|
||||
void CardGame::add_stack(NonnullRefPtr<CardStack> stack)
|
||||
{
|
||||
m_stacks.append(move(stack));
|
||||
}
|
||||
|
||||
void CardGame::mark_intersecting_stacks_dirty(Cards::Card const& intersecting_card)
|
||||
{
|
||||
for (auto& stack : stacks()) {
|
||||
|
|
|
@ -28,7 +28,13 @@ public:
|
|||
NonnullRefPtrVector<CardStack>& stacks() { return m_stacks; }
|
||||
NonnullRefPtrVector<CardStack> const& stacks() const { return m_stacks; }
|
||||
CardStack& stack_at_location(int location) { return m_stacks[location]; }
|
||||
void add_stack(NonnullRefPtr<CardStack>);
|
||||
|
||||
template<class... Args>
|
||||
ErrorOr<void> add_stack(Args&&... args)
|
||||
{
|
||||
auto stack = TRY(try_make_ref_counted<CardStack>(forward<Args>(args)...));
|
||||
return m_stacks.try_append(move(stack));
|
||||
}
|
||||
void mark_intersecting_stacks_dirty(Card const& intersecting_card);
|
||||
|
||||
bool is_moving_cards() const { return !m_moving_cards.is_empty(); }
|
||||
|
|
Loading…
Add table
Reference in a new issue