Projeto IDJ - Towers Of Madness
TowerDefenseLovecraftnianoZombicida
|
Classe que modela o TileMap. Mais...
#include <TileMap.h>
Componentes | |
class | AStarPryorityQueue |
class | LessThanByHeuristic |
Métodos Públicos | |
TileMap (string file, TileSet *tileSet) | |
Construtor. Mais... | |
int & | At (int x, int y, int z=0) const |
Obtém o índice do tileMap na posição informada. Mais... | |
int & | AtLayer (int index2D, int layer) const |
Obtém o índice do tileMap na posição informada. Mais... | |
void | Render (Vec2 pos=Vec2(0, 0), bool parallax=false, Vec2 mouse=Vec2(-1,-1)) const |
Renderiza o TileMap a partir da posição dada. Mais... | |
void | RenderLayer (int layer, Vec2 pos=Vec2(0, 0), bool parallax=false, Vec2 mouse=Vec2(-1,-1)) const |
Renderiza a layer informada. Mais... | |
int | GetWidth (void) const |
Informa a largura do tileMap. Mais... | |
int | GetHeight (void) const |
Informa a altura do tileMap. Mais... | |
int | GetDepth (void) const |
Informa o número de layers do tileMap. Mais... | |
int | GetCoordTilePos (Vec2 const &mousePos, bool affecteedByZoom, int layer) const |
Sobre qual tile o mouse está. Mais... | |
void | InsertGO (GameObject *obj, bool checkCollision=true) |
Insere GameObjct no tileMap. Mais... | |
void | InsertGO (GameObject *obj, Vec2 initialPos) |
Insere GameObjct no tileMap ou o posiciona na posição passada caso não seja possivel. Mais... | |
void | RemoveGO (int position) |
Remove GameObjct no tileMap. Mais... | |
void | RemoveGO (void) |
Remove GameObjct no tileMap. Mais... | |
GameObject * | GetGO (int index) |
Obtém GameObject de uma determinada posição do tileMap. Mais... | |
void | ShowCollisionInfo (bool show) |
Ativa ou desativa a exibição na tela das informações do tileMap de colisão. Mais... | |
bool | IsShowingCollisionInfo () |
Informa estado a exibição do tilemap de colisão. Mais... | |
vector< vector< int > > * | GetTileGroups (int tileType) const |
Obtém os groups de tiles. Mais... | |
Vec2 | GetTileSize (void) const |
Obtém o tamanho de um tile. Mais... | |
void | ShowPath (std::shared_ptr< std::vector< int >> path) |
Altera o tilemap mostrando o caminho contido em list. Mais... | |
std::list< int > * | AStar (int originTile, int destTile, AStarHeuristic *heuristic, std::map< int, double > weightMap) |
Calcula o caminho menos custoso entre dois pontos baseado em uma heuristica utilizando o algoritmo A*. Mais... | |
void | ObserveMapChanges (TileMapObserver *) |
void | RemoveObserver (TileMapObserver *) |
GameObject * | FindNearestGO (Vec2 origin, std::string objectDestType, float range=std::numeric_limits< float >::max()) |
int64_t | Have (GameObject *obj) |
Vê se um dado objeto está no tileMap. Mais... | |
![]() | |
virtual | ~NearestGOFinder () |
Métodos Protegidos | |
void | Load (string file, std::vector< int > &target, bool setOfficialSize=false) |
Carrega um arquivo das informações do timeMap. Mais... | |
void | SetTileSet (TileSet *tileSet) |
Altera o tileSet usado pelo tileMap. Mais... | |
Vec2 | CalculateParallaxScrolling (Vec2 num, Vec2 pos, int layer) const |
Calcula a paralaxe. Mais... | |
bool | Traversable (int index) const |
std::vector< int > * | GetNeighbors (int tile) const |
Obtém todos os vizinhos de um determinado tile. Mais... | |
void | ReportChanges (int tileChanged) |
Atributos Protegidos | |
std::vector< int > | tileMatrix |
TileSet * | tileSet |
int | mapWidth |
int | mapHeight |
int | mapDepth |
std::vector< GameObject * > | gameObjectMatrix |
bool | displayCollisionInfo |
vector< TileMapObserver * > | observers |
Classe que modela o TileMap.
Gerencia um tileMap,internamente possui um tileSet que é usado para renderizar o mapa. Internamente possui três mapas: um para o tileSet, outro para colisão e um terceiro de GameObjects.
TileMap::TileMap | ( | string | file, |
TileSet * | tileSet | ||
) |
std::list< int > * TileMap::AStar | ( | int | originTile, |
int | destTile, | ||
AStarHeuristic * | heuristic, | ||
std::map< int, double > | weightMap | ||
) |
Calcula o caminho menos custoso entre dois pontos baseado em uma heuristica utilizando o algoritmo A*.
originTile | Tile de origem |
destTile | Tile de destino |
heuristic | Heuristica a ser usada |
weightMap | Dicionário com os pesos relacionados a cada tipo de tile do mapa |
Retorna uma lista com a sequencia dos indices dos tiles que formam o caminho
int & TileMap::At | ( | int | x, |
int | y, | ||
int | z = 0 |
||
) | const |
Obtém o índice do tileMap na posição informada.
x | Posição X do tileMap |
y | posição Y do tileMap. |
z | posição z do tileMap. |
O valor de retorno é um referência para a posição para que se possa permitir alteração externa. PS: Com grandes poderes vêm grandes responsabilidades.
int & TileMap::AtLayer | ( | int | index2D, |
int | layer | ||
) | const |
Obtém o índice do tileMap na posição informada.
index2D | índice xy do tileMap,.tal como retornado pelo GetTileMousePos. |
layer | Layer da qual queremos obter a informação existente em index2D. |
O valor de retorno é um referência para a posição para que se possa permitir alteração externa. PS: Com grandes poderes vêm grandes responsabilidades.
Calcula a paralaxe.
num | coordenada a ser modificada. |
pos | posição de começo da tilemap. |
layer | Layer da coordenada que ser modificada |
Ele subtrai da coordenada o produto da câmera pelo incremento da layer.
|
virtual |
Implementa NearestGOFinder.
int TileMap::GetCoordTilePos | ( | Vec2 const & | mousePos, |
bool | affecteedByZoom, | ||
int | layer | ||
) | const |
Sobre qual tile o mouse está.
mousePos | posição do mouse, é passado como referência por motivos de performance |
affecteedByZoom | verdadeiro se o tileMap está sofrendo zoom, falso caso contrário. |
layer | layer no tileMap do qual se quer obter a posição. |
Retorna o número de layers(profundidade) do tileMap.Retorna o índice da posição do tileMap relativo à posição do mouse, esse valor pode ser enviado ao método TileMap::At para saber o conteúdo da posição. O valor retornado será negativo e inválido se alguma coordenada do mouse tiver fora dos limites do tileMap. Internamente usa-se busca binária para achar o tile correspondente.
int TileMap::GetDepth | ( | void | ) | const |
Informa o número de layers do tileMap.
Retorna o número de layers(profundidade) do tileMap.
GameObject * TileMap::GetGO | ( | int | index | ) |
Obtém GameObject de uma determinada posição do tileMap.
Faz-se checagem de limites para saber se a posição desejada existe.
int TileMap::GetHeight | ( | void | ) | const |
Informa a altura do tileMap.
Retorna a altura do tileMap em posições.
|
protected |
Obtém todos os vizinhos de um determinado tile.
vector< vector< int > > * TileMap::GetTileGroups | ( | int | tileType | ) | const |
Obtém os groups de tiles.
tileType | Tipo de tile do qual se quer obter posições |
Retorna grupos de tiles adjacentes do tipo informado.
Vec2 TileMap::GetTileSize | ( | void | ) | const |
Obtém o tamanho de um tile.
O tamanho retornado não leva em consideração zoom, mas leva em consideração escala.
int TileMap::GetWidth | ( | void | ) | const |
Informa a largura do tileMap.
Retorna a largura do tileMap em posições.
int64_t TileMap::Have | ( | GameObject * | obj | ) |
Vê se um dado objeto está no tileMap.
obj | Objeto o qual se quer sabe se está no tileMap |
Se o objeto existir no tileMap de gameObjects do TileMap, sua posição na matriz será informada, caso contrário um valor negativo será retornado.
void TileMap::InsertGO | ( | GameObject * | obj, |
bool | checkCollision = true |
||
) |
Insere GameObjct no tileMap.
obj | GameObject a ser inserido no tileMap de GameObjects. |
Utiliza a posição do mouse no momento(que deve ser a mesma do centro do GameObject) para identificar onde o GameObject deve ser colocado no tileMap de GameObjects. Então obj é colocado nessa posição, sua posição é alterada para se encaixar exatamente com o início da posição. Atualiza-se o tileMao de colisão para adicionar a informação que tem um GameObject na posição respectiva.
void TileMap::InsertGO | ( | GameObject * | obj, |
Vec2 | initialPos | ||
) |
Insere GameObjct no tileMap ou o posiciona na posição passada caso não seja possivel.
obj | GameObject a ser inserido no tileMap de GameObjects. |
Utiliza a posição do mouse no momento(que deve ser a mesma do centro do GameObject) para identificar onde o GameObject deve ser colocado no tileMap de GameObjects. Então obj é colocado nessa posição, sua posição é alterada para se encaixar exatamente com o início da posição. Atualiza-se o tileMao de colisão para adicionar a informação que tem um GameObject na posição respectiva.
bool TileMap::IsShowingCollisionInfo | ( | ) |
Informa estado a exibição do tilemap de colisão.
Retorna verdadeiro se o tileMap de colisão estiver sendo exibido, falso caso contrário.
|
protected |
Carrega um arquivo das informações do timeMap.
target | Tilemap onde as informações do arquvio deve ser carregadas. |
setOfficialSize | Verdadeiro se a largura, altura e profundiade lidas devem se tornar as oficiais do tilemap. |
O arquivo deve começar com 3 números: largura, altura e profundidade. Depois disso dever existir um números inteiros igual ao produto dos três números lidos organizados em layers, linhas e colunas. O argumento setOfficialSize deve ser verdadeiro se estiver lendo o arquivo de tileMap relativo com informações do tileSet.
void TileMap::ObserveMapChanges | ( | TileMapObserver * | obs | ) |
void TileMap::RemoveGO | ( | int | position | ) |
Remove GameObjct no tileMap.
position | Posição que contém o Gameobject a ser retirado. |
Atualiza-se o tileMap de colisão para adicionar a informação que tem um GameObject na posição respectiva.
void TileMap::RemoveGO | ( | void | ) |
Remove GameObjct no tileMap.
Variação do RemoveGO que internamente faz a busca o GameObject que está debaixo do mouse para remover. Atualiza-se o tileMap de colisão para adicionar a informação que tem um GameObject na posição respectiva.
void TileMap::RemoveObserver | ( | TileMapObserver * | obs | ) |
void TileMap::Render | ( | Vec2 | pos = Vec2(0,0) , |
bool | parallax = false , |
||
Vec2 | mouse = Vec2(-1, -1) |
||
) | const |
Renderiza o TileMap a partir da posição dada.
pos | Valor x,y da câmera, será usado como coordenada de início do tileMap. |
parallax | Flag para se ativar ou desativar o parallax das camadas |
mouse | Posição do mouse para checar qual tile deve sofre highlight. |
Renderiza-se todas as layers começando pelas de menor valor numérico de profundidade até as de maior valor numérico. Verifica em qual tile o mouse está para renderizá-lo highlighted.
void TileMap::RenderLayer | ( | int | layer, |
Vec2 | pos = Vec2(0,0) , |
||
bool | parallax = false , |
||
Vec2 | mouse = Vec2(-1, -1) |
||
) | const |
Renderiza a layer informada.
layer | Layer a ser renderizada. |
pos | Valor x,y da câmera, será usado como coordenada de início do tileMap. |
mouse | Posição do mouse para checar qual tile deve sofre highlight. |
Renderiza-se todas as posições da matriz na layer indicada, com suas alterações sendo feitas por parallaxe. Observação: pode exibir o tileMap de colisão se assim for pedido em ShowCollisionInfo.
|
protected |
|
protected |
Altera o tileSet usado pelo tileMap.
O tileSet informado passa a ser usado pelo tileMap.
void TileMap::ShowCollisionInfo | ( | bool | show | ) |
Ativa ou desativa a exibição na tela das informações do tileMap de colisão.
Se show for verdadeiro, futuras chamadas à Render fará com que seja exibido o tileMap de colisão. Se shor for falso, futuras chamadas à Render não exibirão o tileMap de colisão.
void TileMap::ShowPath | ( | std::shared_ptr< std::vector< int >> | path | ) |
Altera o tilemap mostrando o caminho contido em list.
|
protected |
se um determinado tile está livre na camada de colisão
|
protected |
Verdadeiro se as informações de colisão devem ser exibidas no TileMap::Render, falso caso contrário.
|
protected |
TileMap linearizado de GameObjects
|
protected |
Número de camadas do TileMap.
|
protected |
Altura do TileMap.
|
protected |
Largura do TileMap.
|
protected |
|
protected |
Matriz tridimentsional de índices linearizados em um vetor.