| Projeto IDJ - Towers Of Madness
    TowerDefenseLovecraftnianoZombicida | 
Classe que modela o todo-poderoso Jogo. Mais...
#include <Game.h>
| Métodos Públicos | |
| Game (std::string title, int width, int height) | |
| Construtor.  Mais... | |
| ~Game () | |
| Destrutor.  Mais... | |
| SDL_Renderer * | GetRenderer (void) const | 
| Obtém referência do SDL_Renderer.  Mais... | |
| State & | GetCurrentState (void) const | 
| Obtém estado corrente do jogo.  Mais... | |
| void | Push (State *state) | 
| Empilha um estado na pilha.  Mais... | |
| void | Run (void) | 
| Realiza o loop principal.  Mais... | |
| float | GetDeltaTime (void) const | 
| Retorna do tempo passado desde o último frame.  Mais... | |
| Vec2 | GetWindowDimensions (void) const | 
| Informa as dimensões da janela corrente.  Mais... | |
| void | SetMaxFramerate (signed long int newMaxFramerate) | 
| Altera o valor do limite de framerate.  Mais... | |
| unsigned int | GetMaxFramerate (void) const | 
| Obtêm o valor de framerate máximo do controle de framerate.  Mais... | |
| float | GetCurrentFramerate (void) const | 
| Obtêm o fps atual do jogo.  Mais... | |
| void | LimitFramerate (bool limit) | 
| Seta se o framerate máximo deve ser utilizado ou não.  Mais... | |
| bool | IsFramerateLimited (void) const | 
| Retorna se o framerate está sendo limitado ou não.  Mais... | |
| SDL_Window * | GetWindow (void) const | 
| Obtém referência do SDL_Window.  Mais... | |
| void | SetWindowDimensions (Vec2 size) | 
| Define as dimensões da janela corrente.  Mais... | |
| void | SetWindowFullscreen (bool isFullScreen) | 
| Define a janela como tela cheia.  Mais... | |
| void | SetWindowMaximized (void) | 
| Define se a janela deve ser maximizada.  Mais... | |
| void | SetWindowBorderless (bool isBorderless) | 
| Define se a janela deve ter bordas.  Mais... | |
| void | SetWindowCentered (void) | 
| Reposiciona a janela.  Mais... | |
| bool | GetWindowFullscreen (void) const | 
| Informa se a janela está em tela cheia.  Mais... | |
| bool | GetWindowMaximized (void) const | 
| Informa se a janela está em seu tamanho máximo.  Mais... | |
| bool | GetWindowBorderless (void) const | 
| Informa se a janela tem bordas.  Mais... | |
| unsigned int | GetTicks (void) | 
| Obtém timeStamp atual.  Mais... | |
| Métodos Públicos Estáticos | |
| static Game & | GetInstance (void) | 
| Obtém referência do Game.  Mais... | |
| Métodos Privados | |
| void | CalculateDeltaTime (void) | 
| Calcula o tempo transcorrido desde a última chamada a essa função.  Mais... | |
| void | UpdateStack (void) | 
| Atualiza a pilha de estados.  Mais... | |
| Atributos Privados | |
| unsigned int | frameStart | 
| float | dt | 
| State * | storedState | 
| SDL_Window * | window | 
| SDL_Renderer * | renderer | 
| std::stack< std::unique_ptr < State > > | stateStack | 
| InputManager & | inputManager | 
| unsigned int | maxFramerate | 
| float | frameDuration | 
| bool | capFramerate | 
| Atributos Privados Estáticos | |
| static Game * | instance = nullptr | 
Classe que modela o todo-poderoso Jogo.
Contém o loop principal do jogo, gerencia a pilha de estados do jogo, responsável por gerenciar a janela(no momento apenas informa as dimensões da janela). Também calcula é o que calcula o delta time que é enviado ao update de várias entidades do jogo.
| Game::Game | ( | std::string | title, | 
| int | width, | ||
| int | height | ||
| ) | 
Construtor.
| title | Nome da janela. | 
| width | Largura da janela em pixels. | 
| height | Altura da janela em pixels | 
Para fins de detecção de problemas futuros, a versão da SDL para a qual o jogo foi compilado e a versão na qual a SDL está sendo linkada no carregamento. A deferença entre essas versões podem ser a causa de alguns bugs. As seguintes tarefas são feitas:
| Game::~Game | ( | ) | 
Destrutor.
A pilha de estados é esvaziada. Se tiver algum estado em storedState ele será deletado. O ClearResources é chamado e os sistemas da SDL que foram inicializados são destruídos na ordem inversa em que foram inicializados. Par garantir que primeiro os subsistemas que não tem dependêntes sejam desalocados primeiros.
| 
 | private | 
Calcula o tempo transcorrido desde a última chamada a essa função.
Ela é chamada a cada frame para que seja calculado o tempo transcorrido desde o útimo frame. Esse cálculo é feito a partir da diferença entre o valor retornado em SDL_GetTicks com o valor em frameStart. Atribui-se ao dt o resultado dessa operação dividida por mil(os ticks contam milésimos). Depois atualiza-se o valor de frameStart com o que foi obitdo em SDL_GetTicks.
| float Game::GetCurrentFramerate | ( | void | ) | const | 
Obtêm o fps atual do jogo.
Retorna a quantos frames por segundo o jogo está rodando. Se a limitação de framerate estiver ativada, o retorno dessa função será no máximo o valor obtido por GetMaxFramerate().
| State & Game::GetCurrentState | ( | void | ) | const | 
Obtém estado corrente do jogo.
Retorna o Estado que est no topo da pilha de estados.
| float Game::GetDeltaTime | ( | void | ) | const | 
Retorna do tempo passado desde o último frame.
Retorna o intervalo de tempo do último frame ao atual calculado anteriormente pelo CalculateDeltaTime.
| 
 | static | 
