本文整理汇总了C++中Tile::agregarEntidad方法的典型用法代码示例。如果您正苦于以下问题:C++ Tile::agregarEntidad方法的具体用法?C++ Tile::agregarEntidad怎么用?C++ Tile::agregarEntidad使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Tile
的用法示例。
在下文中一共展示了Tile::agregarEntidad方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: agregarEntidad
bool Escenario::agregarEntidad(Coordenada pos, Entidad* entidad){
if (!coordEnEscenario(pos))
throw FueraDeEscenario();
try {
pair<int,int> dim = entidad->getTam();
// Se fija que todos los tiles a ocupar estén vacíos antes de ocuparlos
for (int j = 0; j < dim.second; j++)
for (int i = 0; i < dim.first; i++){
Tile* tile = this->matriz_tiles[pos.x+i][pos.y+j];
if (!tile->estaLibre())
throw TileEstaOcupado();
}
for (int j = 0; j < dim.second; j++){
for (int i = 0; i < dim.first; i++){
Tile* tile = this->matriz_tiles[pos.x+i][pos.y+j];
if (i==round(dim.first/2.0)-1 && j==round(dim.second/2.0)-1)
tile->agregarEntidad(entidad, true);
else tile->agregarEntidad(entidad);
}
}
// Se guardan en posicionesEntidades todas las entidades agregadas al mapa. No se lo limpia TODO
posicionesEntidades->push_back(entidad);
} catch ( TileEstaOcupado &e ) {
Log::imprimirALog(ERR,"Se intentó agregar una entidad en un tile ocupado "+entidad->enc());
return false;
}
return true;
}
示例2: actualizarPosicionParaEntidad
void Escenario::actualizarPosicionParaEntidad(Coordenada c, Entidad* entidad){
/* Si las coordenadas no son iguales, actualizar la coordenada de cualquier entidad */
if (entidad->getPosicion() != c) {
Tile* tile = getTile(entidad->getPosicion());
try {
if (tile != NULL)
tile->eliminarEntidad(entidad);
} catch ( NoSeRecibio &e ) { Log::imprimirALog(ERR, "No se encontró entidad en posición buscada, se creó una repetida?"); }
/* agregamos la entidad a su nuevo tile */
tile = getTile(c.x, c.y);
if (tile != NULL)
tile->agregarEntidad(entidad);
entidad->setPosicion(c);
}
}