Files
2018-08-15 22:04:06 -04:00

159 lines
2.8 KiB
C++

#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;
}