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...
 
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...
 
- 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
 
TileSet * tileSet
 
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: