Projeto IDJ - Towers Of Madness
TowerDefenseLovecraftnianoZombicida
 Todos Classes Arquivos Funções Variáveis Definições de Tipos Enumerações Valores enumerados Definições e Macros Páginas
Métodos Públicos | Atributos Públicos | Atributos Privados | Lista de todos os Membros
Referência da Classe Sprite

Classe que modela uma sprite. Mais...

#include <Sprite.h>

Diagrama de colaboração para Sprite:
[legenda]

Métodos Públicos

 Sprite (void)
 Cria um sprite não associado a uma imagem. Mais...
 
 Sprite (std::string file, bool highlighted=false, float frameTime=1, int frameCount=1)
 Cria um sprite válida. Mais...
 
 ~Sprite ()
 Destrutor. Mais...
 
void Open (std::string file)
 Carrega uma imagem. Mais...
 
void SetClip (int x, int y, int w, int h)
 Seleciona o recorte da imagem que deve ser renderizado. Mais...
 
void Render (Rect world, float angle=0, bool isCoordOnWorld=true) const
 Renderiza a imagem. Mais...
 
int GetWidth (void) const
 Informa a largura do sprite. Mais...
 
int GetHeight (void) const
 Informa a altura do sprite. Mais...
 
std::shared_ptr< SDL_Texture > GetTexture (void) const
 Obtém a textura armazenada na Sprite. Mais...
 
bool IsOpen (void) const
 Verifica se tem uma imagem carregada. Mais...
 
void Update (float dt)
 Atualiza o estado da sprite. Mais...
 
void SetFrame (int frame)
 Força a animação a ficar num frame específico. Mais...
 
void SetFrameCount (int frameCount)
 Altera a quantidade de frames do sprite animado. Mais...
 
void SetFrameTime (float frameTime)
 Altera o ritmo dos sprites animados. Mais...
 
void SetScaleX (float scale)
 Força um valor para a escala horizontal do sprite. Mais...
 
void SetScaleY (float scale)
 Força um valor para a escala vertical do sprite. Mais...
 
void SetScale (float scale)
 Força um valor para a escala horizontal e vertical da sprite. Mais...
 
void ScaleX (float scale)
 Altera a escala horizontal do sprite. Mais...
 
void ScaleY (float scale)
 Altera a escala vertical do sprite. Mais...
 
void Scale (float scale)
 Altera a escala vertical e horizontal do sprite. Mais...
 

Atributos Públicos

Color colorMultiplier
 
SDL_BlendMode blendMode
 

Atributos Privados

std::shared_ptr< SDL_Texture > texture
 
int width
 
int height
 
int frameCount
 
int currentFrame
 
float timeElapsed
 
float frameTime
 
SDL_Rect clipRect
 
float scaleX
 
float scaleY
 
bool highlightable
 

Descrição Detalhada

Classe que modela uma sprite.

Sprite é uma imagem carregada na memória. Essa classe também traz uma séria de funcionalidades além disso, como escala, animações de sprite sheets e exibição na tela da imagem.

Construtores & Destrutores

Sprite::Sprite ( void  )

Cria um sprite não associado a uma imagem.

Futuras Atividades:
verificar a real necessidade disso.

Uma instância de sprite é criada. A escala inicial(X e Y) é 1.0, supondo-se que não é um sprite sheet(frameCount=1, frameTime=0), o campo texture é inicializado com nullptr.

Sprite::Sprite ( std::string  file,
bool  highlighted = false,
float  frameTime = 1,
int  frameCount = 1 
)

Cria um sprite válida.

Parâmetros
fileArquivo que contém a imagem.
highlightedCheca se a sprite deve alterar a cor (highlight) quando o mouse passar em cima.
frameTimeTempo em segundos que cada imagem de um sprite sheet deve durar.
frameCountQuantas imagens tem no sprite sheet. Caso o valor seja 1 significa que é um sprite não animado.

Uma instância de sprite é criada. A escala inicial(X e Y) é 1.0. o método Open é chamado para carregar a imagem.

Sprite::~Sprite ( )

Destrutor.

Como a desalocação a imagem é feita automaticamente pelo shared_ptr/Resources e todos os outros atritutos são alocados estaticamente, nada precisa ser feito.

Métodos

int Sprite::GetHeight ( void  ) const

Informa a altura do sprite.

Retorna a largura do sprite. De qualquer forma essa altura leva em consideração a escala do sprite.

std::shared_ptr< SDL_Texture > Sprite::GetTexture ( void  ) const

Obtém a textura armazenada na Sprite.

Com grandes poderes vêm grandes responsabilidades.

int Sprite::GetWidth ( void  ) const

Informa a largura do sprite.

Retorna a largura do sprite, no caso do sprite sheet é retornado a largura de um único sprite do sprite sheet. De qualquer forma essa largura leva em consideração a escala do sprite.

bool Sprite::IsOpen ( void  ) const

Verifica se tem uma imagem carregada.

Retorna
Verdadeiro se a instância da Sprite contém uma imagem carregada, falso caso contrário.

Isso é feito verificando se o atributo texture é diferente de nullptr.

void Sprite::Open ( std::string  file)

Carrega uma imagem.

Parâmetros
fileArquivo que contém a imagem.

