Merge branch 'master' of ssh://brukie@cockatrice.git.sourceforge.net/gitroot/cockatrice

This commit is contained in:
Max-Wilhelm Bruker 2009-06-26 15:25:56 +02:00
commit 64185e1772
9 changed files with 177 additions and 30 deletions

View file

@ -15,5 +15,5 @@ QT += network
#QTPLUGIN += qjpeg #QTPLUGIN += qjpeg
# Input # Input
HEADERS += src/counter.h src/gameselector.h src/dlg_creategame.h src/dlg_connect.h src/gamesmodel.h src/client.h src/window_main.h src/servergame.h src/servereventdata.h src/zonelist.h src/cardzone.h src/player.h src/cardlist.h src/carditem.h src/tablezone.h src/handzone.h src/playerlist.h src/game.h src/carddatabase.h src/gameview.h src/decklistmodel.h src/dlg_startgame.h src/cardinfowidget.h src/messagelogwidget.h src/serverzonecard.h src/zoneviewzone.h src/zoneviewwidget.h src/libraryzone.h src/pilezone.h src/carddragitem.h src/zoneviewlayout.h src/playerarea.h src/carddatabasemodel.h src/window_deckeditor.h src/decklist.h setsmodel.h src/window_sets.h HEADERS += src/counter.h src/gameselector.h src/dlg_creategame.h src/dlg_connect.h src/gamesmodel.h src/client.h src/window_main.h src/servergame.h src/servereventdata.h src/zonelist.h src/cardzone.h src/player.h src/cardlist.h src/carditem.h src/tablezone.h src/handzone.h src/playerlist.h src/game.h src/carddatabase.h src/gameview.h src/decklistmodel.h src/dlg_startgame.h src/cardinfowidget.h src/messagelogwidget.h src/serverzonecard.h src/zoneviewzone.h src/zoneviewwidget.h src/libraryzone.h src/pilezone.h src/carddragitem.h src/zoneviewlayout.h src/playerarea.h src/carddatabasemodel.h src/window_deckeditor.h src/decklist.h setsmodel.h src/window_sets.h src/dlg_editmessages.h
SOURCES += src/counter.cpp src/gameselector.cpp src/dlg_creategame.cpp src/dlg_connect.cpp src/client.cpp src/main.cpp src/window_main.cpp src/servereventdata.cpp src/gamesmodel.cpp src/player.cpp src/cardzone.cpp src/zonelist.cpp src/cardlist.cpp src/carditem.cpp src/tablezone.cpp src/handzone.cpp src/playerlist.cpp src/game.cpp src/carddatabase.cpp src/gameview.cpp src/decklistmodel.cpp src/dlg_startgame.cpp src/cardinfowidget.cpp src/messagelogwidget.cpp src/zoneviewzone.cpp src/zoneviewwidget.cpp src/libraryzone.cpp src/pilezone.cpp src/carddragitem.cpp src/zoneviewlayout.cpp src/playerarea.cpp src/carddatabasemodel.cpp src/window_deckeditor.cpp src/decklist.cpp src/setsmodel.cpp src/window_sets.cpp SOURCES += src/counter.cpp src/gameselector.cpp src/dlg_creategame.cpp src/dlg_connect.cpp src/client.cpp src/main.cpp src/window_main.cpp src/servereventdata.cpp src/gamesmodel.cpp src/player.cpp src/cardzone.cpp src/zonelist.cpp src/cardlist.cpp src/carditem.cpp src/tablezone.cpp src/handzone.cpp src/playerlist.cpp src/game.cpp src/carddatabase.cpp src/gameview.cpp src/decklistmodel.cpp src/dlg_startgame.cpp src/cardinfowidget.cpp src/messagelogwidget.cpp src/zoneviewzone.cpp src/zoneviewwidget.cpp src/libraryzone.cpp src/pilezone.cpp src/carddragitem.cpp src/zoneviewlayout.cpp src/playerarea.cpp src/carddatabasemodel.cpp src/window_deckeditor.cpp src/decklist.cpp src/setsmodel.cpp src/window_sets.cpp src/dlg_editmessages.cpp

View file

