mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-07 10:33:24 -08:00
[Refactor] Move card identity and card data into CardState (#7425)
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
parent
6f0c5dca12
commit
c9853734ad
6 changed files with 200 additions and 100 deletions
|
|
@ -1,6 +1,9 @@
|
|||
#include "card_state.h"
|
||||
|
||||
#include <QSharedPointer>
|
||||
#include <libcockatrice/card/card_info.h>
|
||||
#include <libcockatrice/card/database/card_database_manager.h>
|
||||
#include <libcockatrice/card/database/card_database_querier.h>
|
||||
|
||||
void CardState::resetState(bool keepAnnotations)
|
||||
{
|
||||
|
|
@ -13,6 +16,56 @@ void CardState::resetState(bool keepAnnotations)
|
|||
attachedTo = nullptr;
|
||||
}
|
||||
|
||||
void CardState::setCardRef(const CardRef &_cardRef)
|
||||
{
|
||||
if (cardRef == _cardRef) {
|
||||
return;
|
||||
}
|
||||
|
||||
const CardRef oldCardRef = cardRef;
|
||||
if (exactCard) {
|
||||
disconnect(exactCard.getCardPtr().data(), nullptr, this, nullptr);
|
||||
}
|
||||
cardRef = _cardRef;
|
||||
|
||||
emit cardRefChanged(oldCardRef, cardRef);
|
||||
refreshCardInfo();
|
||||
}
|
||||
|
||||
void CardState::refreshCardInfo()
|
||||
{
|
||||
exactCard = CardDatabaseManager::query()->getCard(cardRef);
|
||||
|
||||
if (!exactCard && !cardRef.name.isEmpty()) {
|
||||
CardInfo::UiAttributes attributes = {.tableRow = -1};
|
||||
auto info = CardInfo::newInstance(cardRef.name, "", true, {}, {}, {}, {}, attributes);
|
||||
exactCard = ExactCard(info);
|
||||
}
|
||||
if (exactCard) {
|
||||
connect(exactCard.getCardPtr().data(), &CardInfo::pixmapUpdated, this, &CardState::cardPixmapUpdated);
|
||||
}
|
||||
|
||||
emit cardInfoChanged();
|
||||
}
|
||||
|
||||
void CardState::setTapped(bool _tapped, bool canAnimate)
|
||||
{
|
||||
if (tapped == _tapped) {
|
||||
return;
|
||||
}
|
||||
|
||||
tapped = _tapped;
|
||||
emit tappedChanged(tapped, canAnimate);
|
||||
emit stateChanged();
|
||||
}
|
||||
|
||||
void CardState::setFaceDown(bool _facedown)
|
||||
{
|
||||
facedown = _facedown;
|
||||
emit facedownChanged(facedown);
|
||||
emit stateChanged();
|
||||
}
|
||||
|
||||
void CardState::setZone(CardZoneLogic *_zone)
|
||||
{
|
||||
if (zone == _zone) {
|
||||
|
|
@ -110,4 +163,4 @@ void CardState::setAttachedTo(CardItem *_attachedTo)
|
|||
attachedTo = _attachedTo;
|
||||
emit attachedToChanged(_attachedTo);
|
||||
emit stateChanged();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue