summaryrefslogtreecommitdiffstats
path: root/kbackgammon/engines/offline/kbgoffline.h
diff options
context:
space:
mode:
Diffstat (limited to 'kbackgammon/engines/offline/kbgoffline.h')
-rw-r--r--kbackgammon/engines/offline/kbgoffline.h213
1 files changed, 213 insertions, 0 deletions
diff --git a/kbackgammon/engines/offline/kbgoffline.h b/kbackgammon/engines/offline/kbgoffline.h
new file mode 100644
index 00000000..db2bdc03
--- /dev/null
+++ b/kbackgammon/engines/offline/kbgoffline.h
@@ -0,0 +1,213 @@
+/* Yo Emacs, this -*- C++ -*-
+
+ Copyright (C) 1999-2001 Jens Hoefkens
+ jens@hoefkens.com
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ 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; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ $Id$
+
+*/
+
+#ifndef __KBGOFFLINE_H
+#define __KBGOFFLINE_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <generic/kbgengine.h>
+
+#include "kbgboard.h"
+#include "kbgstatus.h"
+
+class KBgEngineOfflinePrivate;
+
+/**
+ *
+ * The interface of an offline backgammon engine. The engine is inherently
+ * stupid and doesn't play - it just manages the games betweeen two humans
+ * sitting at the same computer. Network enabled games will be part of the
+ * next generation engine (KBgNg).
+ *
+ * @short The offline backgammon engine
+ * @author Jens Hoefkens <jens@hoefkens.com>
+ *
+ */
+class KBgEngineOffline : public KBgEngine
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructor
+ */
+ KBgEngineOffline(QWidget *parent = 0, QString *name = 0, QPopupMenu *pmenu = 0);
+
+ /**
+ * Destructor
+ */
+ virtual ~KBgEngineOffline();
+
+ /**
+ * Fills the engine-specific page into the notebook
+ */
+ virtual void getSetupPages(KDialogBase *nb);
+
+ /**
+ * Save new steup
+ */
+ virtual void setupOk();
+
+ /**
+ * Load default setup
+ */
+ virtual void setupDefault();
+
+ /**
+ * Cancel the changes to the setup
+ */
+ virtual void setupCancel();
+
+ /**
+ * Check with the engine if we can quit. This may require user
+ * interaction.
+ */
+ virtual bool queryClose();
+
+ /**
+ * About to be closed. Let the engine exit properly.
+ */
+ virtual bool queryExit();
+
+public slots:
+
+ /**
+ * Read user settings from the config file
+ */
+ virtual void readConfig();
+
+ /**
+ * Save user settings to the config file
+ */
+ virtual void saveConfig();
+
+ /**
+ * Roll dice for the player w
+ */
+ virtual void rollDice(const int w);
+
+ /**
+ * Double the cube of player w
+ */
+ virtual void doubleCube(const int w);
+
+ /**
+ * A move has been made on the board - see the board class
+ * for the format of the string s
+ */
+ virtual void handleMove(QString *s);
+
+ /**
+ * Undo the last move
+ */
+ virtual void undo();
+
+ /**
+ * Redo the last move
+ */
+ virtual void redo();
+
+ /**
+ * Roll dice for whoevers turn it is
+ */
+ virtual void roll();
+
+ /**
+ * Double the cube for whoevers can double right now
+ */
+ virtual void cube();
+
+ /**
+ * Reload the board to the last known sane state
+ */
+ virtual void load();
+
+ /**
+ * Commit a move
+ */
+ virtual void done();
+
+ /**
+ * Process the string cmd
+ */
+ virtual void handleCommand(const QString& cmd);
+
+ /**
+ * Start a new game.
+ */
+ virtual void newGame();
+ virtual bool haveNewGame() {return true;}
+
+
+protected slots:
+
+ /**
+ * Initialize the state descriptors game[0] and game[1]
+ */
+ void initGame();
+
+ /**
+ * Switch back and forth between edit and play mode
+ */
+ void toggleEditMode();
+
+ /**
+ * Store if cmd is allowed or not
+ */
+ void setAllowed(int cmd, bool f);
+
+ /**
+ * Swaps the used colors on the board
+ */
+ void swapColors();
+
+protected:
+
+ /**
+ * Returns a random integer between 1 and 6
+ */
+ int getRandom();
+
+ /**
+ * Set the dice for player w to a and b. Reload the board and determine the
+ * maximum number of moves
+ */
+ void rollDiceBackend(const int w, const int a, const int b);
+
+ /**
+ * Open a dialog to query for the name of player w. Return true unless
+ * the dialog was canceled.
+ */
+ bool queryPlayerName(int w);
+
+private:
+
+ KBgEngineOfflinePrivate *d;
+
+};
+
+#endif // __KBGOFFLINE_H