void Map::removeSpawnInternal(Tile* tile) { Spawn* spawn = tile->spawn; ASSERT(spawn); int z = tile->getZ(); int start_x = tile->getX() - spawn->getSize(); int start_y = tile->getY() - spawn->getSize(); int end_x = tile->getX() + spawn->getSize(); int end_y = tile->getY() + spawn->getSize(); for(int y = start_y; y <= end_y; ++y) { for(int x = start_x; x <= end_x; ++x) { TileLocation* ctile_loc = getTileL(x, y, z); if(ctile_loc != nullptr && ctile_loc->getSpawnCount() > 0) ctile_loc->decreaseSpawnCount(); } } }
bool Map::addSpawn(Tile* tile) { Spawn* spawn = tile->spawn; if(spawn) { int z = tile->getZ(); int start_x = tile->getX() - spawn->getSize(); int start_y = tile->getY() - spawn->getSize(); int end_x = tile->getX() + spawn->getSize(); int end_y = tile->getY() + spawn->getSize(); for(int y = start_y; y <= end_y; ++y) { for(int x = start_x; x <= end_x; ++x) { TileLocation* ctile_loc = createTileL(x, y, z); ctile_loc->increaseSpawnCount(); } } spawns.addSpawn(tile); return true; } return false; }