mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-17 04:27:45 -07:00
Merge 2f1bab6b3a into 5ffe344779
This commit is contained in:
commit
99e1bcb9cc
6 changed files with 44 additions and 13 deletions
|
|
@ -1018,8 +1018,9 @@ void PlayerActions::actCreateAllRelatedCards()
|
||||||
if (!cardRelationAll->getDoesAttach() && !cardRelationAll->getIsVariable()) {
|
if (!cardRelationAll->getDoesAttach() && !cardRelationAll->getIsVariable()) {
|
||||||
dbName = cardRelationAll->getName();
|
dbName = cardRelationAll->getName();
|
||||||
bool persistent = cardRelationAll->getIsPersistent();
|
bool persistent = cardRelationAll->getIsPersistent();
|
||||||
|
bool faceDown = cardRelationAll->getIsFaceDown();
|
||||||
for (int i = 0; i < cardRelationAll->getDefaultCount(); ++i) {
|
for (int i = 0; i < cardRelationAll->getDefaultCount(); ++i) {
|
||||||
createCard(sourceCard, dbName, CardRelationType::DoesNotAttach, persistent);
|
createCard(sourceCard, dbName, CardRelationType::DoesNotAttach, persistent, faceDown);
|
||||||
}
|
}
|
||||||
++tokensTypesCreated;
|
++tokensTypesCreated;
|
||||||
if (tokensTypesCreated == 1) {
|
if (tokensTypesCreated == 1) {
|
||||||
|
|
@ -1034,8 +1035,9 @@ void PlayerActions::actCreateAllRelatedCards()
|
||||||
if (!cardRelationNotExcluded->getDoesAttach() && !cardRelationNotExcluded->getIsVariable()) {
|
if (!cardRelationNotExcluded->getDoesAttach() && !cardRelationNotExcluded->getIsVariable()) {
|
||||||
dbName = cardRelationNotExcluded->getName();
|
dbName = cardRelationNotExcluded->getName();
|
||||||
bool persistent = cardRelationNotExcluded->getIsPersistent();
|
bool persistent = cardRelationNotExcluded->getIsPersistent();
|
||||||
|
bool faceDown = cardRelationNotExcluded->getIsFaceDown();
|
||||||
for (int i = 0; i < cardRelationNotExcluded->getDefaultCount(); ++i) {
|
for (int i = 0; i < cardRelationNotExcluded->getDefaultCount(); ++i) {
|
||||||
createCard(sourceCard, dbName, CardRelationType::DoesNotAttach, persistent);
|
createCard(sourceCard, dbName, CardRelationType::DoesNotAttach, persistent, faceDown);
|
||||||
}
|
}
|
||||||
++tokensTypesCreated;
|
++tokensTypesCreated;
|
||||||
if (tokensTypesCreated == 1) {
|
if (tokensTypesCreated == 1) {
|
||||||
|
|
@ -1073,6 +1075,7 @@ bool PlayerActions::createRelatedFromRelation(const CardItem *sourceCard,
|
||||||
|
|
||||||
const QString dbName = cardRelation->getName();
|
const QString dbName = cardRelation->getName();
|
||||||
const bool persistent = cardRelation->getIsPersistent();
|
const bool persistent = cardRelation->getIsPersistent();
|
||||||
|
const bool faceDown = cardRelation->getIsFaceDown();
|
||||||
|
|
||||||
// Variable relations always use DoesNotAttach, regardless of the count the user
|
// Variable relations always use DoesNotAttach, regardless of the count the user
|
||||||
// entered.
|
// entered.
|
||||||
|
|
@ -1081,7 +1084,7 @@ bool PlayerActions::createRelatedFromRelation(const CardItem *sourceCard,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < variableCount; ++i) {
|
for (int i = 0; i < variableCount; ++i) {
|
||||||
createCard(sourceCard, dbName, CardRelationType::DoesNotAttach, persistent);
|
createCard(sourceCard, dbName, CardRelationType::DoesNotAttach, persistent, faceDown);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -1090,7 +1093,7 @@ bool PlayerActions::createRelatedFromRelation(const CardItem *sourceCard,
|
||||||
|
|
||||||
if (count > 1) {
|
if (count > 1) {
|
||||||
for (int i = 0; i < count; ++i) {
|
for (int i = 0; i < count; ++i) {
|
||||||
createCard(sourceCard, dbName, CardRelationType::DoesNotAttach, persistent);
|
createCard(sourceCard, dbName, CardRelationType::DoesNotAttach, persistent, faceDown);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -1110,7 +1113,7 @@ bool PlayerActions::createRelatedFromRelation(const CardItem *sourceCard,
|
||||||
playCardToTable(sourceCard, false);
|
playCardToTable(sourceCard, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
createCard(sourceCard, dbName, attachType, persistent);
|
createCard(sourceCard, dbName, attachType, persistent, faceDown);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1137,7 +1140,8 @@ void PlayerActions::onRelatedCardCreated(const CardItem *sourceCard, const CardR
|
||||||
void PlayerActions::createCard(const CardItem *sourceCard,
|
void PlayerActions::createCard(const CardItem *sourceCard,
|
||||||
const QString &dbCardName,
|
const QString &dbCardName,
|
||||||
CardRelationType attachType,
|
CardRelationType attachType,
|
||||||
bool persistent)
|
bool persistent,
|
||||||
|
bool faceDown)
|
||||||
{
|
{
|
||||||
CardInfoPtr cardInfo = CardDatabaseManager::query()->getCardInfo(dbCardName);
|
CardInfoPtr cardInfo = CardDatabaseManager::query()->getCardInfo(dbCardName);
|
||||||
|
|
||||||
|
|
@ -1172,6 +1176,7 @@ void PlayerActions::createCard(const CardItem *sourceCard,
|
||||||
cmd.set_destroy_on_zone_change(!persistent);
|
cmd.set_destroy_on_zone_change(!persistent);
|
||||||
cmd.set_x(gridPoint.x());
|
cmd.set_x(gridPoint.x());
|
||||||
cmd.set_y(gridPoint.y());
|
cmd.set_y(gridPoint.y());
|
||||||
|
cmd.set_face_down(faceDown);
|
||||||
|
|
||||||
ExactCard relatedCard =
|
ExactCard relatedCard =
|
||||||
CardDatabaseManager::query()->getCardFromSameSet(cardInfo->getName(), sourceCard->getCard().getPrinting());
|
CardDatabaseManager::query()->getCardFromSameSet(cardInfo->getName(), sourceCard->getCard().getPrinting());
|
||||||
|
|
|
||||||
|
|
@ -240,7 +240,8 @@ private:
|
||||||
void createCard(const CardItem *sourceCard,
|
void createCard(const CardItem *sourceCard,
|
||||||
const QString &dbCardName,
|
const QString &dbCardName,
|
||||||
CardRelationType attach = CardRelationType::DoesNotAttach,
|
CardRelationType attach = CardRelationType::DoesNotAttach,
|
||||||
bool persistent = false);
|
bool persistent = false,
|
||||||
|
bool faceDown = false);
|
||||||
|
|
||||||
void playSelectedCards(QList<CardItem *> selectedCards, bool faceDown = false);
|
void playSelectedCards(QList<CardItem *> selectedCards, bool faceDown = false);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,8 @@ void CardDatabase::refreshCachedReverseRelatedCards()
|
||||||
for (auto *rel : card->getReverseRelatedCards()) {
|
for (auto *rel : card->getReverseRelatedCards()) {
|
||||||
if (auto target = cards.value(rel->getName())) {
|
if (auto target = cards.value(rel->getName())) {
|
||||||
auto *newRel = new CardRelation(card->getName(), rel->getAttachType(), rel->getIsCreateAllExclusion(),
|
auto *newRel = new CardRelation(card->getName(), rel->getAttachType(), rel->getIsCreateAllExclusion(),
|
||||||
rel->getIsVariable(), rel->getDefaultCount(), rel->getIsPersistent());
|
rel->getIsVariable(), rel->getDefaultCount(), rel->getIsPersistent(),
|
||||||
|
rel->getIsFaceDown());
|
||||||
target->addReverseRelatedCards2Me(newRel);
|
target->addReverseRelatedCards2Me(newRel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -329,6 +329,7 @@ void CockatriceXml4Parser::loadCardsFromXml(QXmlStreamReader &xml)
|
||||||
bool exclude = false;
|
bool exclude = false;
|
||||||
bool variable = false;
|
bool variable = false;
|
||||||
bool persistent = false;
|
bool persistent = false;
|
||||||
|
bool facedown = false;
|
||||||
int count = 1;
|
int count = 1;
|
||||||
QXmlStreamAttributes attrs = xml.attributes();
|
QXmlStreamAttributes attrs = xml.attributes();
|
||||||
QString cardName = xml.readElementText(QXmlStreamReader::IncludeChildElements);
|
QString cardName = xml.readElementText(QXmlStreamReader::IncludeChildElements);
|
||||||
|
|
@ -360,7 +361,12 @@ void CockatriceXml4Parser::loadCardsFromXml(QXmlStreamReader &xml)
|
||||||
persistent = true;
|
persistent = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto *relation = new CardRelation(cardName, attachType, exclude, variable, count, persistent);
|
if (attrs.hasAttribute("facedown")) {
|
||||||
|
facedown = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto *relation =
|
||||||
|
new CardRelation(cardName, attachType, exclude, variable, count, persistent, facedown);
|
||||||
if (xmlName == "reverse-related") {
|
if (xmlName == "reverse-related") {
|
||||||
reverseRelatedCards << relation;
|
reverseRelatedCards << relation;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -510,6 +516,9 @@ static QXmlStreamWriter &operator<<(QXmlStreamWriter &xml, const CardInfoPtr &in
|
||||||
if (i->getIsPersistent()) {
|
if (i->getIsPersistent()) {
|
||||||
xml.writeAttribute("persistent", "persistent");
|
xml.writeAttribute("persistent", "persistent");
|
||||||
}
|
}
|
||||||
|
if (i->getIsFaceDown()) {
|
||||||
|
xml.writeAttribute("facedown", "facedown");
|
||||||
|
}
|
||||||
if (i->getIsVariable()) {
|
if (i->getIsVariable()) {
|
||||||
if (1 == i->getDefaultCount()) {
|
if (1 == i->getDefaultCount()) {
|
||||||
xml.writeAttribute("count", "x");
|
xml.writeAttribute("count", "x");
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,10 @@ CardRelation::CardRelation(const QString &_name,
|
||||||
bool _isCreateAllExclusion,
|
bool _isCreateAllExclusion,
|
||||||
bool _isVariableCount,
|
bool _isVariableCount,
|
||||||
int _defaultCount,
|
int _defaultCount,
|
||||||
bool _isPersistent)
|
bool _isPersistent,
|
||||||
|
bool _isFaceDown)
|
||||||
: name(_name), attachType(_attachType), isCreateAllExclusion(_isCreateAllExclusion),
|
: name(_name), attachType(_attachType), isCreateAllExclusion(_isCreateAllExclusion),
|
||||||
isVariableCount(_isVariableCount), defaultCount(_defaultCount), isPersistent(_isPersistent)
|
isVariableCount(_isVariableCount), defaultCount(_defaultCount), isPersistent(_isPersistent),
|
||||||
|
isFaceDown(_isFaceDown)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
@ -31,6 +31,7 @@ private:
|
||||||
bool isVariableCount; ///< True if the number of creations is variable.
|
bool isVariableCount; ///< True if the number of creations is variable.
|
||||||
int defaultCount; ///< Default number of cards created or involved.
|
int defaultCount; ///< Default number of cards created or involved.
|
||||||
bool isPersistent; ///< True if this relation persists (i.e. is not destroyed) on zone change.
|
bool isPersistent; ///< True if this relation persists (i.e. is not destroyed) on zone change.
|
||||||
|
bool isFaceDown; ///< True if this relation creates the tokens facedown
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
|
@ -42,13 +43,15 @@ public:
|
||||||
* @param _isVariableCount Whether the count is variable.
|
* @param _isVariableCount Whether the count is variable.
|
||||||
* @param _defaultCount Default number for creations or transformations.
|
* @param _defaultCount Default number for creations or transformations.
|
||||||
* @param _isPersistent Whether the relation persists across zone changes.
|
* @param _isPersistent Whether the relation persists across zone changes.
|
||||||
|
* @param _isFaceDown Whether the relation creates the token face down
|
||||||
*/
|
*/
|
||||||
explicit CardRelation(const QString &_name = QString(),
|
explicit CardRelation(const QString &_name = QString(),
|
||||||
CardRelationType _attachType = CardRelationType::DoesNotAttach,
|
CardRelationType _attachType = CardRelationType::DoesNotAttach,
|
||||||
bool _isCreateAllExclusion = false,
|
bool _isCreateAllExclusion = false,
|
||||||
bool _isVariableCount = false,
|
bool _isVariableCount = false,
|
||||||
int _defaultCount = 1,
|
int _defaultCount = 1,
|
||||||
bool _isPersistent = false);
|
bool _isPersistent = false,
|
||||||
|
bool _isFaceDown = false);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Returns the name of the related card.
|
* @brief Returns the name of the related card.
|
||||||
|
|
@ -151,6 +154,16 @@ public:
|
||||||
{
|
{
|
||||||
return isPersistent;
|
return isPersistent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Returns whether the relation creates the token facedown.
|
||||||
|
*
|
||||||
|
* @return True if facedown, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]] bool getIsFaceDown() const
|
||||||
|
{
|
||||||
|
return isFaceDown;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // COCKATRICE_CARD_RELATION_H
|
#endif // COCKATRICE_CARD_RELATION_H
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue