Crash fix

This commit is contained in:
Fabio Bas 2016-03-22 17:07:45 +01:00
parent 2d2958e931
commit e94f59d7c2
5 changed files with 11 additions and 8 deletions

View file

@ -227,9 +227,9 @@ void ArrowDragItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
if (startZone->getName().compare("hand") == 0) {
startCard->playCard(false);
CardInfo *ci = startCard->getInfo();
if (((!settingsCache->getPlayToStack() && ci->getTableRow() == 3) ||
if (ci && (((!settingsCache->getPlayToStack() && ci->getTableRow() == 3) ||
((settingsCache->getPlayToStack() && ci->getTableRow() != 0) &&
startCard->getZone()->getName().toStdString() != "stack")))
startCard->getZone()->getName().toStdString() != "stack"))))
cmd.set_start_zone("stack");
else
cmd.set_start_zone(settingsCache->getPlayToStack() ? "stack" :"table");

View file

@ -42,8 +42,8 @@ public:
inline bool operator()(CardItem *a, CardItem *b) const
{
if (flags & SortByType) {
QString t1 = a->getInfo()->getMainCardType();
QString t2 = b->getInfo()->getMainCardType();
QString t1 = a->getInfo() ? a->getInfo()->getMainCardType() : QString();
QString t2 = b->getInfo() ? b->getInfo()->getMainCardType() : QString();
if ((t1 == t2) && (flags & SortByName))
return a->getName() < b->getName();
return t1 < t2;

View file

@ -176,13 +176,13 @@ void DeckViewCardContainer::paint(QPainter *painter, const QStyleOptionGraphicsI
void DeckViewCardContainer::addCard(DeckViewCard *card)
{
cards.append(card);
cardsByType.insert(card->getInfo()->getMainCardType(), card);
cardsByType.insert(card->getInfo() ? card->getInfo()->getMainCardType() : "", card);
}
void DeckViewCardContainer::removeCard(DeckViewCard *card)
{
cards.removeAt(cards.indexOf(card));
cardsByType.remove(card->getInfo()->getMainCardType(), card);
cardsByType.remove(card->getInfo() ? card->getInfo()->getMainCardType(): "", card);
}
QList<QPair<int, int> > DeckViewCardContainer::getRowsAndCols() const

View file

@ -148,7 +148,10 @@ void TableZone::handleDropEventByGrid(const QList<CardDragItem *> &dragItems, Ca
CardToMove *ctm = cmd.mutable_cards_to_move()->add_card();
ctm->set_card_id(dragItems[i]->getId());
ctm->set_face_down(dragItems[i]->getFaceDown());
ctm->set_pt(startZone->getName() == name ? std::string() : dragItems[i]->getItem()->getInfo()->getPowTough().toStdString());
if(startZone->getName() != name && dragItems[i]->getItem()->getInfo())
ctm->set_pt(dragItems[i]->getItem()->getInfo()->getPowTough().toStdString());
else
ctm->set_pt(std::string());
}
startZone->getPlayer()->sendGameCommand(cmd);

View file

@ -116,7 +116,7 @@ void ZoneViewZone::reorganizeCards()
QString lastCardType;
for (int i = 0; i < cardCount; i++) {
CardItem *c = cardsToDisplay.at(i);
QString cardType = c->getInfo()->getMainCardType();
QString cardType = c->getInfo() ? c->getInfo()->getMainCardType() : "";
if (i){ // if not the first card
if (cardType == lastCardType)