mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 18:57:34 +00:00
LibCards: Combine CardStack constructors
And while I'm at it, clarify the name of `associated_stack` to `covered_stack`. It's used in exactly one way, so we can make the code clearer by giving it a less generic name.
This commit is contained in:
parent
bfa9ae809f
commit
21a818ab50
2 changed files with 8 additions and 16 deletions
|
@ -15,18 +15,8 @@ CardStack::CardStack()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
CardStack::CardStack(Gfx::IntPoint const& position, Type type)
|
CardStack::CardStack(Gfx::IntPoint const& position, Type type, RefPtr<CardStack> covered_stack)
|
||||||
: m_position(position)
|
: m_covered_stack(move(covered_stack))
|
||||||
, m_type(type)
|
|
||||||
, m_rules(rules_for_type(type))
|
|
||||||
, m_base(m_position, { Card::width, Card::height })
|
|
||||||
{
|
|
||||||
VERIFY(type != Type::Invalid);
|
|
||||||
calculate_bounding_box();
|
|
||||||
}
|
|
||||||
|
|
||||||
CardStack::CardStack(Gfx::IntPoint const& position, Type type, NonnullRefPtr<CardStack> associated_stack)
|
|
||||||
: m_associated_stack(move(associated_stack))
|
|
||||||
, m_position(position)
|
, m_position(position)
|
||||||
, m_type(type)
|
, m_type(type)
|
||||||
, m_rules(rules_for_type(type))
|
, m_rules(rules_for_type(type))
|
||||||
|
@ -49,7 +39,7 @@ void CardStack::paint(GUI::Painter& painter, Gfx::Color const& background_color)
|
||||||
for (const auto& card : m_stack)
|
for (const auto& card : m_stack)
|
||||||
number_of_moving_cards += card.is_moving();
|
number_of_moving_cards += card.is_moving();
|
||||||
|
|
||||||
if (m_associated_stack && !m_associated_stack->is_empty())
|
if (m_covered_stack && !m_covered_stack->is_empty())
|
||||||
return false;
|
return false;
|
||||||
if (!is_empty() && (m_stack.size() != number_of_moving_cards))
|
if (!is_empty() && (m_stack.size() != number_of_moving_cards))
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -31,8 +31,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
CardStack();
|
CardStack();
|
||||||
CardStack(Gfx::IntPoint const& position, Type type);
|
CardStack(Gfx::IntPoint const& position, Type type, RefPtr<CardStack> covered_stack = nullptr);
|
||||||
CardStack(Gfx::IntPoint const& position, Type type, NonnullRefPtr<CardStack> associated_stack);
|
|
||||||
|
|
||||||
bool is_empty() const { return m_stack.is_empty(); }
|
bool is_empty() const { return m_stack.is_empty(); }
|
||||||
bool is_focused() const { return m_focused; }
|
bool is_focused() const { return m_focused; }
|
||||||
|
@ -83,7 +82,10 @@ private:
|
||||||
|
|
||||||
void calculate_bounding_box();
|
void calculate_bounding_box();
|
||||||
|
|
||||||
RefPtr<CardStack> m_associated_stack;
|
// An optional stack that this stack is painted on top of.
|
||||||
|
// eg, in Solitaire the Play stack is positioned over the Waste stack.
|
||||||
|
RefPtr<CardStack> m_covered_stack;
|
||||||
|
|
||||||
NonnullRefPtrVector<Card> m_stack;
|
NonnullRefPtrVector<Card> m_stack;
|
||||||
Vector<Gfx::IntPoint> m_stack_positions;
|
Vector<Gfx::IntPoint> m_stack_positions;
|
||||||
Gfx::IntPoint m_position;
|
Gfx::IntPoint m_position;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue