mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-11 00:24:47 -07:00
crash fixes; move_card fixes
This commit is contained in:
parent
2aa5c7eb3c
commit
d23ece59ea
12 changed files with 43 additions and 10 deletions
|
|
@ -11,6 +11,7 @@ GameScene::GameScene(ZoneViewLayout *_zvLayout, QObject *parent)
|
|||
|
||||
void GameScene::addPlayer(Player *player)
|
||||
{
|
||||
qDebug("GameScene::addPlayer");
|
||||
players << player;
|
||||
addItem(player);
|
||||
rearrange();
|
||||
|
|
@ -19,6 +20,7 @@ void GameScene::addPlayer(Player *player)
|
|||
|
||||
void GameScene::removePlayer(Player *player)
|
||||
{
|
||||
qDebug("GameScene::removePlayer");
|
||||
players.removeAt(players.indexOf(player));
|
||||
removeItem(player);
|
||||
rearrange();
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
#include "cardlist.h"
|
||||
#include "tab_game.h"
|
||||
#include "protocol_items.h"
|
||||
#include "gamescene.h"
|
||||
#include <QSettings>
|
||||
#include <QPainter>
|
||||
#include <QMenu>
|
||||
|
|
@ -252,6 +253,8 @@ Player::~Player()
|
|||
{
|
||||
qDebug("Player destructor");
|
||||
|
||||
static_cast<GameScene *>(scene())->removePlayer(this);
|
||||
|
||||
QMapIterator<QString, CardZone *> i(zones);
|
||||
while (i.hasNext())
|
||||
delete i.next().value();
|
||||
|
|
@ -619,6 +622,7 @@ void Player::eventMoveCard(Event_MoveCard *event)
|
|||
|
||||
card->deleteDragItem();
|
||||
|
||||
card->setId(event->getNewCardId());
|
||||
card->setFaceDown(event->getFaceDown());
|
||||
|
||||
// The log event has to be sent before the card is added to the target zone
|
||||
|
|
|
|||
|
|
@ -120,6 +120,11 @@ TabGame::TabGame(Client *_client, int _gameId, int _localPlayerId, bool _spectat
|
|||
|
||||
TabGame::~TabGame()
|
||||
{
|
||||
QMapIterator<int, Player *> i(players);
|
||||
while (i.hasNext())
|
||||
delete i.next().value();
|
||||
players.clear();
|
||||
|
||||
emit gameClosing(this);
|
||||
}
|
||||
|
||||
|
|
@ -287,6 +292,7 @@ void TabGame::eventGameStateChanged(Event_GameStateChanged *event)
|
|||
if (player->getLocal() && pl->getDeck()) {
|
||||
Deck_PictureCacher::cachePictures(pl->getDeck(), this);
|
||||
deckView->setDeck(new DeckList(pl->getDeck()));
|
||||
readyStartButton->setEnabled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ ZoneViewWidget::ZoneViewWidget(Player *_player, CardZone *_origZone, int numberC
|
|||
|
||||
zone = new ZoneViewZone(player, _origZone, numberCards, this);
|
||||
connect(zone, SIGNAL(contentsChanged()), this, SLOT(resizeToZoneContents()));
|
||||
connect(zone, SIGNAL(beingDeleted()), this, SLOT(zoneDeleted()));
|
||||
zone->dumpObjectInfo();
|
||||
vbox->addItem(zone);
|
||||
zone->initializeCards();
|
||||
|
|
@ -91,6 +92,7 @@ void ZoneViewWidget::resizeToZoneContents()
|
|||
|
||||
void ZoneViewWidget::closeEvent(QCloseEvent *event)
|
||||
{
|
||||
disconnect(zone, SIGNAL(beingDeleted()), this, 0);
|
||||
player->sendGameCommand(new Command_StopDumpZone(-1, player->getId(), zone->getName()));
|
||||
if (shuffleCheckBox)
|
||||
if (shuffleCheckBox->isChecked())
|
||||
|
|
@ -99,3 +101,10 @@ void ZoneViewWidget::closeEvent(QCloseEvent *event)
|
|||
deleteLater();
|
||||
event->accept();
|
||||
}
|
||||
|
||||
void ZoneViewWidget::zoneDeleted()
|
||||
{
|
||||
emit closePressed(this);
|
||||
qDebug("foo");
|
||||
deleteLater();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ signals:
|
|||
void sizeChanged();
|
||||
private slots:
|
||||
void resizeToZoneContents();
|
||||
void zoneDeleted();
|
||||
public:
|
||||
ZoneViewWidget(Player *_player, CardZone *_origZone, int numberCards = 0, QGraphicsItem *parent = 0);
|
||||
ZoneViewZone *getZone() const { return zone; }
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ ZoneViewZone::ZoneViewZone(Player *_p, CardZone *_origZone, int _numberCards, QG
|
|||
|
||||
ZoneViewZone::~ZoneViewZone()
|
||||
{
|
||||
emit beingDeleted();
|
||||
qDebug("ZoneViewZone destructor");
|
||||
origZone->setView(NULL);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@ public slots:
|
|||
void setSortingEnabled(int _sortingEnabled);
|
||||
private slots:
|
||||
void zoneDumpReceived(ProtocolResponse *r);
|
||||
signals:
|
||||
void beingDeleted();
|
||||
protected:
|
||||
void addCardImpl(CardItem *card, int x, int y);
|
||||
QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue