mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-01 02:53:56 -07:00
implemented conceding
This commit is contained in:
parent
207d10d3e2
commit
78c1851c52
18 changed files with 168 additions and 51 deletions
|
|
@ -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)));
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue