implemented conceding

This commit is contained in:
Max-Wilhelm Bruker 2009-12-01 17:26:42 +01:00
parent 207d10d3e2
commit 78c1851c52
18 changed files with 168 additions and 51 deletions

View file

@ -92,6 +92,11 @@ void MessageLogWidget::logReadyStart(Player *player)
append(tr("%1 is ready to start the game.").arg(sanitizeHtml(player->getName())));
}
void MessageLogWidget::logConcede(Player *player)
{
append(tr("%1 has conceded the game.").arg(sanitizeHtml(player->getName())));
}
void MessageLogWidget::logGameStart()
{
append(tr("The game has started."));
@ -283,6 +288,7 @@ void MessageLogWidget::connectToPlayer(Player *player)
connect(player, SIGNAL(logSay(Player *, QString)), this, SLOT(logSay(Player *, QString)));
connect(player, SIGNAL(logDeckSelect(Player *, int)), this, SLOT(logDeckSelect(Player *, int)));
connect(player, SIGNAL(logReadyStart(Player *)), this, SLOT(logReadyStart(Player *)));
connect(player, SIGNAL(logConcede(Player *)), this, SLOT(logConcede(Player *)));
connect(player, SIGNAL(logShuffle(Player *)), this, SLOT(logShuffle(Player *)));
connect(player, SIGNAL(logRollDie(Player *, int, int)), this, SLOT(logRollDie(Player *, int, int)));
connect(player, SIGNAL(logCreateArrow(Player *, Player *, QString, Player *, QString)), this, SLOT(logCreateArrow(Player *, Player *, QString, Player *, QString)));

View file

@ -30,6 +30,7 @@ public slots:
void logLeaveSpectator(QString name);
void logDeckSelect(Player *player, int deckId);
void logReadyStart(Player *player);
void logConcede(Player *player);
void logGameStart();
void logSay(Player *player, QString message);
void logShuffle(Player *player);

View file

@ -438,6 +438,11 @@ void Player::eventReadyStart(Event_ReadyStart * /*event*/)
emit logReadyStart(this);
}
void Player::eventConcede(Event_Concede * /*event*/)
{
emit logConcede(this);
}
void Player::eventShuffle(Event_Shuffle * /*event*/)
{
emit logShuffle(this);
@ -619,6 +624,7 @@ void Player::processGameEvent(GameEvent *event)
case ItemId_Event_DeckSelect: eventDeckSelect(qobject_cast<Event_DeckSelect *>(event)); break;
case ItemId_Event_Say: eventSay(qobject_cast<Event_Say *>(event)); break;
case ItemId_Event_ReadyStart: eventReadyStart(qobject_cast<Event_ReadyStart *>(event)); break;
case ItemId_Event_Concede: eventConcede(qobject_cast<Event_Concede *>(event)); break;
case ItemId_Event_Shuffle: eventShuffle(qobject_cast<Event_Shuffle *>(event)); break;
case ItemId_Event_RollDie: eventRollDie(qobject_cast<Event_RollDie *>(event)); break;
case ItemId_Event_CreateArrows: eventCreateArrows(qobject_cast<Event_CreateArrows *>(event)); break;

View file

@ -25,6 +25,7 @@ class GameEvent;
class Event_DeckSelect;
class Event_Say;
class Event_ReadyStart;
class Event_Concede;
class Event_Shuffle;
class Event_RollDie;
class Event_CreateArrows;
@ -50,6 +51,7 @@ signals:
void logDeckSelect(Player *player, int deckId);
void logSay(Player *player, QString message);
void logReadyStart(Player *player);
void logConcede(Player *player);
void logShuffle(Player *player);
void logRollDie(Player *player, int sides, int roll);
void logCreateArrow(Player *player, Player *startPlayer, QString startCard, Player *targetPlayer, QString targetCard);
@ -116,6 +118,7 @@ private:
void eventDeckSelect(Event_DeckSelect *event);
void eventSay(Event_Say *event);
void eventReadyStart(Event_ReadyStart *event);
void eventConcede(Event_Concede *event);
void eventShuffle(Event_Shuffle *event);
void eventRollDie(Event_RollDie *event);
void eventCreateArrows(Event_CreateArrows *event);

View file

@ -9,7 +9,7 @@ RemoteDeckList_TreeWidget::RemoteDeckList_TreeWidget(Client *_client, QWidget *p
{
header()->setResizeMode(QHeaderView::ResizeToContents);
setColumnCount(3);
refreshTree();
retranslateUi();
}
@ -33,6 +33,7 @@ void RemoteDeckList_TreeWidget::addFileToTree(DeckList_File *file, QTreeWidgetIt
newDeck->setData(2, Qt::DisplayRole, file->getUploadTime());
parent->addChild(newDeck);
sortItems(0, Qt::AscendingOrder);
}
void RemoteDeckList_TreeWidget::addFolderToTree(DeckList_Directory *folder, QTreeWidgetItem *parent)
@ -62,6 +63,7 @@ void RemoteDeckList_TreeWidget::addFolderToTree(DeckList_Directory *folder, QTre
else
addFileToTree(dynamic_cast<DeckList_File *>(folderItems[i]), newItem);
}
sortItems(0, Qt::AscendingOrder);
}
void RemoteDeckList_TreeWidget::refreshTree()

View file

@ -88,6 +88,8 @@ TabGame::TabGame(Client *_client, int _gameId, int _localPlayerId, bool _spectat
connect(aNextTurn, SIGNAL(triggered()), this, SLOT(actNextTurn()));
aRemoveLocalArrows = new QAction(this);
connect(aRemoveLocalArrows, SIGNAL(triggered()), this, SLOT(actRemoveLocalArrows()));
aConcede = new QAction(this);
connect(aConcede, SIGNAL(triggered()), this, SLOT(actConcede()));
aLeaveGame = new QAction(this);
connect(aLeaveGame, SIGNAL(triggered()), this, SLOT(actLeaveGame()));
@ -98,6 +100,7 @@ TabGame::TabGame(Client *_client, int _gameId, int _localPlayerId, bool _spectat
tabMenu->addSeparator();
tabMenu->addAction(aRemoveLocalArrows);
tabMenu->addSeparator();
tabMenu->addAction(aConcede);
tabMenu->addAction(aLeaveGame);
retranslateUi();
@ -120,6 +123,8 @@ void TabGame::retranslateUi()
aNextTurn->setShortcuts(QList<QKeySequence>() << QKeySequence(tr("Ctrl+Return")) << QKeySequence(tr("Ctrl+Enter")));
aRemoveLocalArrows->setText(tr("&Remove all local arrows"));
aRemoveLocalArrows->setShortcut(tr("Ctrl+R"));
aConcede->setText(tr("&Concede"));
aConcede->setShortcut(tr("F2"));
aLeaveGame->setText(tr("&Leave game"));
loadLocalButton->setText(tr("Load &local deck"));
@ -136,6 +141,14 @@ void TabGame::retranslateUi()
i.next().value()->retranslateUi();
}
void TabGame::actConcede()
{
if (QMessageBox::question(this, tr("Concede"), tr("Are you sure you want to concede this game?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) != QMessageBox::Yes)
return;
sendGameCommand(new Command_Concede);
}
void TabGame::actLeaveGame()
{
if (QMessageBox::question(this, tr("Leave game"), tr("Are you sure you want to leave this game?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) != QMessageBox::Yes)
@ -235,6 +248,15 @@ void TabGame::startGame()
phasesToolbar->show();
}
void TabGame::stopGame()
{
currentPhase = -1;
started = false;
gameView->hide();
phasesToolbar->hide();
deckViewContainer->show();
}
void TabGame::eventGameStart(Event_GameStart * /*event*/)
{
startGame();
@ -256,11 +278,18 @@ void TabGame::eventGameStateChanged(Event_GameStateChanged *event)
playerListWidget->addPlayer(pl);
}
player->processPlayerInfo(pl);
if (player->getLocal() && pl->getDeck()) {
Deck_PictureCacher::cachePictures(pl->getDeck(), this);
deckView->setDeck(new DeckList(pl->getDeck()));
}
}
if (event->getGameStarted() && !started) {
startGame();
setActivePlayer(event->getActivePlayer());
setActivePhase(event->getActivePhase());
} else if (!event->getGameStarted() && started) {
stopGame();
zoneLayout->clear();
}
}

View file

@ -61,11 +61,13 @@ private:
QAction *playersSeparator;
QMenu *playersMenu;
QAction *aCloseMostRecentZoneView,
*aLeaveGame, *aNextPhase, *aNextTurn, *aRemoveLocalArrows;
*aConcede, *aLeaveGame, *aNextPhase, *aNextTurn, *aRemoveLocalArrows;
Player *addPlayer(int playerId, const QString &playerName);
void startGame();
void stopGame();
void eventGameStart(Event_GameStart *event);
void eventGameStateChanged(Event_GameStateChanged *event);
void eventJoin(Event_Join *event);
@ -84,6 +86,7 @@ private slots:
void deckSelectFinished(ProtocolResponse *r);
void newCardAdded(CardItem *card);
void actConcede();
void actLeaveGame();
void actRemoveLocalArrows();
void actSay();