Files
Cockatrice/common/deck_list_card_node.h
BruebachL f8c4f774cf [Documentation] Sort *every* file into a doxygen group. (#6198)
* Sort *every* file into a doxygen group.

Took 7 hours 9 minutes

Took 18 seconds

Took 2 minutes

* Lint some ingroup definitions.

Took 10 minutes


Took 2 seconds

* Just include the groups in the Doxyfile in this commit.

Took 3 minutes

* Update some group comments so they link!

Took 14 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
2025-09-30 12:13:32 +02:00

171 lines
5.7 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* @file deck_list_card_node.h
* @brief Defines the DecklistCardNode class, representing a single card entry
* in the deck list tree.
*
* DecklistCardNode is the concrete data-bearing node that corresponds to
* an individual card entry in a deck. It stores the cards name, quantity,
* set information, and provider ID. These nodes live inside an
* InnerDecklistNode (e.g., under Mainboard → Group → Card).
*/
#ifndef COCKATRICE_DECK_LIST_CARD_NODE_H
#define COCKATRICE_DECK_LIST_CARD_NODE_H
#include "abstract_deck_list_card_node.h"
#include "card_ref.h"
/**
* @class DecklistCardNode
* @ingroup DeckModels
* @brief Concrete node type representing an actual card entry in the deck.
*
* This class extends AbstractDecklistCardNode to hold all information
* needed to uniquely identify a card printing within the deck.
*
* ### Role in the hierarchy:
* - Child of an InnerDecklistNode (which groups cards by zone or criteria).
* - Leaf node in the deck tree; it does not contain further children.
*
* ### Data stored:
* - @c name: Cards display name.
* - @c number: Quantity of this card in the deck.
* - @c cardSetShortName: Abbreviation of the set (e.g., "NEO" for Neon Dynasty).
* - @c cardSetNumber: Collector number within the set.
* - @c cardProviderId: External provider identifier (e.g., UUID or MTGJSON ID).
*
* ### Usage:
* - Constructed directly when building a deck list from user input or file.
* - Used by DeckListModel to present cards in Qt views.
* - Convertible to @c CardRef for database lookups or cross-references.
*
* ### Ownership:
* - Owned by its parent InnerDecklistNode.
* - Destroyed automatically when its parent is destroyed.
*/
class DecklistCardNode : public AbstractDecklistCardNode
{
QString name; ///< Display name of the card.
int number; ///< Quantity of this card in the deck.
QString cardSetShortName; ///< Short set code (e.g., "NEO").
QString cardSetNumber; ///< Collector number within the set.
QString cardProviderId; ///< External provider identifier (e.g., UUID).
public:
/**
* @brief Construct a new DecklistCardNode.
*
* @param _name Display name of the card.
* @param _number Quantity of this card (default = 1).
* @param _parent Parent node in the tree (zone or group). May be nullptr.
* @param position Index to insert into parents children. -1 = append.
* @param _cardSetShortName Short set code (e.g., "NEO").
* @param _cardSetNumber Collector number within the set.
* @param _cardProviderId External provider ID (e.g., UUID).
*
* On construction, if a parent is provided, this node is inserted into
* the parents children list automatically.
*/
explicit DecklistCardNode(QString _name = QString(),
int _number = 1,
InnerDecklistNode *_parent = nullptr,
int position = -1,
QString _cardSetShortName = QString(),
QString _cardSetNumber = QString(),
QString _cardProviderId = QString())
: AbstractDecklistCardNode(_parent, position), name(std::move(_name)), number(_number),
cardSetShortName(std::move(_cardSetShortName)), cardSetNumber(std::move(_cardSetNumber)),
cardProviderId(std::move(_cardProviderId))
{
}
/**
* @brief Copy constructor with new parent assignment.
* @param other Existing DecklistCardNode to copy.
* @param _parent Parent node for the copy.
*
* Creates a deep copy of the card nodes properties, but attaches
* the new instance to a different parent in the tree.
*/
explicit DecklistCardNode(DecklistCardNode *other, InnerDecklistNode *_parent);
/// @return The quantity of this card.
int getNumber() const override
{
return number;
}
/// @param _number Set the quantity of this card.
void setNumber(int _number) override
{
number = _number;
}
/// @return The display name of this card.
QString getName() const override
{
return name;
}
/// @param _name Set the display name of this card.
void setName(const QString &_name) override
{
name = _name;
}
/// @return The provider identifier for this card.
QString getCardProviderId() const override
{
return cardProviderId;
}
/// @param _providerId Set the provider identifier for this card.
void setCardProviderId(const QString &_providerId) override
{
cardProviderId = _providerId;
}
/// @return The short set code (e.g., "NEO").
QString getCardSetShortName() const override
{
return cardSetShortName;
}
/// @param _cardSetShortName Set the short set code.
void setCardSetShortName(const QString &_cardSetShortName) override
{
cardSetShortName = _cardSetShortName;
}
/// @return The collector number of this card within its set.
QString getCardCollectorNumber() const override
{
return cardSetNumber;
}
/// @param _cardSetNumber Set the collector number.
void setCardCollectorNumber(const QString &_cardSetNumber) override
{
cardSetNumber = _cardSetNumber;
}
/// @return Always false; card nodes are not deck headers.
[[nodiscard]] bool isDeckHeader() const override
{
return false;
}
/**
* @brief Convert this node to a CardRef.
*
* @return A CardRef with the cards name and provider ID, suitable
* for database lookups or comparison with other card sources.
*/
CardRef toCardRef() const
{
return {name, cardProviderId};
}
};
#endif // COCKATRICE_DECK_LIST_CARD_NODE_H