diff --git a/car.cpp b/car.cpp index 7a3c162..fcb0d1e 100644 --- a/car.cpp +++ b/car.cpp @@ -34,6 +34,7 @@ Car::Car(ParkingLotManager * manager, QGraphicsItem *parent, int dir, Car::Color connect(posAni,QPropertyAnimation::finished,this,followPath); connect(this, &Car::queueHead, manager, &ParkingLotManager::requestIn); connect(this, &Car::exit, manager, &ParkingLotManager::leave); + connect(this, &Car::stair, manager, &ParkingLotManager::requestStair); } void Car::Forward(qreal vel) diff --git a/parkingLotManager.cpp b/parkingLotManager.cpp index 2a543b3..a9bb234 100644 --- a/parkingLotManager.cpp +++ b/parkingLotManager.cpp @@ -134,6 +134,16 @@ void ParkingLotManager::requestOut(Car *car, int exit) Path *p; // TODO:请求出口 } +void ParkingLotManager::requestStair(Car *car) +{ + int l = car->getFloor(); + int n = car->getNum(); + int e = car->getEntryNum(); + Path *p = m_graph[l]->findPath(NODE_TYPE::stair, e, NODE_TYPE::space, n); + car->setPath(p); + car->followPath(); +} + void ParkingLotManager::requestIn(Car* car) { int entry = car->getEntryNum(); diff --git a/parkingLotManager.h b/parkingLotManager.h index 85a8994..85d533b 100644 --- a/parkingLotManager.h +++ b/parkingLotManager.h @@ -34,6 +34,7 @@ public: public slots: void requestIn(Car* car); void requestOut(Car* car, int exit = -1); + void requestStair(Car* car); void leave(Car* car); void addCar(int entry = -1);