summaryrefslogtreecommitdiffstats
path: root/knights/board_2d.h
diff options
context:
space:
mode:
Diffstat (limited to 'knights/board_2d.h')
-rw-r--r--knights/board_2d.h99
1 files changed, 99 insertions, 0 deletions
diff --git a/knights/board_2d.h b/knights/board_2d.h
new file mode 100644
index 0000000..f2291e2
--- /dev/null
+++ b/knights/board_2d.h
@@ -0,0 +1,99 @@
+/***************************************************************************
+ board_2d.h - description
+ -------------------
+ begin : Fri Feb 28 2003
+ copyright : (C) 2003 by The Knights Project
+ email : knights-general@lists.sourceforge.net
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef BOARD_2D_H
+#define BOARD_2D_H
+
+#include <board_base.h>
+#include <qpixmap.h>
+#include <qptrlist.h>
+
+/**
+ *@author The Knights Team
+ */
+
+typedef struct sprite
+{
+ bool Restore;
+ int Steps;
+ int POSITION_Origin;
+ int POSITION_Destination;
+ int POSITION_TargetTaken;
+ QPoint POINT_Origin;
+ QPoint POINT_Current;
+ QPoint POINT_LastUpdate;
+ QPoint POINT_Destination;
+ QPixmap PIXMAP_Sprite;
+ QPixmap PIXMAP_FlipFrame;
+};
+
+typedef QPtrList<sprite> SpriteList;
+class KnightsPixCache;
+
+class board_2d : public board_base
+{
+ Q_OBJECT
+ public:
+ board_2d(QWidget *parent=0, const char *name=0, resource *Rsrc=0, logic *Lgc=0);
+ ~board_2d();
+ virtual void drawMove( const ChessMove &chessMove, const bool &reverse=FALSE );
+ virtual void setPremovePositions( const int&, const int& );
+ virtual void redrawLights( void );
+ void paintEvent( QPaintEvent *event );
+ void mouseReleaseEvent( QMouseEvent *event );
+ void mousePressEvent( QMouseEvent *event );
+ void mouseMoveEvent( QMouseEvent *event );
+
+ public slots:
+ virtual void resizeBoard( void );
+ virtual void redrawAll( void );
+ virtual void drawPosition( const int& );
+ virtual void commit( void );
+
+ protected:
+ void drawCoords( QPixmap *pic, const int &pos );
+ QPoint coords( const int&, const int&);
+ int position( const QPoint& );
+ void drawSprites( void );
+ QPixmap getChessman( const int &pos );
+ bool isSprite( const int &pos );
+ void myBlit( const QPoint &dp, const QPaintDevice *src, const QRect &sr );
+
+ protected slots:
+ void updateSprites( void );
+
+ private:
+ SpriteList sprites;
+ sprite *DragSprite;
+ KnightsPixCache *cache;
+ QPixmap myself;
+ QPoint pressPoint;
+ bool orientation;
+ bool lastMoveWasDrag;
+ bool init;
+
+ int updateX1;
+ int updateY1;
+ int updateX2;
+ int updateY2;
+
+ /* Premove Positions */
+ int premoveFrom;
+ int premoveTo;
+};
+
+#endif