|
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.
1.8.8