summaryrefslogtreecommitdiffstats
path: root/ksmiletris/gamewidget.h
diff options
context:
space:
mode:
Diffstat (limited to 'ksmiletris/gamewidget.h')
-rw-r--r--ksmiletris/gamewidget.h112
1 files changed, 112 insertions, 0 deletions
diff --git a/ksmiletris/gamewidget.h b/ksmiletris/gamewidget.h
new file mode 100644
index 00000000..49901650
--- /dev/null
+++ b/ksmiletris/gamewidget.h
@@ -0,0 +1,112 @@
+/****************************************************************
+Copyright (c) 1998 Sandro Sigala <[email protected]>.
+All rights reserved.
+
+Permission to use, copy, modify, and distribute this software
+and its documentation for any purpose and without fee is hereby
+granted, provided that the above copyright notice appear in all
+copies and that both that the copyright notice and this
+permission notice and warranty disclaimer appear in supporting
+documentation, and that the name of the author not be used in
+advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+The author disclaim all warranties with regard to this
+software, including all implied warranties of merchantability
+and fitness. In no event shall the author be liable for any
+special, indirect or consequential damages or any damages
+whatsoever resulting from loss of use, data or profits, whether
+in an action of contract, negligence or other tortious action,
+arising out of or in connection with the use or performance of
+this software.
+****************************************************************/
+
+#ifndef GAMEWIDGET_H
+#define GAMEWIDGET_H
+
+#include <qwidget.h>
+#include <krandomsequence.h>
+
+#include "ksmiletris.h"
+
+class ScreenWidget;
+class MirrorWidget;
+class NextPieceWidget;
+class QTimer;
+
+class GameWidget : public QWidget {
+ Q_OBJECT
+
+signals:
+ void changedStats(int, int);
+ void gameOver();
+
+public:
+ bool in_game, in_pause;
+ bool do_sounds;
+ int num_level;
+ int num_points;
+
+ GameWidget(QWidget *parent=0, const char *name=0);
+ ~GameWidget();
+
+ void setPieces(PiecesType type);
+
+ Sprite& ref(int x, int y) {
+ return map[y*scr_width + x];
+ }
+
+ Sprite type(Sprite s) {
+ if (s >= Sprite_Broken1 && s < Sprite_Broken1 + num_blocks)
+ return (Sprite)(Sprite_Block1 + s - Sprite_Broken1);
+ return s;
+ }
+
+ void repaintChilds();
+
+private:
+ QPixmap *sprites;
+ ScreenWidget *screen;
+ MirrorWidget *mirror;
+ NextPieceWidget *next;
+ int xpos, ypos;
+ Sprite piece[4];
+ Sprite *map;
+ Sprite *mirror_sprites;
+ Sprite next_piece[4];
+ Sprite bg_sprite;
+ int timer_interval;
+ bool fast_mode;
+ QTimer *timer;
+ KRandomSequence random;
+
+ int num_pieces_level;
+
+ void playSound(Sound s);
+ void loadSprites();
+ void loadSprite(Sprite spr, const QString & path);
+ void loadMaskedSprite(Sprite spr, const QString & path1, const QString & path2);
+ void newBlock();
+ void putPiece();
+ void getPiece();
+ void newPiece();
+ void nextPiece();
+ void compact();
+ void broke(int x, int y, bool *xmap);
+ void recBroke(int x, int y, bool *xmap);
+ void checkSolePiece(int x, int y, bool *xmap);
+ void checkPiece(int x, int y);
+ void blockPiece();
+ void updateMirror();
+
+public slots:
+ void newGame();
+ void keyUp();
+ void keyDown();
+ void keyLeft();
+ void keyRight();
+ void keySpace();
+ void timeout();
+};
+
+#endif // !GAMEWIDGET_H