Direction AI::decideMovement(D3DXVECTOR3 position) { switch(state) { case S_REGULAR: { regular(position); break; } case S_DEAD: { dead(position); break; } case S_FLEE: { flee(position); break; } } if(getTileClosestAt(position) == destination || !destination) { for(int i = 0; i < 1000000; i++) { destination = tiles->at( rand()%tiles->size() ); if(calcRoute(getTileClosestAt(position),destination)) break; } } if(!route.empty()) { Direction dir = route.front(); route.pop_front(); return dir; } return D_SIZE; }
void MapBox::createMenus() { QAction * menuItem; QMenu * subMenuItem; m_popupMenu = new QMenu(this); m_popupMenuMapObject = new QMenu(this); //************************************************************** // MapObject-specific context menu. The map object is in m_lastClickedMapObject. subMenuItem = m_popupMenuMapObject->addMenu(tr("MapObject")); menuItem = subMenuItem->addAction(tr("Remove")); connect(menuItem, SIGNAL(triggered()), this, SLOT(removeMapObject())); //************************************************************** /* // These are gread for testing, but not really what we want in // an example application. // We should probably creating a testing branch which tracks // the master branch and has various "test enabled" versions // of the examples at some point anyhow. subMenuItem = m_popupMenuMapObject->addMenu(tr("Spawn stuff")); m_popupMenu->addMenu(subMenuItem); menuItem = subMenuItem->addAction(tr("Items near the dateline")); connect(menuItem, SIGNAL(triggered()), this, SLOT(demo1())); menuItem = subMenuItem->addAction(tr("Regular grid of items")); connect(menuItem, SIGNAL(triggered()), this, SLOT(demo2())); menuItem = subMenuItem->addAction(tr("Clusters")); connect(menuItem, SIGNAL(triggered()), this, SLOT(demo3())); */ //************************************************************** subMenuItem = m_popupMenuMapObject->addMenu(tr("Marker")); m_popupMenu->addMenu(subMenuItem); menuItem = subMenuItem->addAction(tr("Set marker")); connect(menuItem, SIGNAL(triggered()), this, SLOT(drawPixmap())); menuItem = subMenuItem->addAction(tr("Remove markers")); connect(menuItem, SIGNAL(triggered()), this, SLOT(removePixmaps())); menuItem = subMenuItem->addAction(tr("Select objects")); connect(menuItem, SIGNAL(triggered()), this, SLOT(selectObjects())); //************************************************************** subMenuItem = m_popupMenu->addMenu(tr("Draw")); m_popupMenu->addMenu(subMenuItem); menuItem = subMenuItem->addAction(tr("Rectangle")); connect(menuItem, SIGNAL(triggered()), this, SLOT(drawRect())); menuItem = subMenuItem->addAction(tr("Polyline")); connect(menuItem, SIGNAL(triggered()), this, SLOT(drawPolyline())); menuItem = subMenuItem->addAction(tr("Polygon")); connect(menuItem, SIGNAL(triggered()), this, SLOT(drawPolygon())); menuItem = subMenuItem->addAction(tr("Circle")); connect(menuItem, SIGNAL(triggered()), this, SLOT(drawCircle())); menuItem = subMenuItem->addAction(tr("Text")); connect(menuItem, SIGNAL(triggered()), this, SLOT(drawText())); //************************************************************** subMenuItem = m_popupMenuMapObject->addMenu(tr("Route")); m_popupMenu->addMenu(subMenuItem); menuItem = subMenuItem->addAction(tr("Calculate route")); connect(menuItem, SIGNAL(triggered()), this, SLOT(calcRoute())); //************************************************************** subMenuItem = m_popupMenuMapObject->addMenu(tr("Coordinates")); m_popupMenu->addMenu(subMenuItem); menuItem = subMenuItem->addAction(tr("Capture")); connect(menuItem, SIGNAL(triggered()), this, SLOT(captureCoordinates())); connect(menuItem, SIGNAL(triggered()), m_coordControlDialog, SLOT(show())); menuItem = subMenuItem->addAction(tr("Go to")); connect(menuItem, SIGNAL(triggered()), m_coordControlDialog, SLOT(show())); //************************************************************** subMenuItem = m_popupMenuMapObject->addMenu(tr("Tests")); m_popupMenu->addMenu(subMenuItem); menuItem = subMenuItem->addAction(tr("Dateline")); connect(menuItem, SIGNAL(triggered()), this, SLOT(testDateline())); }