/** * @brief Displays the entities on the map surface. */ void MapEntities::display() { for (int layer = 0; layer < LAYER_NB; layer++) { // draw the animated tiles and the tiles that overlap them: // in other words, draw all regions containing animated tiles // (and maybe more, but we don't care because non-animated tiles // will be displayed later) for (unsigned int i = 0; i < tiles_in_animated_regions[layer].size(); i++) { tiles_in_animated_regions[layer][i]->display_on_map(); } // draw the non-animated tiles (with transparent rectangles on the regions of animated tiles // since they are already drawn) non_animated_tiles_surfaces[layer]->blit(map.get_camera_position(), map.get_visible_surface()); // draw the first sprites list<MapEntity*>::iterator i; for (i = entities_displayed_first[layer].begin(); i != entities_displayed_first[layer].end(); i++) { MapEntity *entity = *i; if (entity->is_enabled()) { entity->display_on_map(); } } // draw the sprites displayed at the hero's level, in the order // defined by their y position (including the hero) for (i = entities_displayed_y_order[layer].begin(); i != entities_displayed_y_order[layer].end(); i++) { MapEntity *entity = *i; if (entity->is_enabled()) { entity->display_on_map(); } } } }
void MapEntities::display() { tile_surfaces->display_region(map.get_camera_position(), map.get_visible_surface()); std::list<MapEntity*>::iterator it; for(it = all_entities.begin(); it != all_entities.end(); it++) { MapEntity* entity = *it; if(!(entity)->is_removing()) { entity->display_on_map(); } } this->hero.display_on_map(); }