@ -0,0 +1,76 @@
#include <QtGui>
#include "dlg_editmessages.h"
DlgEditMessages::DlgEditMessages(QWidget *parent)
: QDialog(parent)
{
aAdd = new QAction(tr("Add"), this);
connect(aAdd, SIGNAL(triggered()), this, SLOT(actAdd()));
aRemove = new QAction(tr("Remove"), this);
connect(aRemove, SIGNAL(triggered()), this, SLOT(actRemove()));
messageList = new QListWidget;
QToolBar *messageToolBar = new QToolBar;
messageToolBar->setOrientation(Qt::Vertical);
messageToolBar->addAction(aAdd);
messageToolBar->addAction(aRemove);
QSettings settings;
settings.beginGroup("messages");
int count = settings.value("count", 0).toInt();
for (int i = 0; i < count; i++)
messageList->addItem(settings.value(QString("msg%1").arg(i)).toString());
QHBoxLayout *listLayout = new QHBoxLayout;
listLayout->addWidget(messageList);
listLayout->addWidget(messageToolBar);
cancelButton = new QPushButton(tr("&Cancel"));
okButton = new QPushButton(tr("O&K"));
okButton->setAutoDefault(true);
QHBoxLayout *buttonLayout = new QHBoxLayout;
buttonLayout->addStretch();
buttonLayout->addWidget(cancelButton);
buttonLayout->addWidget(okButton);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addLayout(listLayout);
mainLayout->addLayout(buttonLayout);
setLayout(mainLayout);
setWindowTitle(tr("Edit messages"));
setMinimumWidth(sizeHint().width());
resize(300, 300);
connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));
}
void DlgEditMessages::storeSettings()
{
QSettings settings;
settings.beginGroup("messages");
settings.setValue("count", messageList->count());
for (int i = 0; i < messageList->count(); i++)
settings.setValue(QString("msg%1").arg(i), messageList->item(i)->text());
}
void DlgEditMessages::actAdd()
{
bool ok;
QString msg = QInputDialog::getText(this, tr("Add message"), QString("Message:"), QLineEdit::Normal, QString(), &ok);
if (ok) {
messageList->addItem(msg);
storeSettings();
}
}
void DlgEditMessages::actRemove()
{
if (messageList->currentItem()) {
delete messageList->takeItem(messageList->currentRow());
storeSettings();
}
}

View file

@ -0,0 +1,24 @@
#ifndef DLG_EDITMESSAGES_H
#define DLG_EDITMESSAGES_H
#include <QDialog>
class QListWidget;
class QPushButton;
class DlgEditMessages: public QDialog {
Q_OBJECT
public:
DlgEditMessages(QWidget *parent = 0);
private slots:
void actAdd();
void actRemove();
private:
QListWidget *messageList;
QAction *aAdd, *aRemove;
QPushButton *cancelButton, *okButton;
void storeSettings();
};
#endif

View file

