|  | Home · All Classes · Main Classes · Grouped Classes · Modules · Functions |

# view.h Example File
graphicsview/portedasteroids/view.h

    /****************************************************************************
    **
    ** Copyright (C) 2006-2006 Trolltech ASA. All rights reserved.
    **
    ** This file is part of the example classes of the Qt Toolkit.
    **
    ** Licensees holding valid Qt Preview licenses may use this file in
    ** accordance with the Qt Preview License Agreement provided with the
    ** Software.
    **
    ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
    ** information about Qt Commercial License Agreements.
    **
    ** Contact info@trolltech.com if any conditions of this licensing are
    ** not clear to you.
    **
    ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
    ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
    **
    ****************************************************************************/

    /*
     * KAsteroids - Copyright (c) Martin R. Jones 1997
     *
     * Part of the KDE project
     */

    #ifndef __AST_VIEW_H__
    #define __AST_VIEW_H__

    #include <qwidget.h>
    #include <q3ptrlist.h>
    #include <q3intdict.h>
    #include <qtimer.h>
    #include <QGraphicsScene>
    #include <QGraphicsView>
    //Added by qt3to4:
    #include <QTimerEvent>
    #include <QShowEvent>
    #include <QResizeEvent>
    #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:
        bool readSprites();
        void wrapSprite( QGraphicsItem * );
        void rockHit( AnimatedPixmapItem * );
        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:
        QGraphicsScene field;
        QGraphicsView view;
        QMap<int, QList<QPixmap> > animation;
        Q3PtrList<AnimatedPixmapItem> rocks;
        Q3PtrList<KMissile> missiles;
        Q3PtrList<KBit> bits;
        Q3PtrList<KExhaust> exhaust;
        Q3PtrList<KPowerup> powerups;
        KShield *shield;
        AnimatedPixmapItem *ship;
        QGraphicsTextItem *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;
        bool initialized;
    };

    #endif