|
|
|
/***************************************************************************
|
|
|
|
begin : Fri May 19 2000
|
|
|
|
copyright : (C) 2000 by Roman Merzlyakov
|
|
|
|
email : roman@sbrf.barrt.ru
|
|
|
|
copyright : (C) 2000 by Roman Razilov
|
|
|
|
email : Roman.Razilov@gmx.de
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
/***************************************************************************
|
|
|
|
* *
|
|
|
|
* 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 linesboard_h
|
|
|
|
#define linesboard_h
|
|
|
|
|
|
|
|
#include <tqwidget.h>
|
|
|
|
#include <tqpixmap.h>
|
|
|
|
#include <tqtimer.h>
|
|
|
|
#include <tqlabel.h>
|
|
|
|
|
|
|
|
#include <krandomsequence.h>
|
|
|
|
|
|
|
|
#include "field.h"
|
|
|
|
//#include "shotcounter.h"
|
|
|
|
#include "ballpainter.h"
|
|
|
|
|
|
|
|
class LinesBoard : public Field
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
LinesBoard( BallPainter * abPainter, TQWidget* parent=0, const char* name=0 );
|
|
|
|
~LinesBoard();
|
|
|
|
|
|
|
|
int width();
|
|
|
|
int height();
|
|
|
|
int wHint();
|
|
|
|
int hHint();
|
|
|
|
// void doAfterBalls();
|
|
|
|
void placeBalls(int nextBalls[BALLSDROP]);
|
|
|
|
void undo();
|
|
|
|
bool gameOver() { return bGameOver; }
|
|
|
|
void setGameOver(bool b);
|
|
|
|
int random(int max) { return (level == DEMO_LEVEL) ? rnd_demo.getLong(max) : rnd.getLong(max); }
|
|
|
|
void saveRandomState() { rnd_saved = rnd; }
|
|
|
|
void restoreRandomState() { rnd = rnd_saved; }
|
|
|
|
void setLevel(int _level) { level = _level; }
|
|
|
|
void startDemoMode();
|
|
|
|
void adjustDemoMode(bool allowMove, bool off);
|
|
|
|
void showDemoText(const TQString &);
|
|
|
|
void hideDemoText();
|
|
|
|
void demoClick(int x, int y);
|
|
|
|
void demoAdjust(int a);
|
|
|
|
|
|
|
|
signals:
|
|
|
|
void endTurn();
|
|
|
|
void endGame();
|
|
|
|
void eraseLine(int nb);
|
|
|
|
void userTurn();
|
|
|
|
|
|
|
|
private:
|
|
|
|
int anim;
|
|
|
|
|
|
|
|
struct Waypoints {
|
|
|
|
int x,y;
|
|
|
|
} *way;
|
|
|
|
int nextBalls[BALLSDROP];
|
|
|
|
|
|
|
|
int animmax;
|
|
|
|
|
|
|
|
//used for running and animation phase
|
|
|
|
int painting;
|
|
|
|
int animstep;
|
|
|
|
int animdelaycount;
|
|
|
|
int animdelaystart;
|
|
|
|
int direction;
|
|
|
|
|
|
|
|
|
|
|
|
int nextBallToPlace;
|
|
|
|
int jumpingCol;
|
|
|
|
int jumpingRow;
|
|
|
|
|
|
|
|
int focusX;
|
|
|
|
int focusY;
|
|
|
|
|
|
|
|
int level;
|
|
|
|
|
|
|
|
TQTimer* timer;
|
|
|
|
// ShotCounter* shCounter;
|
|
|
|
BallPainter* bPainter;
|
|
|
|
bool bGameOver;
|
|
|
|
KRandomSequence rnd;
|
|
|
|
KRandomSequence rnd_saved;
|
|
|
|
KRandomSequence rnd_demo;
|
|
|
|
|
|
|
|
TQLabel *demoLabel;
|
|
|
|
bool bAllowMove;
|
|
|
|
|
|
|
|
void paintEvent( TQPaintEvent* );
|
|
|
|
void mousePressEvent( TQMouseEvent* );
|
|
|
|
|
|
|
|
void AnimStart(int panim);
|
|
|
|
void AnimNext();
|
|
|
|
int AnimEnd();
|
|
|
|
int getAnim(int x, int y ); // returns if the specifyed cell is animated..
|
|
|
|
void AnimJump( int col, int row );
|
|
|
|
|
|
|
|
int erase5Balls();
|
|
|
|
bool existPath(int ax, int ay, int bx, int by);
|
|
|
|
void placeBall();
|
|
|
|
void placePlayerBall(int col, int row);
|
|
|
|
void moveFocus(int dx, int dy);
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
void moveLeft();
|
|
|
|
void moveRight();
|
|
|
|
void moveUp();
|
|
|
|
void moveDown();
|
|
|
|
void placePlayerBall();
|
|
|
|
|
|
|
|
protected slots:
|
|
|
|
void timerSlot();
|
|
|
|
void demoClickStep();
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|