summaryrefslogtreecommitdiffstats
path: root/atlantik/client/atlantik.h
diff options
context:
space:
mode:
Diffstat (limited to 'atlantik/client/atlantik.h')
-rw-r--r--atlantik/client/atlantik.h268
1 files changed, 268 insertions, 0 deletions
diff --git a/atlantik/client/atlantik.h b/atlantik/client/atlantik.h
new file mode 100644
index 00000000..94f2ca7c
--- /dev/null
+++ b/atlantik/client/atlantik.h
@@ -0,0 +1,268 @@
+// Copyright (c) 2002-2003 Rob Kaper <cap@capsi.com>
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// version 2 as published by the Free Software Foundation.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; see the file COPYING. If not, write to
+// the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301, USA.
+
+#ifndef ATLANTIK_ATLANTIK_H
+#define ATLANTIK_ATLANTIK_H
+
+#include <qwidget.h>
+#include <qlayout.h>
+#include <qtextedit.h>
+#include <qlabel.h>
+#include <qptrlist.h>
+
+#include <kmainwindow.h>
+
+#include "configdlg.h"
+#include "portfolioview.h"
+#include "board.h"
+
+class QScrollView;
+
+class AtlanticCore;
+class AtlantikNetwork;
+
+struct AtlantikConfig
+{
+ // General options;
+ bool chatTimestamps;
+
+ // Personalization options
+ QString playerName, playerImage;
+
+ // Board options
+ bool indicateUnowned;
+ bool highliteUnowned;
+ bool darkenMortgaged;
+ bool quartzEffects;
+ bool animateTokens;
+
+ // Meta server options
+ bool connectOnStart;
+ bool hideDevelopmentServers;
+
+ // Portfolio colors
+ QColor activeColor, inactiveColor;
+};
+
+class EventLog;
+class EventLogWidget;
+class SelectServer;
+class SelectGame;
+class SelectConfiguration;
+class TradeDisplay;
+
+class Player;
+class Estate;
+class Trade;
+
+class LogTextEdit : public QTextEdit
+{
+Q_OBJECT
+
+public:
+ LogTextEdit( QWidget *parent = 0, const char *name = 0 );
+ virtual ~LogTextEdit();
+
+ QPopupMenu *createPopupMenu( const QPoint & pos );
+
+private:
+ KAction *m_clear, *m_selectAll, *m_copy;
+};
+
+/**
+ * Main Atlantik window.
+ * Manages gameboard, portfolios and pretty much everything else.
+ *
+ * @author Rob Kaper <cap@capsi.com>
+ */
+class Atlantik : public KMainWindow
+{
+Q_OBJECT
+
+public:
+ /**
+ * Create an Atlantik window.
+ *
+ */
+ Atlantik();
+
+ /**
+ * Read the configuration settings using KConfig.
+ *
+ */
+ void readConfig();
+
+ /**
+ * Appends a message the text view.
+ *
+ * @param msg Message to be appended.
+ */
+ void serverMsgsAppend(QString msg);
+
+ AtlantikConfig config() { return m_config; }
+
+private slots:
+ void showSelectServer();
+ void showSelectGame();
+ void showSelectConfiguration();
+ void initBoard();
+ void showBoard();
+ void freezeBoard();
+ void clientCookie(QString cookie);
+ void sendHandshake();
+ void statusBarClick(int);
+
+public slots:
+
+ /**
+ * A network connection has been established, so we can show the game
+ * list instead of the server list.
+ *
+ */
+ void slotNetworkConnected();
+
+ /**
+ * An error occurred while setting up the network connection. Inform the
+ * user.
+ *
+ * @param errno See http://doc.trolltech.com/3.0/qsocket.html#Error-enum
+ */
+ void slotNetworkError(int errnum);
+
+ void networkClosed(int status);
+
+ /**
+ * Creates a new modeless configure dialog or raises it when it already exists.
+ *
+ */
+ void slotConfigure();
+
+ /**
+ * Opens the event log widget.
+ *
+ */
+ void showEventLog();
+
+ /**
+ * Opens the KNotify dialog for configuration events.
+ *
+ */
+ void configureNotifications();
+
+ /**
+ * Reads values from configuration dialog and stores them into
+ * global configuration struct. If values have changed, appropriate
+ * methods within the application are called. Configuration is saved
+ * to file in any case.
+ *
+ */
+ void slotUpdateConfig();
+
+ /**
+ * Writes the contents of the text input field to the network
+ * interface and clears the text input field.
+ *
+ */
+ void slotSendMsg();
+
+ /**
+ * Informs serverMsgs() to append an incoming message from the
+ * server to the text view as informational message.
+ *
+ * @param msg The message to be appended.
+ */
+ void slotMsgInfo(QString msg);
+
+ void slotMsgStatus(const QString &message, const QString &icon = QString::null);
+
+ /**
+ * Informs serverMsgs() to append an incoming message from the
+ * server to the text view as error message.
+ *
+ * @param msg The error message to be appended.
+ */
+ void slotMsgError(QString msg);
+
+ /**
+ * Informs serverMsgs() to append an incoming message from the
+ * server to the text view as chat message.
+ *
+ * @param player The name of the player chatting.
+ * @param msg The chat message to be appended.
+ */
+ void slotMsgChat(QString player, QString msg);
+
+ void newPlayer(Player *player);
+ void newEstate(Estate *estate);
+ void newTrade(Trade *trade);
+ void newAuction(Auction *auction);
+
+ void removeGUI(Player *player);
+ void removeGUI(Trade *trade);
+
+ void playerChanged(Player *player);
+ void gainedTurn();
+
+signals:
+ void rollDice();
+ void buyEstate();
+ void auctionEstate();
+ void endTurn();
+ void jailCard();
+ void jailPay();
+ void jailRoll();
+
+protected:
+ void closeEvent(QCloseEvent *);
+
+private:
+ void initEventLog();
+ void initNetworkObject();
+ PortfolioView *addPortfolioView(Player *player);
+ PortfolioView *findPortfolioView(Player *player);
+
+ QScrollView *m_portfolioScroll;
+ QWidget *m_mainWidget, *m_portfolioWidget;
+ QGridLayout *m_mainLayout;
+ QVBoxLayout *m_portfolioLayout;
+
+ QLabel *m_portfolioLabel;
+ QLineEdit *m_input;
+ QTextEdit *m_serverMsgs;
+
+ KAction *m_roll, *m_buyEstate, *m_auctionEstate, *m_endTurn,
+ *m_jailCard, *m_jailPay, *m_jailRoll, *m_configure,
+ *m_showEventLog;
+
+ AtlanticCore *m_atlanticCore;
+ AtlantikNetwork *m_atlantikNetwork;
+ AtlantikConfig m_config;
+
+ ConfigDialog *m_configDialog;
+ AtlantikBoard *m_board;
+ SelectServer *m_selectServer;
+ SelectGame *m_selectGame;
+ SelectConfiguration *m_selectConfiguration;
+ EventLog *m_eventLog;
+ EventLogWidget *m_eventLogWidget;
+
+ QPtrList<PortfolioView> m_portfolioViews;
+ QMap<Trade *, TradeDisplay *> m_tradeGUIMap;
+
+ bool m_runningGame;
+};
+
+#endif