void TravelWindow::startTravel(const MWWorld::Ptr& actor) { center(); mPtr = actor; clearDestinations(); for(unsigned int i = 0;i<mPtr.get<ESM::NPC>()->mBase->mTransport.size();i++) { std::string cellname = mPtr.get<ESM::NPC>()->mBase->mTransport[i].mCellName; bool interior = true; int x,y; MWBase::Environment::get().getWorld()->positionToIndex(mPtr.get<ESM::NPC>()->mBase->mTransport[i].mPos.pos[0], mPtr.get<ESM::NPC>()->mBase->mTransport[i].mPos.pos[1],x,y); if (cellname == "") { MWWorld::CellStore* cell = MWBase::Environment::get().getWorld()->getExterior(x,y); cellname = MWBase::Environment::get().getWorld()->getCellName(cell); interior = false; } addDestination(cellname,mPtr.get<ESM::NPC>()->mBase->mTransport[i].mPos,interior); } updateLabels(); mDestinationsView->setCanvasSize (MyGUI::IntSize(mDestinationsView->getWidth(), std::max(mDestinationsView->getHeight(), mCurrentY))); }
void TravelWindow::setPtr(const MWWorld::Ptr& actor) { center(); mPtr = actor; clearDestinations(); std::vector<ESM::Transport::Dest> transport; if (mPtr.getClass().isNpc()) transport = mPtr.get<ESM::NPC>()->mBase->getTransport(); else if (mPtr.getTypeName() == typeid(ESM::Creature).name()) transport = mPtr.get<ESM::Creature>()->mBase->getTransport(); for(unsigned int i = 0;i<transport.size();i++) { std::string cellname = transport[i].mCellName; bool interior = true; int x,y; MWBase::Environment::get().getWorld()->positionToIndex(transport[i].mPos.pos[0], transport[i].mPos.pos[1],x,y); if (cellname == "") { MWWorld::CellStore* cell = MWBase::Environment::get().getWorld()->getExterior(x,y); cellname = MWBase::Environment::get().getWorld()->getCellName(cell); interior = false; } addDestination(cellname,transport[i].mPos,interior); } updateLabels(); // Canvas size must be expressed with VScroll disabled, otherwise MyGUI would expand the scroll area when the scrollbar is hidden mDestinationsView->setVisibleVScroll(false); mDestinationsView->setCanvasSize (MyGUI::IntSize(mDestinationsView->getWidth(), std::max(mDestinationsView->getHeight(), mCurrentY))); mDestinationsView->setVisibleVScroll(true); }