Пример #1
0
void ObjectMap::CopyObjectsToSpecializedMaps() {
    FOR_EACH_SPECIALIZED_MAP(ClearMap);
    for (std::map<int, TemporaryPtr<UniverseObject> >::iterator it = Map<UniverseObject>().begin();
            it != Map<UniverseObject>().end(); ++it)
    {
        FOR_EACH_SPECIALIZED_MAP(TryInsertIntoMap, it->second);
    }
}
Пример #2
0
boost::shared_ptr<UniverseObject> ObjectMap::Remove(int id) {
    // search for object in objects map
    std::map<int, boost::shared_ptr<UniverseObject> >::iterator it = m_objects.find(id);
    if (it == m_objects.end())
        return boost::shared_ptr<UniverseObject>();
    //Logger().debugStream() << "Object was removed: " << it->second->Dump();
    // object found, so store pointer for later...
    boost::shared_ptr<UniverseObject> result = it->second;
    // and erase from pointer maps
    m_objects.erase(it);
    FOR_EACH_SPECIALIZED_MAP(EraseFromMap, id);
    m_existing_objects.erase(id);
    m_existing_buildings.erase(id);
    m_existing_fields.erase(id);
    m_existing_fleets.erase(id);
    m_existing_ships.erase(id);
    m_existing_planets.erase(id);
    m_existing_pop_centers.erase(id);
    m_existing_resource_centers.erase(id);
    m_existing_systems.erase(id);
    return result;
}