SpawnPtr CreatureManager::getSpawnForPlacePos(const Position& pos) { for (const auto& pair : m_spawns) { const Position& centerPos = pair.first; const SpawnPtr& spawn = pair.second; if (isInZone(pos, centerPos, spawn->getRadius())) return spawn; } return nullptr; }
void Spawn::addCreature(const Position& placePos, const CreatureTypePtr& cType) { const Position& centerPos = getCenterPos(); int m_radius = getRadius(); if(!isInZone(placePos, centerPos, m_radius)) { g_logger.warning(stdext::format("cannot place creature at %s (spawn's center position: %s, spawn radius: %d) (increment radius)", stdext::to_string(placePos), stdext::to_string(centerPos), m_radius )); return; } g_map.addThing(cType->cast(), placePos, 4); m_creatures.insert(std::make_pair(placePos, cType)); }
void GraphicAudibleElement::mouseButtonPressed( sf::Event event ) { if ( isInZone( event.MouseButton.X, event.MouseButton.Y ) ) { reverse(); } }