本文整理汇总了C++中Slash类的典型用法代码示例。如果您正苦于以下问题:C++ Slash类的具体用法?C++ Slash怎么用?C++ Slash使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Slash类的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Slash
bool Slash::IsAvailable(const Player *player, const Card *slash, bool considerSpecificAssignee)
{
Slash *newslash = new Slash(Card::NoSuit, 0);
newslash->deleteLater();
#define THIS_SLASH (slash == NULL ? newslash : slash)
if (player->isCardLimited(THIS_SLASH, Card::MethodUse))
return false;
if (Sanguosha->getCurrentCardUseReason() == CardUseStruct::CARD_USE_REASON_PLAY) {
QList<int> ids;
if (slash) {
if (slash->isVirtualCard()) {
if (slash->subcardsLength() > 0)
ids = slash->getSubcards();
} else {
ids << slash->getEffectiveId();
}
}
bool has_weapon = player->hasWeapon("Crossbow") && ids.contains(player->getWeapon()->getEffectiveId());
if ((!has_weapon && player->hasWeapon("Crossbow")) || player->canSlashWithoutCrossbow(THIS_SLASH))
return true;
if (considerSpecificAssignee) {
QStringList assignee_list = player->property("extra_slash_specific_assignee").toString().split("+");
if (!assignee_list.isEmpty()) {
foreach (const Player *p, player->getAliveSiblings()) {
if (assignee_list.contains(p->objectName()) && player->canSlash(p, THIS_SLASH))
return true;
}
}
}
示例2: Slash
virtual const Card *viewAs(const Card *originalCard) const{
Slash *slash = new Slash(originalCard->getSuit(), originalCard->getNumber());
slash->setSkillName(objectName());
WrappedCard *card = Sanguosha->getWrappedCard(originalCard->getId());
card->takeOver(slash);
return card;
}
示例3: foreach
const Card *WuxinCard::validate(CardUseStruct &cardUse) const{
QList<int> skysoldier = cardUse.from->getPile("skysoldier");
QList<int> black_skysoldier, disabled_skysoldier;
foreach(int id, skysoldier){
if (Sanguosha->getCard(id)->isBlack()){
Slash *theslash = new Slash(Card::SuitToBeDecided, -1);
theslash->setSkillName("wuxin");
theslash->addSubcard(id);
theslash->deleteLater();
bool can_slash = theslash->isAvailable(cardUse.from) &&
theslash->targetsFeasible(ServerPlayerList2PlayerList(cardUse.to), cardUse.from);
if (can_slash)
black_skysoldier << id;
else
disabled_skysoldier << id;
}
else
disabled_skysoldier << id;
}
if (black_skysoldier.isEmpty())
return NULL;
Room *room = cardUse.from->getRoom();
room->fillAG(skysoldier, cardUse.from, disabled_skysoldier);
int slash_id = room->askForAG(cardUse.from, black_skysoldier, false, "wuxin");
room->clearAG(cardUse.from);
Slash *slash = new Slash(Card::SuitToBeDecided, -1);
slash->addSubcard(slash_id);
slash->setSkillName("wuxin");
return slash;
}
示例4: Slash
void PengriCard::use(Room *room, ServerPlayer *player, const QList<ServerPlayer *> &tar) const{
int card_id = room->askForCardChosen(player, tar.first(), "he", "pengri");
room->obtainCard(player, card_id, room->getCardPlace(card_id) != Player::Hand);
Slash *slash = new Slash(Card::NoSuit, 0);
slash->setSkillName("pengri");
CardUseStruct use;
use.card = slash;
use.from = tar.first();
use.to << player;
room->useCard(use);
}
示例5: Slash
bool Slash::IsAvailable(const Player *player, const Card *slash) {
Slash *newslash = new Slash(Card::NoSuit, 0);
newslash->deleteLater();
#define THIS_SLASH (slash == NULL ? newslash : slash)
if (player->isCardLimited(THIS_SLASH, Card::MethodUse))
return false;
if (player->hasWeapon("Crossbow") || player->canSlashWithoutCrossbow(THIS_SLASH))
return true;
int used = player->getSlashCount();
int valid = 1 + Sanguosha->correctCardTarget(TargetModSkill::Residue, player, newslash);
if (player->hasWeapon("VSCrossbow") && used < valid + 3)
return true;
return false;
#undef THIS_SLASH
}
示例6: onDamaged
virtual void onDamaged(ServerPlayer *player, const DamageStruct &damage) const{
Room *room = player->getRoom();
if(damage.damage != 1 || !damage.from || damage.from == player)
return;
if(room->askForSkillInvoke(player, objectName(), QVariant::fromValue(damage))){
ServerPlayer *target = room->askForPlayerChosen(player, room->getOtherPlayers(damage.from), objectName());
Slash *slash = new Slash(Card::NoSuit, 0);
slash->setSkillName(objectName());
CardUseStruct use;
use.card = slash;
use.from = damage.from;
use.to << target;
room->useCard(use, false);
}
}
示例7: Jink
virtual const Card *viewAs(CardItem *card_item) const{
const Card *card = card_item->getFilteredCard();
bool clone_jink = false;
if(ClientInstance->getStatus() == Client::Responsing)
clone_jink = ClientInstance->getPattern() == "jink";
if(clone_jink){
Jink *jink = new Jink(card->getSuit(), card->getNumber());
jink->addSubcard(card);
jink->setSkillName(objectName());
return jink;
}
else{
Slash *slash = new Slash(card->getSuit(), card->getNumber());
slash->addSubcard(card);
slash->setSkillName(objectName());
return slash;
}
}
示例8: if
virtual const Card *viewAs(const QList<CardItem *> &cards) const{
if(cards.length() != 2)
return NULL;
const Card *first = cards.at(0)->getFilteredCard();
const Card *second = cards.at(1)->getFilteredCard();
Card::Suit suit = Card::NoSuit;
if(first->isBlack() && second->isBlack())
suit = Card::Spade;
else if(first->isRed() && second->isRed())
suit = Card::Heart;
Slash *slash = new Slash(suit, 0);
slash->setSkillName(objectName());
slash->addSubcard(first);
slash->addSubcard(second);
return slash;
}