159 lines
2.8 KiB
Plaintext
159 lines
2.8 KiB
Plaintext
#include "cAnimatedSprite.hpp"
|
|
|
|
using VideoEngine::cAnimatedSprite;
|
|
|
|
cAnimatedSprite::cAnimatedSprite( const unsigned long int x /*= 0*/, const unsigned long int y /*= 0*/,
|
|
const unsigned long int fps /*= 16*/ )
|
|
: m_nextTime(0), m_RATE(0)
|
|
{
|
|
setFPS(fps);
|
|
setIncrement(x, y);
|
|
}
|
|
|
|
cAnimatedSprite::cAnimatedSprite( const cAnimatedSprite& copy )
|
|
: m_nextTime(0), m_RATE(0)
|
|
{
|
|
setFPS(copy.getFPS());
|
|
setIncrement(copy.getXIncrement(), copy.getYIncrement());
|
|
}
|
|
|
|
cAnimatedSprite::~cAnimatedSprite()
|
|
{
|
|
}
|
|
|
|
///Functions
|
|
void cAnimatedSprite::UptoDown()
|
|
{
|
|
//if (TimeLeft() == 0)
|
|
//{
|
|
signed long int x = 0;
|
|
signed long int y = 0;
|
|
getStartImageArea(x, y);
|
|
y += m_yIncrement;
|
|
if (y >= signed(getImage()->getHeight()))
|
|
y = 1;
|
|
setStartImageArea(x, y);
|
|
//}
|
|
Draw();
|
|
}
|
|
|
|
void cAnimatedSprite::DowntoUp()
|
|
{
|
|
//if (TimeLeft() == 0)
|
|
//{
|
|
signed long int x = 0;
|
|
signed long int y = 0;
|
|
|
|
getStartImageArea(x, y);
|
|
y -= m_yIncrement;
|
|
if (y < 1)
|
|
y = getImage()->getHeight() - m_yIncrement;
|
|
setStartImageArea(x, y);
|
|
//}
|
|
Draw();
|
|
}
|
|
|
|
void cAnimatedSprite::LefttoRight()
|
|
{
|
|
signed long int x = 0;
|
|
signed long int y = 0;
|
|
|
|
getStartImageArea(x, y);
|
|
if (x >= signed(getImage()->getWidth()))
|
|
setStartImageArea(1,y);
|
|
if (TimeLeft() == 0)
|
|
{
|
|
x = 0;
|
|
y = 0;
|
|
|
|
getStartImageArea(x, y);
|
|
x += m_xIncrement;
|
|
if (x >= signed(getImage()->getWidth()))
|
|
x = 1;
|
|
setStartImageArea(x, y);
|
|
}
|
|
Draw();
|
|
}
|
|
|
|
void cAnimatedSprite::RighttoLeft()
|
|
{
|
|
if (TimeLeft() == 0)
|
|
{
|
|
signed long int x = 0;
|
|
signed long int y = 0;
|
|
|
|
getStartImageArea(x, y);
|
|
x -= m_xIncrement;
|
|
if (x <= 1)
|
|
x = getImage()->getWidth() - m_xIncrement;
|
|
setStartImageArea(x, y);
|
|
}
|
|
Draw();
|
|
}
|
|
|
|
///Sets
|
|
void cAnimatedSprite::setXIncrement( const unsigned long int x )
|
|
{
|
|
m_xIncrement = x;
|
|
}
|
|
|
|
void cAnimatedSprite::setYIncrement( const unsigned long int y )
|
|
{
|
|
m_yIncrement = y;
|
|
}
|
|
|
|
void cAnimatedSprite::setIncrement( const unsigned long int y, const unsigned long int x )
|
|
{
|
|
m_xIncrement = x;
|
|
m_yIncrement = y;
|
|
}
|
|
|
|
void cAnimatedSprite::setFPS( const unsigned long int fps /*= 16*/ )
|
|
{
|
|
m_fps = fps;
|
|
m_RATE = (1000 / m_fps);
|
|
m_nextTime = ((unsigned long int)SDL_GetTicks()) + m_RATE;
|
|
}
|
|
|
|
///Gets
|
|
const unsigned long int cAnimatedSprite::getXIncrement() const
|
|
{
|
|
return m_xIncrement;
|
|
}
|
|
|
|
const unsigned long int cAnimatedSprite::getYIncrement() const
|
|
{
|
|
return m_yIncrement;
|
|
}
|
|
|
|
void cAnimatedSprite::getIncrement( unsigned long int& x, unsigned long int& y ) const
|
|
{
|
|
x = m_xIncrement;
|
|
y = m_yIncrement;
|
|
}
|
|
|
|
const unsigned long int cAnimatedSprite::getFPS() const
|
|
{
|
|
return m_fps;
|
|
}
|
|
|
|
const unsigned long int cAnimatedSprite::TimeLeft()
|
|
{
|
|
unsigned long int now = (unsigned long int)SDL_GetTicks();
|
|
|
|
if(m_nextTime <= now)
|
|
{
|
|
AddTimeandRate();
|
|
return 0;
|
|
}
|
|
else
|
|
return 1;
|
|
}
|
|
|
|
void cAnimatedSprite::AddTimeandRate()
|
|
{
|
|
m_nextTime += m_RATE;
|
|
}
|
|
|
|
|