void Square::getViewIndex(const CreatureView* c, ViewIndex& ret) const { double fireSize = 0; if (creature && (c->canSee(creature) || creature->isPlayer())) { ret.insert(copyOf(creature->getViewObject())); } else if (creature && contains(c->getUnknownAttacker(), creature)) ret.insert(copyOf(ViewObject::unknownMonster())); if (c->canSee(position)) { for (Item* it : inventory.getItems()) fireSize = max(fireSize, it->getFireSize()); fireSize = max(fireSize, fire.getSize()); if (backgroundObject) ret.insert(*backgroundObject); ret.insert(getViewObject()); for (const PTrigger& t : triggers) if (auto obj = t->getViewObject(c)) ret.insert(copyOf(*obj).setAttribute(ViewObject::Attribute::BURNING, fireSize)); if (Item* it = getTopItem()) ret.insert(copyOf(it->getViewObject()).setAttribute(ViewObject::Attribute::BURNING, fireSize)); ret.setHighlight(HighlightType::NIGHT, 1.0 - level->getLight(position)); if (poisonGas.getAmount() > 0) ret.setHighlight(HighlightType::POISON_GAS, min(1.0, poisonGas.getAmount())); if (fog) ret.setHighlight(HighlightType::FOG, fog); } else ret.setHiddenId(getViewObject().id()); }
int ConnectivityTester::computeConnectivity(NodeArray<NodeArray<int>> &Connectivity) { node v = m_graph->firstNode(); int result = m_graph->numberOfNodes(); if(m_graphCopied) { v = ((GraphCopy*)m_graph)->original().firstNode(); } for (; v != nullptr; v = v->succ()) { Connectivity[v][v] = 0; for (node u = v->succ(); u != nullptr; u = u->succ()) { Connectivity[v][u] = computeConnectivity(copyOf(v, true), copyOf(u)); result = min(result, Connectivity[v][u]); if (m_directed) { Connectivity[u][v] = computeConnectivity(copyOf(u, true), copyOf(v)); result = min(result, Connectivity[u][v]); } else { Connectivity[u][v] = Connectivity[v][u]; } } } return result; }
void Level::replaceSquare(Vec2 pos, PSquare square, bool storePrevious) { squares[pos]->onConstructNewSquare(square.get()); Creature* c = squares[pos]->getCreature(); if (c) squares[pos]->removeCreature(); for (Item* it : copyOf(squares[pos]->getItems())) square->dropItem(squares[pos]->removeItem(it)); addLightSource(pos, squares[pos]->getLightEmission(), -1); square->setPosition(pos); square->setLevel(this); for (PTrigger& t : squares[pos]->removeTriggers()) square->addTrigger(std::move(t)); square->setBackground(squares[pos].get()); if (const Tribe* tribe = squares[pos]->getForbiddenTribe()) square->forbidMovementForTribe(tribe); if (storePrevious) oldSquares[pos] = std::move(squares[pos]); squares[pos] = std::move(square); if (c) { squares[pos]->setCreature(c); } addLightSource(pos, squares[pos]->getLightEmission(), 1); updateVisibility(pos); squares[pos]->updateSunlightMovement(isInSunlight(pos)); updateConnectivity(pos); }
QgsFeatureList QgsClipboard::transformedCopyOf( QgsCoordinateReferenceSystem destCRS ) { QgsFeatureList featureList = copyOf(); QgsCoordinateTransform ct( crs(), destCRS ); QgsDebugMsg( "transforming clipboard." ); for ( QgsFeatureList::iterator iter = featureList.begin(); iter != featureList.end(); ++iter ) { iter->geometry()->transform( ct ); } return featureList; }
EventGenerator<Listener>::~EventGenerator<Listener>() { for (Listener* l : copyOf(listeners)) l->unsubscribeFromCreature(this); }
vector<PItem> Equipment::removeItems(const vector<WItem>& items, WCreature c) { vector<PItem> ret; for (WItem& it : copyOf(items)) ret.push_back(removeItem(it, c)); return ret; }
// Compound }}} // Generic {{{ TransientDatatype Datatype::copy() { return TransientDatatype(copyOf(*this)); }