home *** CD-ROM | disk | FTP | other *** search
- /*
- * KAsteroids - Copyright (c) Martin R. Jones 1997
- *
- * Part of the KDE project
- */
-
- #ifndef __AST_VIEW_H__
- #define __AST_VIEW_H__
-
- #include <qwidget.h>
- #include <qptrlist.h>
- #include <qintdict.h>
- #include <qtimer.h>
- #include <qcanvas.h>
- #include "sprites.h"
-
- #define MAX_POWER_LEVEL 1000
-
- class KAsteroidsView : public QWidget
- {
- Q_OBJECT
- public:
- KAsteroidsView( QWidget *parent = 0, const char *name = 0 );
- virtual ~KAsteroidsView();
-
- int refreshRate;
-
- void reset();
- void setRockSpeed( double rs ) { rockSpeed = rs; }
- void addRocks( int num );
- void newGame();
- void endGame();
- void newShip();
-
- void rotateLeft( bool r ) { rotateL = r; rotateSlow = 5; }
- void rotateRight( bool r ) { rotateR = r; rotateSlow = 5; }
- void thrust( bool t ) { thrustShip = t && shipPower > 0; }
- void shoot( bool s ) { shootShip = s; shootDelay = 0; }
- void setShield( bool s );
- void teleport( bool te) { teleportShip = te && mTeleportCount; }
- void brake( bool b );
- void pause( bool p);
-
- void showText( const QString &text, const QColor &color, bool scroll=TRUE );
- void hideText();
-
- int shots() const { return shotsFired; }
- int hits() const { return shotsHit; }
- int power() const { return shipPower; }
-
- int teleportCount() const { return mTeleportCount; }
- int brakeCount() const { return mBrakeCount; }
- int shieldCount() const { return mShieldCount; }
- int shootCount() const { return mShootCount; }
-
- signals:
- void shipKilled();
- void rockHit( int size );
- void rocksRemoved();
- void updateVitals();
-
- private slots:
- void hideShield();
-
- protected:
- void readSprites();
- void wrapSprite( QCanvasItem * );
- void rockHit( QCanvasItem * );
- void reducePower( int val );
- void addExhaust( double x, double y, double dx, double dy, int count );
- void processMissiles();
- void processShip();
- void processPowerups();
- void processShield();
- double randDouble();
- int randInt( int range );
-
- virtual void resizeEvent( QResizeEvent *event );
- virtual void timerEvent( QTimerEvent * );
-
- void showEvent( QShowEvent * );
-
- private:
- QCanvas field;
- QCanvasView view;
- QIntDict<QCanvasPixmapArray> animation;
- QPtrList<QCanvasSprite> rocks;
- QPtrList<KMissile> missiles;
- QPtrList<KBit> bits;
- QPtrList<KExhaust> exhaust;
- QPtrList<KPowerup> powerups;
- KShield *shield;
- QCanvasSprite *ship;
- QCanvasText *textSprite;
-
- bool rotateL;
- bool rotateR;
- bool thrustShip;
- bool shootShip;
- bool teleportShip;
- bool brakeShip;
- bool pauseShip;
- bool shieldOn;
-
- bool vitalsChanged;
-
- int shipAngle;
- int rotateSlow;
- int rotateRate;
- int shipPower;
-
- int shotsFired;
- int shotsHit;
- int shootDelay;
-
- int mBrakeCount;
- int mShieldCount;
- int mTeleportCount;
- int mShootCount;
-
- double shipDx;
- double shipDy;
-
- int textDy;
- int mFrameNum;
- bool mPaused;
- int mTimerId;
-
- double rockSpeed;
- double powerupSpeed;
-
- bool can_destroy_powerups;
-
- QTimer *shieldTimer;
- };
-
- #endif
-