| unsigned int Game::GetMaxFramerate | ( | void | ) | const | 
Obtêm o valor de framerate máximo do controle de framerate.
Retorna o valor que está sendo utilizado pelo controle de framerate como quantidade máxima de frames por segundo.
| SDL_Renderer * Game::GetRenderer | ( | void | ) | const | 
Obtém referência do SDL_Renderer.
Retorna a referência do SDL_Renderer do Game
| unsigned int Game::GetTicks | ( | void | ) | 
Obtém timeStamp atual.
Retorna o timestamp atual.
| SDL_Window * Game::GetWindow | ( | void | ) | const | 
Obtém referência do SDL_Window.
Retorna a referência do SDL_Window do Game
| bool Game::GetWindowBorderless | ( | void | ) | const | 
Informa se a janela tem bordas.
Retorna true se a janela estiver sem bordas ou false se estiver com bordas.
| Vec2 Game::GetWindowDimensions | ( | void | ) | const | 
Informa as dimensões da janela corrente.
Retorna o intervalo de tempo do último frame ao atual calculado anteriormente pelo CalculateDeltaTime.
| bool Game::GetWindowFullscreen | ( | void | ) | const | 
Informa se a janela está em tela cheia.
Retorna true se a janela estiver no modo tela cheia ou false se a janela não estiver em tela cheia.
| bool Game::GetWindowMaximized | ( | void | ) | const | 
Informa se a janela está em seu tamanho máximo.
Retorna true se a janela maximizada ou false se não estiver maximizada.
| bool Game::IsFramerateLimited | ( | void | ) | const | 
Retorna se o framerate está sendo limitado ou não.
Retorna se o controle de framerate está limitando o framerate a um máximo ou não.
| void Game::LimitFramerate | ( | bool | limit | ) | 
Seta se o framerate máximo deve ser utilizado ou não.
| limit | true para limitar. false para desbloquear | 
Seta se o controle de framerate deve garantir que o framerate não passe do máximo ou não.
| void Game::Push | ( | State * | state | ) | 
Empilha um estado na pilha.
| state | estado a ser empilhado. | 
O estado recebido como parâmetro é atribuído à storedState. Para que se torne o corrente no início do próximo frame. Isso não é feito no exato momento da chamado pois pode gerar inconsistência no processamento do frame atual.
| void Game::Run | ( | void | ) | 
Realiza o loop principal.
As seguintes oerações são feitas:
| void Game::SetMaxFramerate | ( | signed long int | newMaxFramerate | ) | 
Altera o valor do limite de framerate.
| newMaxFramerate | o novo valor máximo a ser usado controle de framerate | 
Altera as variáveis do controle de framerate de acordo com o argumento passado. Se o valor informado for menor que 1, o frame rate máximo será 1.
| void Game::SetWindowBorderless | ( | bool | isBorderless | ) | 
Define se a janela deve ter bordas.
| isBorderless | Define se a janela deve ter bordas(false) ou não (true) de acordo com a flag recebida. | 
| void Game::SetWindowCentered | ( | void | ) | 
Reposiciona a janela.
Posiciona a janela no centro da tela.
| void Game::SetWindowDimensions | ( | Vec2 | size | ) | 
Define as dimensões da janela corrente.
| size | Vec2(x, y) que representa os novos tamanhos da janela. | 
Altera as dimensões da janela de acordo com o tamanho (width, height) recebido.
| void Game::SetWindowFullscreen | ( | bool | isFullScreen | ) | 
Define a janela como tela cheia.
| isFullScreen | Flag que determina se a janela deve ser fullscreen ou windowed. | 
Define a janela como tela cheia (true) ou windowed (false) dependendo da flag recebida.
| void Game::SetWindowMaximized | ( | void | ) | 
Define se a janela deve ser maximizada.
Define se a janela deve ter seu tamanho máximo sem torná-la tela cheia.
| 
 | private | 
Atualiza a pilha de estados.
Primeiro verifica-se o estado no topo da pilha pediu para ser desempilhado e se tiver solicitado, essa ação é feita e o ClearResources é chamado. Depois verifica-se se tem algum estado esperando para ser empilhado em storedState, se tiver, ele é empilhado.
| 
 | private | 
Flag para decidir se o framerate do jogo será limitado a um valor máximo ou não.
| 
 | private | 
Armazena o intervalo de tempo em segundos desde o último frame. Esse valor é calculado a partir da diferença entre o frameStart com o SDL_GetTicks.
| 
 | private | 
Duração mínima de cada frame
| 
 | private | 
Armazena a quantidade de ticks no momento do início do frame. Usado para calcular intervalos de tempo através de diferença da quantidade de ticks atual com o valor armazenado nessa variável.
| 
 | private | 
Gerenciador de entradas do usuário.
| 
 | staticprivate | 
Instância estática do Game. Esquema básico de singleton.
| 
 | private | 
Armazena o limite superior do framerate
| 
 | private | 
Ponteiro para o SDL_renderer do jogo.
| 
 | private | 
Pilha de estados.
| 
 | private | 
Armazena o estado que deve ser empilhado no fim do frame atual. Isso não pode acontecer no meio do frame para não gerar inconsistências.
| 
 | private | 
Ponteiro para SDL_Window do game.
 1.8.8
 1.8.8