Faz uso da classe Resources para obter o ponteiro para a imagem em memória, verifica o tamanho da imagem carregada para atribuir a width e height e chama o método SetClip da imagem, levando em consideração, caso seja uma sprite animada, quantas sprites fazem parte da animação.

void Sprite::Render ( Rect  world,
float  angle = 0,
bool  isCoordOnWorld = true 
) const

Renderiza a imagem.

Parâmetros
worldRegião a partir do qual a imagem deve ser renderizada.
angleÂngulo de rotação da imagem.
isCoordOnWorldVerdadeiro se a região a ser renderizada deve ser convertida do mundo para tela. Falso se as coordenadas já estão convertidas (UI e BGs, por exemplo).

Renderiza o corte da imagem existente em clipRect nas posições (x, y) da informada nos argumentos. A imagem será rotacionada de acordo com o argumento angle. Os valores do retângulo serão convertidos do mundo para tela se isCoordOnWorld for verdadeiro. É realizado uma otimização para que, se a Sprite não possuir nenhuma coordenada na tela, ela não será renderizada.

void Sprite::Scale ( float  scale)

Altera a escala vertical e horizontal do sprite.

Parâmetros
scaleValor no qual a escala vertical e horizontal devem ser alteradas.

Atribui a scaleY produto de scaleX pelo argumento e atribui a scaleX produto de scaleX pelo argumento.

void Sprite::ScaleX ( float  scale)

Altera a escala horizontal do sprite.

Parâmetros
scaleValor no qual a escala horizontal deve ser alterada.

Atribui a scaleX produto de scaleX pelo argumento.

void Sprite::ScaleY ( float  scale)

Altera a escala vertical do sprite.

Parâmetros
scaleValor no qual a escala vertical deve ser alterada.

Atribui a scaleY produto de scaleY pelo argumento.

void Sprite::SetClip ( int  x,
int  y,
int  w,
int  h 
)

Seleciona o recorte da imagem que deve ser renderizado.

Parâmetros
xPonto x inicial da imagem deve ser exibida.
yPonto y inicial da imagem deve ser exibida.
wLargura em pixels da imagem.
hAltura em pixels da imagem.

Atribui a clipRect os valores informados.

void Sprite::SetFrame ( int  frame)

Força a animação a ficar num frame específico.

Parâmetros
frameFrame que deve ser colocado.

Atribui o frame informado ao currentFrame, usando a operação módulo para garantir que esse frame é válido. O campo x do clipRect é alterado para refletir essa mudança.

void Sprite::SetFrameCount ( int  frameCount)

Altera a quantidade de frames do sprite animado.

Parâmetros
frameCountNovo valor para a quantidade de frames.
Futuras Atividades:
verificar a necessidade de existir SetFrameCount.

O atribuito frameCount recebe o valor informado o width é recalculado usando o novo valor.

void Sprite::SetFrameTime ( float  frameTime)

Altera o ritmo dos sprites animados.

Parâmetros
frameTimeIntervalo no qual se deveja que os sprites sejam trocados

Atribui o argumento a frameTime.

void Sprite::SetScale ( float  scale)

Força um valor para a escala horizontal e vertical da sprite.

Parâmetros
scaleValor desejado para a escala.

Atribui o argumento a scaleY e scaleX.

void Sprite::SetScaleX ( float  scale)

Força um valor para a escala horizontal do sprite.

Parâmetros
scaleValor desejado para a escala.

Atribui o argumento a scaleX.

void Sprite::SetScaleY ( float  scale)

Força um valor para a escala vertical do sprite.

Parâmetros
scaleValor desejado para a escala.

Atribui o argumento a scaleY.

void Sprite::Update ( float  dt)

Atualiza o estado da sprite.

Parâmetros
dtIntervalo de tempo desde a última chamada a Update.

Verifica se o sprite carregado deve ser atualizado se for um sprite sheet. As seguintes operações são feitas:

  • Adiciona dt ao timeElapsed.
  • Se o timeElapsed for maior que o tempo em que cada frame deve estar na tela(frametime) atribuimos ao currentFrame o valor do próximo frame e alteramos o valor x do clipRect para refletir essa operação. Colocando-o para o próximo sprite.

Atributos

SDL_BlendMode Sprite::blendMode

O modo de mistura da sprite com as inferiores.

SDL_Rect Sprite::clipRect
private

Recorte do sprite que será exibido na tela.

Color Sprite::colorMultiplier

A cor a ser usada para multiplicar a sprite.

int Sprite::currentFrame
private

Indica qual "subsprite" de uma sprite animada está em exbição no momento.

int Sprite::frameCount
private

Quantidade de "subsprites" de um sprite animado.

float Sprite::frameTime
private

Tempo em segundos que cada "subsprite" deve aparecer na tela.

int Sprite::height
private

Altura da textura em pixels.

bool Sprite::highlightable
private
float Sprite::scaleX
private

Escala horizontal do sprite.

float Sprite::scaleY
private

Escala vertical do sprite.

std::shared_ptr<SDL_Texture> Sprite::texture
private

Ponteiro para a textura manejada pelo sprite.

float Sprite::timeElapsed
private

Quantidade de tempo em segundos que o "subsprite" atual está sendo renderizados.

int Sprite::width
private

Largura da textura em pixels.


A documentação para esta classe foi gerada a partir dos seguintes arquivos: