//----------------------------------------------------------------------------- // Purpose: Fill out given response with the appropriate one for this concept //----------------------------------------------------------------------------- void CBaseMultiplayerPlayer::SpeakConcept( AI_Response &outResponse, int iConcept ) { m_iCurrentConcept = iConcept; AIConcept_t concept( g_pszMPConcepts[iConcept] ); FindResponse( outResponse, concept ); }
QtPvdbTestEdgeItemDialog::QtPvdbTestEdgeItemDialog(QWidget *parent) : QtHideAndShowDialog(parent), ui(new Ui::QtPvdbTestEdgeItemDialog), m_edge_item(nullptr), m_from(CreateFrom()), m_to(CreateTo()) { ui->setupUi(this); #ifndef NDEBUG Test(); #endif assert(ui->view->scene()); assert(m_from); assert(m_to); { const std::size_t index = 4; //Must have examples assert(index < pvdb::EdgeFactory::GetTests(m_from,m_to).size()); m_edge = pvdb::EdgeFactory::GetTests(m_from,m_to)[index]; assert(m_edge->GetConcept()); assert(m_edge->GetConcept()->GetExamples()); assert(!m_edge->GetConcept()->GetExamples()->Get().empty() && "Otherwise 'ui->box_competency->addItem(qs)' will fail, due to on_box_competency_currentIndexChanged"); } assert(m_edge); #ifndef NDEBUG { const int edge_use_count = m_edge.use_count(); assert(edge_use_count == 1); } #endif //Create three nodes that the edges can connect to QtPvdbNodeItem * node1 = nullptr; { //m_from->GetConcept()->SetName("1"); const boost::shared_ptr<QtPvdbConceptItem> item(new QtPvdbDisplayConceptItem(m_from->GetConcept())); node1 = new QtPvdbNodeItem(m_from,item); node1->m_signal_request_scene_update.connect( boost::bind(&QtPvdbTestEdgeItemDialog::OnRequestSceneUpdate,this)); } QtPvdbNodeItem * node2 = nullptr; { //m_to->GetConcept()->SetName("2"); const boost::shared_ptr<QtPvdbConceptItem> item(new QtPvdbEditConceptItem(m_to->GetConcept())); node2 = new QtPvdbNodeItem(m_to,item); node2->m_signal_request_scene_update.connect( boost::bind(&QtPvdbTestEdgeItemDialog::OnRequestSceneUpdate,this)); } assert(node1); assert(node2); assert(node1->GetNode()); assert(node2->GetNode()); assert(node1->GetNode()->GetConcept()); assert(node2->GetNode()->GetConcept()); //Create the edge { assert(m_edge); boost::shared_ptr<QtPvdbEditConceptItem> concept(new QtPvdbEditConceptItem(m_edge->GetConcept())); m_edge_item = new QtPvdbEdgeItem(m_edge,concept,node1,node2); } //Node is used in: m_edge and QtPvdbNodeConcept::m_edge //assert(m_edge.use_count() == 2); //Concept is used in: m_edge::m_concept, QtPvdbDisplayConcept::m_edge::m_concept and QtPvdbConcept::m_concept assert(m_edge.get() == m_edge_item->GetEdge().get()); assert(m_edge->GetConcept().get() == m_edge_item->GetEdge()->GetConcept().get()); #ifndef NDEBUG { const int edge_use_count = m_edge.use_count(); assert(edge_use_count == 2); } #endif //Add items to the scene assert(node1); assert(node2); assert(m_edge_item); assert(!node1->scene()); assert(!node2->scene()); assert(!m_edge_item->scene()); ui->view->scene()->addItem(node1); ui->view->scene()->addItem(node2); ui->view->scene()->addItem(m_edge_item); assert(ui->view->scene()->items().size() == 3); { QList<QGraphicsItem *> v = ui->view->scene()->items(); assert( std::count_if(v.begin(),v.end(), [](const QGraphicsItem * const item) { return dynamic_cast<const QtPvdbEdgeItem*>(item); } ) == 1); } //Put nodes (not the edges) into place //The nodes must reposition themselves node1->SetPos(-100.0,-100.0); m_edge_item->SetPos(0.0,0.0); node2->SetPos( 100.0, 100.0); { const std::vector<pvdb::Competency> v = pvdb::GetAllCompetencies(); const std::size_t sz = boost::numeric_cast<int>(v.size()); for (std::size_t i=0; i!=sz; ++i) { assert(i < v.size()); const pvdb::Competency competency = v[i]; const std::string s = pvdb::CompetencyToDutchStr(competency); const QString qs = s.c_str(); assert(ui); assert(ui->box_competency); assert(GetEdgeCurrentWay()); assert(GetEdgeCurrentWay()->GetConcept()); assert(GetEdgeCurrentWay()->GetConcept()->GetExamples()); assert(!GetEdgeCurrentWay()->GetConcept()->GetExamples()->Get().empty() && "Otherwise 'ui->box_competency->addItem(qs)' will fail, due to on_box_competency_currentIndexChanged"); ui->box_competency->addItem(qs); //2013-06-22: BUG: std::out_of_range' what(): vector::_M_range_check } } assert(this->GetEdgeCurrentWay()->GetConcept()->GetExamples()); assert(!this->GetEdgeCurrentWay()->GetConcept()->GetExamples()->Get().empty()); ui->box_complexity->setCurrentIndex(this->GetEdgeCurrentWay()->GetConcept()->GetRatingComplexity() + 1); ui->box_concreteness->setCurrentIndex(this->GetEdgeCurrentWay()->GetConcept()->GetRatingConcreteness() + 1); ui->box_specificity->setCurrentIndex(this->GetEdgeCurrentWay()->GetConcept()->GetRatingSpecificity() + 1); ui->edit_name->setText(this->GetEdgeCurrentWay()->GetConcept()->GetName().c_str()); ui->edit_example_text->setText(this->GetEdgeCurrentWay()->GetConcept()->GetExamples()->Get().at(0)->GetText().c_str()); ui->box_arrow_head->setCurrentIndex(this->GetEdgeCurrentWay()->HasHeadArrow()); ui->box_arrow_tail->setCurrentIndex(this->GetEdgeCurrentWay()->HasTailArrow()); ui->box_competency->setCurrentIndex(static_cast<int>(this->GetEdgeCurrentWay()->GetConcept()->GetExamples()->Get().at(0)->GetCompetency())); }