mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 08:47:44 +00:00
Solitaire: Add key combo to dump the state of the layout
Useful for chasing down bugs.
This commit is contained in:
parent
ce030ca584
commit
ddb278ab85
5 changed files with 85 additions and 1 deletions
|
@ -7,6 +7,7 @@
|
|||
#pragma once
|
||||
|
||||
#include "Card.h"
|
||||
#include <AK/Format.h>
|
||||
#include <AK/Vector.h>
|
||||
|
||||
namespace Solitaire {
|
||||
|
@ -28,6 +29,7 @@ public:
|
|||
bool is_empty() const { return m_stack.is_empty(); }
|
||||
bool is_focused() const { return m_focused; }
|
||||
Type type() const { return m_type; }
|
||||
const NonnullRefPtrVector<Card>& stack() const { return m_stack; }
|
||||
size_t count() const { return m_stack.size(); }
|
||||
const Card& peek() const { return m_stack.last(); }
|
||||
Card& peek() { return m_stack.last(); }
|
||||
|
@ -84,3 +86,41 @@ private:
|
|||
};
|
||||
|
||||
}
|
||||
|
||||
template<>
|
||||
struct AK::Formatter<Solitaire::CardStack> : Formatter<FormatString> {
|
||||
void format(FormatBuilder& builder, const Solitaire::CardStack& stack)
|
||||
{
|
||||
StringView type;
|
||||
|
||||
switch (stack.type()) {
|
||||
case Solitaire::CardStack::Type::Stock:
|
||||
type = "Stock"sv;
|
||||
break;
|
||||
case Solitaire::CardStack::Type::Normal:
|
||||
type = "Normal"sv;
|
||||
break;
|
||||
case Solitaire::CardStack::Type::Foundation:
|
||||
type = "Foundation"sv;
|
||||
break;
|
||||
case Solitaire::CardStack::Type::Waste:
|
||||
type = "Waste"sv;
|
||||
break;
|
||||
case Solitaire::CardStack::Type::Play:
|
||||
type = "Play"sv;
|
||||
break;
|
||||
default:
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
|
||||
StringBuilder cards;
|
||||
bool first_card = true;
|
||||
|
||||
for (const auto& card : stack.stack()) {
|
||||
cards.appendff("{}{}", (first_card ? "" : " "), card);
|
||||
first_card = false;
|
||||
}
|
||||
|
||||
Formatter<FormatString>::format(builder, "{:<10} {:>16}: {}", type, stack.bounding_box(), cards.build());
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue