Projeto IDJ - Towers Of Madness
TowerDefenseLovecraftnianoZombicida
|
Classe que modela uma sprite. Mais...
#include <Sprite.h>
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 |
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.
Sprite::Sprite | ( | void | ) |
Cria um sprite não associado a uma imagem.
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.
file | Arquivo que contém a imagem. |
highlighted | Checa se a sprite deve alterar a cor (highlight) quando o mouse passar em cima. |
frameTime | Tempo em segundos que cada imagem de um sprite sheet deve durar. |
frameCount | Quantas 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.
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.
Isso é feito verificando se o atributo texture é diferente de nullptr.
void Sprite::Open | ( | std::string | file | ) |
Carrega uma imagem.
file | Arquivo 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.
world | Região a partir do qual a imagem deve ser renderizada. |
angle | Ângulo de rotação da imagem. |
isCoordOnWorld | Verdadeiro 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.
scale | Valor 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.
scale | Valor 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.
scale | Valor 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.
x | Ponto x inicial da imagem deve ser exibida. |
y | Ponto y inicial da imagem deve ser exibida. |
w | Largura em pixels da imagem. |
h | Altura 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.
frame | Frame 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.
frameCount | Novo valor para a quantidade de frames. |
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.
frameTime | Intervalo 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.
scale | Valor 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.
scale | Valor desejado para a escala. |
Atribui o argumento a scaleX.
void Sprite::SetScaleY | ( | float | scale | ) |
Força um valor para a escala vertical do sprite.
scale | Valor desejado para a escala. |
Atribui o argumento a scaleY.
void Sprite::Update | ( | float | dt | ) |
Atualiza o estado da sprite.
dt | Intervalo 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:
SDL_BlendMode Sprite::blendMode |
O modo de mistura da sprite com as inferiores.
|
private |
Recorte do sprite que será exibido na tela.
Color Sprite::colorMultiplier |
A cor a ser usada para multiplicar a sprite.
|
private |
Indica qual "subsprite" de uma sprite animada está em exbição no momento.
|
private |
Quantidade de "subsprites" de um sprite animado.
|
private |
Tempo em segundos que cada "subsprite" deve aparecer na tela.
|
private |
Altura da textura em pixels.
|
private |
|
private |
Escala horizontal do sprite.
|
private |
Escala vertical do sprite.
|
private |
Ponteiro para a textura manejada pelo sprite.
|
private |
Quantidade de tempo em segundos que o "subsprite" atual está sendo renderizados.
|
private |
Largura da textura em pixels.