@ -1,6 +1,7 @@
#include <QGraphicsScene> #include <QGraphicsScene>
#include <QMenu> #include <QMenu>
#include <QMessageBox> #include <QMessageBox>
#include <QSettings>
#include "serverplayer.h" #include "serverplayer.h"
#include "game.h" #include "game.h"
#include "servereventdata.h" #include "servereventdata.h"
@ -9,6 +10,7 @@
#include "handzone.h" #include "handzone.h"
#include "carddatabase.h" #include "carddatabase.h"
#include "dlg_startgame.h" #include "dlg_startgame.h"
#include "dlg_editmessages.h"
#include "playerarea.h" #include "playerarea.h"
#include "counter.h" #include "counter.h"
@ -52,6 +54,9 @@ Game::Game(CardDatabase *_db, Client *_client, QGraphicsScene *_scene, QMenu *_a
aCreateToken->setShortcut(tr("Ctrl+T")); aCreateToken->setShortcut(tr("Ctrl+T"));
connect(aCreateToken, SIGNAL(triggered()), this, SLOT(actCreateToken())); connect(aCreateToken, SIGNAL(triggered()), this, SLOT(actCreateToken()));
aEditMessages = new QAction(tr("&Edit messages..."), this);
connect(aEditMessages, SIGNAL(triggered()), this, SLOT(actEditMessages()));
actionsMenu->addAction(aUntapAll); actionsMenu->addAction(aUntapAll);
actionsMenu->addSeparator(); actionsMenu->addSeparator();
actionsMenu->addAction(aDecLife); actionsMenu->addAction(aDecLife);
@ -64,6 +69,9 @@ Game::Game(CardDatabase *_db, Client *_client, QGraphicsScene *_scene, QMenu *_a
actionsMenu->addAction(aRollDice); actionsMenu->addAction(aRollDice);
actionsMenu->addSeparator(); actionsMenu->addSeparator();
actionsMenu->addAction(aCreateToken); actionsMenu->addAction(aCreateToken);
actionsMenu->addSeparator();
sayMenu = actionsMenu->addMenu(tr("S&ay"));
initSayMenu();
aTap = new QAction(tr("&Tap"), this); aTap = new QAction(tr("&Tap"), this);
connect(aTap, SIGNAL(triggered()), this, SLOT(actTap())); connect(aTap, SIGNAL(triggered()), this, SLOT(actTap()));
@ -108,6 +116,32 @@ Game::~Game()
} }
} }
void Game::initSayMenu()
{
sayMenu->clear();
sayMenu->addAction(aEditMessages);
sayMenu->addSeparator();
QSettings settings;
settings.beginGroup("messages");
int count = settings.value("count", 0).toInt();
for (int i = 0; i < count; i++) {
QAction *newAction = new QAction(settings.value(QString("msg%1").arg(i)).toString(), this);
QString shortcut;
switch (i) {
case 0: shortcut = tr("F5"); break;
case 1: shortcut = tr("F6"); break;
case 2: shortcut = tr("F7"); break;
case 3: shortcut = tr("F8"); break;
case 4: shortcut = tr("F9"); break;
case 5: shortcut = tr("F10"); break;
}
newAction->setShortcut(shortcut);
connect(newAction, SIGNAL(triggered()), this, SLOT(actSayMessage()));
sayMenu->addAction(newAction);
}
}
Player *Game::addPlayer(int playerId, const QString &playerName, QPointF base, bool local) Player *Game::addPlayer(int playerId, const QString &playerName, QPointF base, bool local)
{ {
Player *newPlayer = new Player(playerName, playerId, base, local, db, client, scene); Player *newPlayer = new Player(playerName, playerId, base, local, db, client, scene);
@ -295,6 +329,13 @@ void Game::actCreateToken()
client->createToken("table", cardname, QString(), 0, 0); client->createToken("table", cardname, QString(), 0, 0);
} }
void Game::actEditMessages()
{
DlgEditMessages dlg;
if (dlg.exec())
initSayMenu();
}
void Game::showCardMenu(QPoint p) void Game::showCardMenu(QPoint p)
{ {
cardMenu->exec(p); cardMenu->exec(p);
@ -396,3 +437,9 @@ void Game::actRearrange()
client->moveCard(temp->getId(), zoneName, zoneName, x, y); client->moveCard(temp->getId(), zoneName, zoneName, x, y);
} }
} }
void Game::actSayMessage()
{
QAction *a = qobject_cast<QAction *>(sender());
client->say(a->text());
}

View file

