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
Componentes | Métodos Públicos | Métodos Protegidos | Atributos Protegidos | Lista de todos os Membros
Referência da Classe TileMap

Classe que modela o TileMap. Mais...

#include <TileMap.h>

Diagrama de Hierarquia para TileMap:
[legenda]
Diagrama de colaboração para TileMap:
[legenda]

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...
 
GameObjectGetGO (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 *)
 
GameObjectFindNearestGO (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...
 
- Métodos Públicos inherited from NearestGOFinder
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
 
TileSettileSet
 
int mapWidth
 
int mapHeight
 
int mapDepth
 
std::vector< GameObject * > gameObjectMatrix
 
bool displayCollisionInfo
 
vector< TileMapObserver * > observers
 

Descrição Detalhada

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.

Construtores & Destrutores

TileMap::TileMap ( string  file,
TileSet tileSet 
)

Construtor.

Parâmetros
tileSetTileSet que será usado pelo tileMap.
fileArquivo com as informações do tileMap.
collisionTileMapFileArquivo com as informações do TileMap de colisão.

Instancia o tileMap com o tileSet enviado e criar o tileMap lendo o arquivo enviado.

Métodos

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

Parâmetros
originTileTile de origem
destTileTile de destino
heuristicHeuristica a ser usada
weightMapDicioná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.

Parâmetros
xPosição X do tileMap
yposição Y do tileMap.
zposição z do tileMap.
Retorna
índice existente na posição (x, y, 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.

Parâmetros
index2Díndice xy do tileMap,.tal como retornado pelo GetTileMousePos.
layerLayer da qual queremos obter a informação existente em index2D.
Retorna
índice existente na posição (x, y, 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.

Vec2 TileMap::CalculateParallaxScrolling ( Vec2  num,
Vec2  pos,
int  layer 
) const
protected

Calcula a paralaxe.

Parâmetros
numcoordenada a ser modificada.
posposição de começo da tilemap.
layerLayer da coordenada que ser modificada
Retorna
Valor da coordenada alterado pela parallaxe.

Ele subtrai da coordenada o produto da câmera pelo incremento da layer.

GameObject * TileMap::FindNearestGO ( Vec2  origin,
std::string  objectDestType,
float  range = std::numeric_limits<float>::max() 
)
virtual

Implementa NearestGOFinder.

int TileMap::GetCoordTilePos ( Vec2 const &  mousePos,
bool  affecteedByZoom,
int  layer 
) const

Sobre qual tile o mouse está.

Parâmetros
mousePosposição do mouse, é passado como referência por motivos de performance
affecteedByZoomverdadeiro se o tileMap está sofrendo zoom, falso caso contrário.
layerlayer no tileMap do qual se quer obter a posição.
Futuras Atividades:
Verificar se deve lançar exceção ao invés de retornar um valor negativo.

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.

std::vector< int > * TileMap::GetNeighbors ( int  tile) const
protected

Obtém todos os vizinhos de um determinado tile.

Retorna
vetor com o indice dos tiles dos vizinhos.
vector< vector< int > > * TileMap::GetTileGroups ( int  tileType) const

Obtém os groups de tiles.

Parâmetros
tileTypeTipo de tile do qual se quer obter posições
Futuras Atividades:
Resolver bug na detecção de adjacências.

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.

Parâmetros
objObjeto 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.

Parâmetros
objGameObject 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.

Parâmetros
objGameObject 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.

void TileMap::Load ( string  file,
std::vector< int > &  target,
bool  setOfficialSize = false 
)
protected

Carrega um arquivo das informações do timeMap.

Parâmetros
targetTilemap onde as informações do arquvio deve ser carregadas.
setOfficialSizeVerdadeiro 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.

Parâmetros
positionPosiçã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.

Parâmetros
posValor x,y da câmera, será usado como coordenada de início do tileMap.
parallaxFlag para se ativar ou desativar o parallax das camadas
mousePosiçã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.

Parâmetros
layerLayer a ser renderizada.
posValor x,y da câmera, será usado como coordenada de início do tileMap.
mousePosiçã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.

void TileMap::ReportChanges ( int  tileChanged)
protected
void TileMap::SetTileSet ( TileSet tileSet)
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.

bool TileMap::Traversable ( int  index) const
protected

se um determinado tile está livre na camada de colisão

Retorna
true se o tile está livre na camada de colisão

Atributos

bool TileMap::displayCollisionInfo
protected

Verdadeiro se as informações de colisão devem ser exibidas no TileMap::Render, falso caso contrário.

std::vector<GameObject*> TileMap::gameObjectMatrix
protected

TileMap linearizado de GameObjects

int TileMap::mapDepth
protected

Número de camadas do TileMap.

int TileMap::mapHeight
protected

Altura do TileMap.

int TileMap::mapWidth
protected

Largura do TileMap.

vector<TileMapObserver*> TileMap::observers
protected
std::vector<int> TileMap::tileMatrix
protected

Matriz tridimentsional de índices linearizados em um vetor.

TileSet* TileMap::tileSet
protected

TileSet utilizado para renderização.


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