#include "sprite2D.h" Sprite2D::Sprite2D(Image* image,const float* x,const float* y,int width, int height, int nFrames,int colunms,int startX, int startY, int delay): imagePosX(0),imagePosY(0),x(x),y(y),width(width),height(height),offsetWidth(0),offsetHeight(0), startX(startX),startY(startY), columns(colunms),nFrames(nFrames), delay(delay),count(0), frame(0), drawable(true), image(image) { } inline void Sprite2D::grabImage(){ imagePosX = startX + (frame%columns)* width - offsetWidth; imagePosY = startY + (frame/columns)* height - offsetHeight; } inline void Sprite2D::render(){ update(); draw(); } void Sprite2D::update(){ if(++count > delay){ count = 0; if(frame++>=nFrames) frame=0; } grabImage(); } Sprite2D::~Sprite2D(){ delete image; } void Sprite2D::loadImage(std::string path){ image->loadImage(path); } void Sprite2D::draw(){ if(drawable) image->draw(*x,*y,imagePosX,imagePosY,width,height); } void Sprite2D::setGrabStartX(int newStartX){ this->startX = newStartX; } void Sprite2D::setGrabStartY(int newStartY){ this->startY = newStartY; } void Sprite2D::setColumnsNumber(int newColumns){ this->columns = newColumns; } void Sprite2D::setFramesNumber(int newNFrames){ this->nFrames = newNFrames; } void Sprite2D::setDelay(int newDelay){ this->delay = newDelay; } void Sprite2D::setFrame(int newFrame){ if(newFrame>=nFrames || newFrame <=0) this->frame = 0; else this->frame = newFrame; } void Sprite2D::setDrawable(bool isDrawable){ this->drawable = isDrawable; } void Sprite2D::setImage(Image* newImagePointer){ if(this->image == NULL) delete this->image; this->image = newImagePointer; } void Sprite2D::setWidth(int newWidth){ this->width = newWidth; } void Sprite2D::setHeight(int newHeight){ this->height = newHeight; } void Sprite2D::setOffsetWidth(int newOffsetWidth){ this->offsetWidth = newOffsetWidth; } void Sprite2D::setOffsetHeight(int newOffsetHeight){ this->offsetHeight = newOffsetHeight; } void Sprite2D::turnDrawable(){ this->drawable = true; } void Sprite2D::turnOffDrawable(){ this->drawable = false; } void Sprite2D::clearDelayCount(){ this->count = 0; }