////////////////////////////////////////////////////////////////////////////////////////////////////////
//  Sprites.h

#if !defined(AFX_SPRITES_H__A2954252_C9A2_11D1_AE92_000000000000__INCLUDED_)
#define AFX_SPRITES_H__A2954252_C9A2_11D1_AE92_000000000000__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

//#define   FrameAbsVelocity(v) ((v) * 100 / ((CDirectXApp*)AfxGetApp())->m_nFrameRate)
#define FrameAbsVelocity(v) (v)

class CSprite
{
public:
    double              m_x, m_y;
    int                 m_cx, m_cy;
    double              m_vx, m_vy;
    int                 m_nFrame;
    int                 m_xImage, m_yImage;

    int                 m_nFramesMax, m_nFramesAcross;
    DWORD               m_dwFlag;

    IDirectDrawSurface7 *m_lpSurface;

    CSprite();
    CSprite(IDirectDrawSurface7 *lpSurface, int xImage, int yImage, int cx, int cy, int nFramesMax, int nFramesAcross = -1);
    CSprite(CSprite&);
    
    void    NextFrame(void);
    void    Move(void);
    void    Draw();
};

// Sprite class representing the player
class CPlayerSprite : public CSprite  
{
public:
    CPlayerSprite(double nVelocity);
    CPlayerSprite(CPlayerSprite&);

public:
    enum Direction
    {
        STOPPED = 0,
        LEFT,
        UP,
        RIGHT,
        DOWN
    };

    Direction   m_nDirection, m_nNextDirection;
    double      m_nVelocity;
    BOOL        m_bAtGrid;

    virtual void Move();
};

// Sprite class representing the bouncing enemies
class CEnemySprite : public CSprite  
{
public:
    CEnemySprite();
    CEnemySprite(CEnemySprite&);

    virtual void Move();

};

#endif // !defined(AFX_SPRITES_H__A2954252_C9A2_11D1_AE92_000000000000__INCLUDED_)