/** * Gets a mapdata object. * @param id the id in the terrain * @return pointer to object */ MapData *RuleTerrain::getMapData(int *id, int *mapDataSetID) const { MapDataSet* mdf = 0; for (std::vector<MapDataSet*>::const_iterator i = _mapDataSets.begin(); i != _mapDataSets.end(); ++i) { mdf = *i; if (*id - mdf->getSize() < 0) { break; } *id -= mdf->getSize(); (*mapDataSetID)++; } return mdf->getObjects()->at(*id); }
/** * Gets a mapdata object. * @param id The id in the terrain. * @param mapDataSetID The id of the map data set. * @return Pointer to MapData object. */ MapData *RuleTerrain::getMapData(unsigned int *id, int *mapDataSetID) const { MapDataSet* mdf = 0; std::vector<MapDataSet*>::const_iterator i = _mapDataSets.begin(); for (; i != _mapDataSets.end(); ++i) { mdf = *i; if (*id < mdf->getSize()) { break; } *id -= mdf->getSize(); (*mapDataSetID)++; } if (i == _mapDataSets.end()) { // oops! someone at microprose made an error in the map! // set this broken tile reference to BLANKS 0. mdf = _mapDataSets.front(); *id = 0; *mapDataSetID = 0; } return mdf->getObjects()->at(*id); }