@ -14,9 +14,9 @@ class DlgStartGame;
class Game : public QObject { class Game : public QObject {
Q_OBJECT Q_OBJECT
private: private:
QMenu *actionsMenu, *cardMenu; QMenu *actionsMenu, *sayMenu, *cardMenu;
QAction *aTap, *aUntap, *aDoesntUntap, *aFlip, *aAddCounter, *aRemoveCounter, *aSetCounters, *aRearrange, QAction *aTap, *aUntap, *aDoesntUntap, *aFlip, *aAddCounter, *aRemoveCounter, *aSetCounters, *aRearrange,
*aUntapAll, *aDecLife, *aIncLife, *aSetLife, *aShuffle, *aDraw, *aDrawCards, *aRollDice, *aCreateToken; *aUntapAll, *aDecLife, *aIncLife, *aSetLife, *aShuffle, *aDraw, *aDrawCards, *aRollDice, *aCreateToken, *aEditMessages;
DlgStartGame *dlgStartGame; DlgStartGame *dlgStartGame;
CardDatabase *db; CardDatabase *db;
@ -26,6 +26,7 @@ private:
Player *localPlayer; Player *localPlayer;
bool started; bool started;
Player *addPlayer(int playerId, const QString &playerName, QPointF base, bool local); Player *addPlayer(int playerId, const QString &playerName, QPointF base, bool local);
void initSayMenu();
private slots: private slots:
void actUntapAll(); void actUntapAll();
void actIncLife(); void actIncLife();
@ -36,6 +37,7 @@ private slots:
void actDrawCards(); void actDrawCards();
void actRollDice(); void actRollDice();
void actCreateToken(); void actCreateToken();
void actEditMessages();
void showCardMenu(QPoint p); void showCardMenu(QPoint p);
void actTap(); void actTap();
@ -47,6 +49,8 @@ private slots:
void actSetCounters(); void actSetCounters();
void actRearrange(); void actRearrange();
void actSayMessage();
void gameEvent(const ServerEventData &msg); void gameEvent(const ServerEventData &msg);
void playerListReceived(QList<ServerPlayer *> playerList); void playerListReceived(QList<ServerPlayer *> playerList);
void readyStart(); void readyStart();

View file

@ -9,7 +9,7 @@ GameSelector::GameSelector(Client *_client, QWidget *parent)
gameListModel = new GamesModel(this); gameListModel = new GamesModel(this);
gameListView->setModel(gameListModel); gameListView->setModel(gameListModel);
createButton = new QPushButton(tr("&Create")); createButton = new QPushButton(tr("C&reate"));
joinButton = new QPushButton(tr("&Join")); joinButton = new QPushButton(tr("&Join"));
QHBoxLayout *buttonLayout = new QHBoxLayout; QHBoxLayout *buttonLayout = new QHBoxLayout;
buttonLayout->addStretch(); buttonLayout->addStretch();

View file

@ -21,14 +21,14 @@ Player::Player(const QString &_name, int _id, QPointF _base, bool _local, CardDa
aViewLibrary = new QAction(tr("&View library"), this); aViewLibrary = new QAction(tr("&View library"), this);
if (local) if (local)
aViewLibrary->setShortcut(tr("F5")); aViewLibrary->setShortcut(tr("F3"));
connect(aViewLibrary, SIGNAL(triggered()), this, SLOT(actViewLibrary())); connect(aViewLibrary, SIGNAL(triggered()), this, SLOT(actViewLibrary()));
aViewTopCards = new QAction(tr("View &top cards of library..."), this); aViewTopCards = new QAction(tr("View &top cards of library..."), this);
connect(aViewTopCards, SIGNAL(triggered()), this, SLOT(actViewTopCards())); connect(aViewTopCards, SIGNAL(triggered()), this, SLOT(actViewTopCards()));
aViewGraveyard = new QAction(tr("&View graveyard"), this); aViewGraveyard = new QAction(tr("&View graveyard"), this);
if (local) if (local)
aViewGraveyard->setShortcut(tr("F6")); aViewGraveyard->setShortcut(tr("F4"));
connect(aViewGraveyard, SIGNAL(triggered()), this, SLOT(actViewGraveyard())); connect(aViewGraveyard, SIGNAL(triggered()), this, SLOT(actViewGraveyard()));
aViewRfg = new QAction(tr("&View removed cards"), this); aViewRfg = new QAction(tr("&View removed cards"), this);

View file

@ -60,6 +60,7 @@ void MainWindow::statusChanged(ProtocolStatus _status)
break; break;
case StatusDisconnected: case StatusDisconnected:
if (game) { if (game) {
zoneLayout->clear();
delete game; delete game;
game = 0; game = 0;
} }
@ -72,6 +73,14 @@ void MainWindow::statusChanged(ProtocolStatus _status)
aDisconnect->setEnabled(true); aDisconnect->setEnabled(true);
break; break;
case StatusIdle: { case StatusIdle: {
if (game) {
zoneLayout->clear();
delete game;
game = 0;
}
aRestartGame->setEnabled(false);
aLeaveGame->setEnabled(false);
GameSelector *gameSelector = new GameSelector(client); GameSelector *gameSelector = new GameSelector(client);
viewLayout->insertWidget(0, gameSelector); viewLayout->insertWidget(0, gameSelector);
} }
@ -104,12 +113,7 @@ void MainWindow::actRestartGame()
void MainWindow::actLeaveGame() void MainWindow::actLeaveGame()
{ {
zoneLayout->clear();
client->leaveGame(); client->leaveGame();
delete game;
game = 0;
aRestartGame->setEnabled(false);
aLeaveGame->setEnabled(false);
} }
void MainWindow::actDeckEditor() void MainWindow::actDeckEditor()
@ -140,15 +144,11 @@ void MainWindow::updateSceneSize()
view->fitInView(scene->sceneRect(), Qt::KeepAspectRatio); view->fitInView(scene->sceneRect(), Qt::KeepAspectRatio);
} }
void MainWindow::textChanged(const QString &text) void MainWindow::actSay()
{ {
sayButton->setEnabled(!text.isEmpty()); if (sayEdit->text().isEmpty())
} return;
// Knöpfe
void MainWindow::buttonSay()
{
client->say(sayEdit->text()); client->say(sayEdit->text());
sayEdit->clear(); sayEdit->clear();
} }
@ -190,7 +190,7 @@ void MainWindow::createActions()
aDeckEditor = new QAction(tr("&Deck editor"), this); aDeckEditor = new QAction(tr("&Deck editor"), this);
connect(aDeckEditor, SIGNAL(triggered()), this, SLOT(actDeckEditor())); connect(aDeckEditor, SIGNAL(triggered()), this, SLOT(actDeckEditor()));
aFullScreen = new QAction(tr("&Full screen"), this); aFullScreen = new QAction(tr("&Full screen"), this);
aFullScreen->setShortcut(tr("F4")); aFullScreen->setShortcut(tr("Ctrl+F"));
aFullScreen->setCheckable(true); aFullScreen->setCheckable(true);
connect(aFullScreen, SIGNAL(toggled(bool)), this, SLOT(actFullScreen(bool))); connect(aFullScreen, SIGNAL(toggled(bool)), this, SLOT(actFullScreen(bool)));
aExit = new QAction(tr("&Exit"), this); aExit = new QAction(tr("&Exit"), this);
@ -244,13 +244,13 @@ MainWindow::MainWindow(QWidget *parent)
cardInfo = new CardInfoWidget(db); cardInfo = new CardInfoWidget(db);
messageLog = new MessageLogWidget; messageLog = new MessageLogWidget;
QLabel *sayLabel = new QLabel(tr("&Say:"));
sayEdit = new QLineEdit; sayEdit = new QLineEdit;
sayButton = new QPushButton(tr("&Say")); sayLabel->setBuddy(sayEdit);
sayButton->setEnabled(false);
QHBoxLayout *hLayout = new QHBoxLayout; QHBoxLayout *hLayout = new QHBoxLayout;
hLayout->addWidget(sayLabel);
hLayout->addWidget(sayEdit); hLayout->addWidget(sayEdit);
hLayout->addWidget(sayButton);
QVBoxLayout *verticalLayout = new QVBoxLayout; QVBoxLayout *verticalLayout = new QVBoxLayout;
verticalLayout->addWidget(cardInfo); verticalLayout->addWidget(cardInfo);
@ -268,9 +268,7 @@ MainWindow::MainWindow(QWidget *parent)
centralWidget->setLayout(mainLayout); centralWidget->setLayout(mainLayout);
setCentralWidget(centralWidget); setCentralWidget(centralWidget);
connect(sayEdit, SIGNAL(returnPressed()), sayButton, SLOT(click())); connect(sayEdit, SIGNAL(returnPressed()), this, SLOT(actSay()));
connect(sayEdit, SIGNAL(textChanged(const QString &)), this, SLOT(textChanged(const QString &)));
connect(sayButton, SIGNAL(clicked()), this, SLOT(buttonSay()));
client = new Client(this); client = new Client(this);
connect(client, SIGNAL(serverTimeout()), this, SLOT(serverTimeout())); connect(client, SIGNAL(serverTimeout()), this, SLOT(serverTimeout()));

View file

@ -48,8 +48,7 @@ private slots:
void playerIdReceived(int id, QString name); void playerIdReceived(int id, QString name);
void serverTimeout(); void serverTimeout();
void textChanged(const QString &text); void actSay();
void buttonSay();
void actConnect(); void actConnect();
void actDisconnect(); void actDisconnect();
@ -74,7 +73,6 @@ private:
CardInfoWidget *cardInfo; CardInfoWidget *cardInfo;
MessageLogWidget *messageLog; MessageLogWidget *messageLog;
QLineEdit *sayEdit; QLineEdit *sayEdit;
QPushButton *sayButton;
Client *client; Client *client;
QGraphicsScene *scene; QGraphicsScene *scene;