/********************************************************************** ** Copyright (C) 2000 Trolltech AS. All rights reserved. ** ** This file is part of Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************//* * KAsteroids - Copyright (c) Martin R. Jones 1997 * * Part of the KDE project */ #ifndef __AST_VIEW_H__ #define __AST_VIEW_H__ #include #include #include #include #include #include "sprites.h" #define QPtrList QList #define QPtrListIterator QListIterator #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 * ); private: QCanvas field; QCanvasView view; QIntDict animation; QPtrList rocks; QPtrList missiles; QPtrList bits; QPtrList exhaust; QPtrList 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