C-Engine/src/Object/Render.cpp

180 lines
3.3 KiB
C++

/* ************************************************************************** */
/* _____ _ __ ___ __ */
/* Render.cpp | ___(_)/ _| ___ ( _ ) / /_ */
/* Project: C-Engine | |_ | | |_ / _ \/ _ \| '_ \ */
/* | _| | | _| __/ (_) | (_) | */
/* Author: Fife <wasabifife@gmail.com> |_| |_|_| \___|\___/ \___/ */
/* */
/* ************************************************************************** */
#include "..\C-Engine\include\Object\Render.hpp"
Render::Render(Object * Pointeur)
{
Conteneur = Pointeur;
TabAnim = NULL;
nb_anim = 0;
iterateur = 0;
reverse = false;
direction = 0;
copie = false;
activate = false;
}
Render::~Render()
{
if(copie)
{
delete TabAnim;
//Bug lorsqu'il y a plusieurs animations
}
}
void Render::SetRender(Animation * v, int nb)
{
TabAnim = v;
nb_anim = nb;
activate = true;
}
void Render::SetRender(Animation & v)
{
TabAnim = &v;
nb_anim = 1;
activate = true;
}
void Render::CopieRender(Animation * v, int nb)
{
TabAnim = new Animation[nb];
for(int i = 0; i < nb ; i++)
{
TabAnim[i] = v[i];
}
nb_anim = nb;
copie = true;
activate = true;
}
void Render::CopieRender(Animation & v)
{
TabAnim = new Animation;
TabAnim[0] = v;
nb_anim = 1;
copie = true;
activate = true;
}
void Render::SetIt(int v)
{
if(iterateur != v && (!TabAnim[iterateur].GetWaittheEnd() || TabAnim[iterateur].GetisEnd()))
{
iterateur = v;
if( iterateur >= nb_anim) iterateur = 0;
TabAnim[ iterateur].SetIt(0);
}
}
void Render::ForceSetIt(int v)
{
iterateur = v;
if( iterateur >= nb_anim) iterateur = 0;
TabAnim[ iterateur ].SetIt(0);
}
int Render::GetIt()
{
if(TabAnim)return iterateur;
return 0;
}
void Render::ReverseRender(bool v)
{
reverse = v;
}
bool Render::GetReverse()
{
return reverse;
}
void Render::SetDirection(int v)
{
direction = v;
if(direction > 360) direction -= 360;
if(direction < 0) direction += 360;
}
int Render::GetDirection()
{
return direction;
}
int Render::GetSizeY()
{
if(TabAnim)return TabAnim[iterateur].GetSizeY();
else return 0;
}
int Render::GetSizeX()
{
if(TabAnim)return TabAnim[iterateur].GetSizeX();
else return 0;
}
int Render::GetBlitX()
{
if(TabAnim)return TabAnim[iterateur].GetBlitX();
else return 0;
}
int Render::GetBlitY()
{
if(TabAnim)return TabAnim[iterateur].GetBlitY();
else return 0;
}
void Render::ActivateRender()
{
activate = true;
}
void Render::DeActivateRender()
{
activate = false;
}
bool Render::GetActivate()
{
return activate;
}
void Render::DrawObject()
{
if(TabAnim && activate)
{
if(!reverse)
{
TabAnim[ iterateur ].DrawAnim( Conteneur->GetTransform()->GetRelativeX() , 64 - Conteneur->GetTransform()->GetRelativeY() - GetSizeY() , direction);
}
else
{
TabAnim[ iterateur].DrawReverseAnim( Conteneur->GetTransform()->GetRelativeX() , 64 - Conteneur->GetTransform()->GetRelativeY() - GetSizeY() , direction);
}
}
}