forked from teamnwah/openmw-tes3coop
Merge branch 'Travel_Dialogue' into training_travel
Conflicts: apps/openmw/CMakeLists.txt apps/openmw/mwgui/dialogue.cpp apps/openmw/mwrender/globalmap.cpp files/mygui/CMakeLists.txt
This commit is contained in:
commit
c64eb96952
15 changed files with 316 additions and 9 deletions
|
@ -30,7 +30,7 @@ add_openmw_dir (mwgui
|
||||||
formatting inventorywindow container hud countdialog tradewindow settingswindow
|
formatting inventorywindow container hud countdialog tradewindow settingswindow
|
||||||
confirmationdialog alchemywindow referenceinterface spellwindow mainmenu quickkeysmenu
|
confirmationdialog alchemywindow referenceinterface spellwindow mainmenu quickkeysmenu
|
||||||
itemselection spellbuyingwindow loadingscreen levelupdialog waitdialog spellcreationdialog
|
itemselection spellbuyingwindow loadingscreen levelupdialog waitdialog spellcreationdialog
|
||||||
enchantingdialog trainingwindow
|
enchantingdialog trainingwindow travelwindow
|
||||||
)
|
)
|
||||||
|
|
||||||
add_openmw_dir (mwdialogue
|
add_openmw_dir (mwdialogue
|
||||||
|
|
|
@ -42,6 +42,7 @@ namespace MWGui
|
||||||
class Console;
|
class Console;
|
||||||
class SpellWindow;
|
class SpellWindow;
|
||||||
class TradeWindow;
|
class TradeWindow;
|
||||||
|
class TravelWindow;
|
||||||
class SpellBuyingWindow;
|
class SpellBuyingWindow;
|
||||||
class ConfirmationDialog;
|
class ConfirmationDialog;
|
||||||
class CountDialog;
|
class CountDialog;
|
||||||
|
@ -108,6 +109,7 @@ namespace MWBase
|
||||||
virtual MWGui::ConfirmationDialog* getConfirmationDialog() = 0;
|
virtual MWGui::ConfirmationDialog* getConfirmationDialog() = 0;
|
||||||
virtual MWGui::TradeWindow* getTradeWindow() = 0;
|
virtual MWGui::TradeWindow* getTradeWindow() = 0;
|
||||||
virtual MWGui::SpellBuyingWindow* getSpellBuyingWindow() = 0;
|
virtual MWGui::SpellBuyingWindow* getSpellBuyingWindow() = 0;
|
||||||
|
virtual MWGui::TravelWindow* getTravelWindow() = 0;
|
||||||
virtual MWGui::SpellWindow* getSpellWindow() = 0;
|
virtual MWGui::SpellWindow* getSpellWindow() = 0;
|
||||||
virtual MWGui::Console* getConsole() = 0;
|
virtual MWGui::Console* getConsole() = 0;
|
||||||
|
|
||||||
|
|
|
@ -795,6 +795,9 @@ namespace MWDialogue
|
||||||
|| services & ESM::NPC::Misc)
|
|| services & ESM::NPC::Misc)
|
||||||
windowServices |= MWGui::DialogueWindow::Service_Trade;
|
windowServices |= MWGui::DialogueWindow::Service_Trade;
|
||||||
|
|
||||||
|
if( !mActor.get<ESM::NPC>()->base->mTransport.empty())
|
||||||
|
windowServices |= MWGui::DialogueWindow::Service_Travel;
|
||||||
|
|
||||||
if (services & ESM::NPC::Spells)
|
if (services & ESM::NPC::Spells)
|
||||||
windowServices |= MWGui::DialogueWindow::Service_BuySpells;
|
windowServices |= MWGui::DialogueWindow::Service_BuySpells;
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "tradewindow.hpp"
|
#include "tradewindow.hpp"
|
||||||
#include "spellbuyingwindow.hpp"
|
#include "spellbuyingwindow.hpp"
|
||||||
#include "inventorywindow.hpp"
|
#include "inventorywindow.hpp"
|
||||||
|
#include "travelwindow.hpp"
|
||||||
|
|
||||||
using namespace MWGui;
|
using namespace MWGui;
|
||||||
using namespace Widgets;
|
using namespace Widgets;
|
||||||
|
@ -137,6 +138,13 @@ void DialogueWindow::onSelectTopic(std::string topic)
|
||||||
mWindowManager.pushGuiMode(GM_SpellBuying);
|
mWindowManager.pushGuiMode(GM_SpellBuying);
|
||||||
mWindowManager.getSpellBuyingWindow()->startSpellBuying(mPtr);
|
mWindowManager.getSpellBuyingWindow()->startSpellBuying(mPtr);
|
||||||
}
|
}
|
||||||
|
else if (topic == MWBase::Environment::get().getWorld()->getStore().gameSettings.find("sTravel")->getString())
|
||||||
|
{
|
||||||
|
std::cout << "travel!";
|
||||||
|
mWindowManager.pushGuiMode(GM_Travel);
|
||||||
|
mWindowManager.getTravelWindow()->startTravel(mPtr);
|
||||||
|
//mWindowManager.getSpellBuyingWindow()->startSpellBuying(mPtr);
|
||||||
|
}
|
||||||
else if (topic == MWBase::Environment::get().getWorld()->getStore().gameSettings.find("sSpellMakingMenuTitle")->getString())
|
else if (topic == MWBase::Environment::get().getWorld()->getStore().gameSettings.find("sSpellMakingMenuTitle")->getString())
|
||||||
{
|
{
|
||||||
mWindowManager.pushGuiMode(GM_SpellCreation);
|
mWindowManager.pushGuiMode(GM_SpellCreation);
|
||||||
|
@ -180,6 +188,9 @@ void DialogueWindow::setKeywords(std::list<std::string> keyWords)
|
||||||
if (mServices & Service_BuySpells)
|
if (mServices & Service_BuySpells)
|
||||||
mTopicsList->addItem(MWBase::Environment::get().getWorld()->getStore().gameSettings.find("sSpells")->getString());
|
mTopicsList->addItem(MWBase::Environment::get().getWorld()->getStore().gameSettings.find("sSpells")->getString());
|
||||||
|
|
||||||
|
if (mServices & Service_Travel)
|
||||||
|
mTopicsList->addItem(MWBase::Environment::get().getWorld()->getStore().gameSettings.find("sTravel")->getString());
|
||||||
|
|
||||||
if (mServices & Service_CreateSpells)
|
if (mServices & Service_CreateSpells)
|
||||||
mTopicsList->addItem(MWBase::Environment::get().getWorld()->getStore().gameSettings.find("sSpellmakingMenuTitle")->getString());
|
mTopicsList->addItem(MWBase::Environment::get().getWorld()->getStore().gameSettings.find("sSpellmakingMenuTitle")->getString());
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,6 @@ namespace MWGui
|
||||||
void askQuestion(std::string question);
|
void askQuestion(std::string question);
|
||||||
void goodbye();
|
void goodbye();
|
||||||
|
|
||||||
// various service button visibilities, depending if the npc/creature talked to has these services
|
|
||||||
// make sure to call these before setKeywords()
|
// make sure to call these before setKeywords()
|
||||||
void setServices(int services) { mServices = services; }
|
void setServices(int services) { mServices = services; }
|
||||||
|
|
||||||
|
@ -58,7 +57,8 @@ namespace MWGui
|
||||||
Service_BuySpells = 0x02,
|
Service_BuySpells = 0x02,
|
||||||
Service_CreateSpells = 0x04,
|
Service_CreateSpells = 0x04,
|
||||||
Service_Enchant = 0x08,
|
Service_Enchant = 0x08,
|
||||||
Service_Training = 0x10
|
Service_Training = 0x10,
|
||||||
|
Service_Travel = 0x20
|
||||||
};
|
};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -77,10 +77,6 @@ namespace MWGui
|
||||||
*/
|
*/
|
||||||
std::string parseText(std::string text);
|
std::string parseText(std::string text);
|
||||||
|
|
||||||
// various service button visibilities, depending if the npc/creature talked to has these services
|
|
||||||
bool mShowTrade;
|
|
||||||
bool mShowSpells;
|
|
||||||
|
|
||||||
int mServices;
|
int mServices;
|
||||||
|
|
||||||
bool mEnabled;
|
bool mEnabled;
|
||||||
|
|
|
@ -6,10 +6,12 @@
|
||||||
#include <OgreCompositorChain.h>
|
#include <OgreCompositorChain.h>
|
||||||
#include <OgreMaterial.h>
|
#include <OgreMaterial.h>
|
||||||
|
|
||||||
|
#include <openengine/ogre/fader.hpp>
|
||||||
|
|
||||||
|
|
||||||
#include "../mwbase/environment.hpp"
|
#include "../mwbase/environment.hpp"
|
||||||
#include "../mwbase/inputmanager.hpp"
|
#include "../mwbase/inputmanager.hpp"
|
||||||
|
#include "../mwbase/world.hpp"
|
||||||
|
|
||||||
#include "../mwbase/windowmanager.hpp"
|
#include "../mwbase/windowmanager.hpp"
|
||||||
|
|
||||||
|
@ -106,6 +108,7 @@ namespace MWGui
|
||||||
|
|
||||||
if (mTimer.getMilliseconds () > mLastRenderTime + (1.f/loadingScreenFps) * 1000.f)
|
if (mTimer.getMilliseconds () > mLastRenderTime + (1.f/loadingScreenFps) * 1000.f)
|
||||||
{
|
{
|
||||||
|
float dt = mTimer.getMilliseconds () - mLastRenderTime;
|
||||||
mLastRenderTime = mTimer.getMilliseconds ();
|
mLastRenderTime = mTimer.getMilliseconds ();
|
||||||
|
|
||||||
if (mFirstLoad && mTimer.getMilliseconds () > mLastWallpaperChangeTime + 3000*1)
|
if (mFirstLoad && mTimer.getMilliseconds () > mLastWallpaperChangeTime + 3000*1)
|
||||||
|
@ -151,6 +154,8 @@ namespace MWGui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MWBase::Environment::get().getWorld ()->getFader ()->update (dt);
|
||||||
|
|
||||||
mWindow->update();
|
mWindow->update();
|
||||||
|
|
||||||
if (!hasCompositor)
|
if (!hasCompositor)
|
||||||
|
|
|
@ -22,6 +22,7 @@ namespace MWGui
|
||||||
GM_Rest,
|
GM_Rest,
|
||||||
GM_RestBed,
|
GM_RestBed,
|
||||||
GM_SpellBuying,
|
GM_SpellBuying,
|
||||||
|
GM_Travel,
|
||||||
GM_SpellCreation,
|
GM_SpellCreation,
|
||||||
GM_Enchanting,
|
GM_Enchanting,
|
||||||
GM_Training,
|
GM_Training,
|
||||||
|
|
|
@ -54,7 +54,7 @@ namespace MWGui
|
||||||
|
|
||||||
MyGUI::Button* toAdd =
|
MyGUI::Button* toAdd =
|
||||||
mSpellsView->createWidget<MyGUI::Button>(
|
mSpellsView->createWidget<MyGUI::Button>(
|
||||||
(price>mWindowManager.getInventoryWindow()->getPlayerGold()) ? "SandTextGreyedOut" : "SpellText",
|
(price>mWindowManager.getInventoryWindow()->getPlayerGold()) ? "SandTextGreyedOut" : "SandTextButton",
|
||||||
0,
|
0,
|
||||||
mCurrentY,
|
mCurrentY,
|
||||||
200,
|
200,
|
||||||
|
|
187
apps/openmw/mwgui/travelwindow.cpp
Normal file
187
apps/openmw/mwgui/travelwindow.cpp
Normal file
|
@ -0,0 +1,187 @@
|
||||||
|
#include "travelwindow.hpp"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
#include <boost/lexical_cast.hpp>
|
||||||
|
|
||||||
|
#include <libs/openengine/ogre/fader.hpp>
|
||||||
|
|
||||||
|
#include "../mwbase/environment.hpp"
|
||||||
|
#include "../mwbase/world.hpp"
|
||||||
|
#include "../mwbase/soundmanager.hpp"
|
||||||
|
#include "../mwbase/windowmanager.hpp"
|
||||||
|
#include "../mwbase/mechanicsmanager.hpp"
|
||||||
|
|
||||||
|
#include "../mwworld/player.hpp"
|
||||||
|
#include "../mwworld/manualref.hpp"
|
||||||
|
|
||||||
|
#include "../mwmechanics/spells.hpp"
|
||||||
|
#include "../mwmechanics/creaturestats.hpp"
|
||||||
|
|
||||||
|
#include "inventorywindow.hpp"
|
||||||
|
#include "tradewindow.hpp"
|
||||||
|
|
||||||
|
namespace MWGui
|
||||||
|
{
|
||||||
|
const int TravelWindow::sLineHeight = 18;
|
||||||
|
|
||||||
|
TravelWindow::TravelWindow(MWBase::WindowManager& parWindowManager) :
|
||||||
|
WindowBase("openmw_travel_window.layout", parWindowManager)
|
||||||
|
, mCurrentY(0)
|
||||||
|
, mLastPos(0)
|
||||||
|
{
|
||||||
|
setCoord(0, 0, 450, 300);
|
||||||
|
|
||||||
|
getWidget(mCancelButton, "CancelButton");
|
||||||
|
getWidget(mPlayerGold, "PlayerGold");
|
||||||
|
getWidget(mSelect, "Select");
|
||||||
|
getWidget(mDestinations, "Travel");
|
||||||
|
getWidget(mDestinationsView, "DestinationsView");
|
||||||
|
|
||||||
|
mCancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &TravelWindow::onCancelButtonClicked);
|
||||||
|
|
||||||
|
mDestinations->setCoord(450/2-mDestinations->getTextSize().width/2,
|
||||||
|
mDestinations->getTop(),
|
||||||
|
mDestinations->getTextSize().width,
|
||||||
|
mDestinations->getHeight());
|
||||||
|
mSelect->setCoord(8,
|
||||||
|
mSelect->getTop(),
|
||||||
|
mSelect->getTextSize().width,
|
||||||
|
mSelect->getHeight());
|
||||||
|
}
|
||||||
|
|
||||||
|
void TravelWindow::addDestination(const std::string& travelId,ESM::Position pos,bool interior)
|
||||||
|
{
|
||||||
|
int price = 0;
|
||||||
|
|
||||||
|
if(interior)
|
||||||
|
{
|
||||||
|
price = MWBase::Environment::get().getWorld()->getStore().gameSettings.find("fMagesGuildTravel")->getFloat();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayer().getPlayer();
|
||||||
|
ESM::Position PlayerPos = player.getRefData().getPosition();
|
||||||
|
float d = sqrt( pow(pos.pos[0] - PlayerPos.pos[0],2) + pow(pos.pos[1] - PlayerPos.pos[1],2) + pow(pos.pos[2] - PlayerPos.pos[2],2) );
|
||||||
|
price = d/MWBase::Environment::get().getWorld()->getStore().gameSettings.find("fTravelMult")->getFloat();
|
||||||
|
}
|
||||||
|
|
||||||
|
MyGUI::Button* toAdd = mDestinationsView->createWidget<MyGUI::Button>((price>mWindowManager.getInventoryWindow()->getPlayerGold()) ? "SandTextGreyedOut" : "SandTextButton", 0, mCurrentY, 200, sLineHeight, MyGUI::Align::Default);
|
||||||
|
mCurrentY += sLineHeight;
|
||||||
|
/// \todo price adjustment depending on merchantile skill
|
||||||
|
if(interior)
|
||||||
|
toAdd->setUserString("interior","y");
|
||||||
|
else
|
||||||
|
toAdd->setUserString("interior","n");
|
||||||
|
|
||||||
|
std::ostringstream oss;
|
||||||
|
oss << price;
|
||||||
|
toAdd->setUserString("price",oss.str());
|
||||||
|
|
||||||
|
toAdd->setCaptionWithReplacing(travelId+" - "+boost::lexical_cast<std::string>(price)+"#{sgp}");
|
||||||
|
toAdd->setSize(toAdd->getTextSize().width,sLineHeight);
|
||||||
|
toAdd->eventMouseWheel += MyGUI::newDelegate(this, &TravelWindow::onMouseWheel);
|
||||||
|
toAdd->setUserString("Destination", travelId);
|
||||||
|
toAdd->setUserData(pos);
|
||||||
|
toAdd->eventMouseButtonClick += MyGUI::newDelegate(this, &TravelWindow::onTravelButtonClick);
|
||||||
|
mDestinationsWidgetMap.insert(std::make_pair (toAdd, travelId));
|
||||||
|
}
|
||||||
|
|
||||||
|
void TravelWindow::clearDestinations()
|
||||||
|
{
|
||||||
|
mDestinationsView->setViewOffset(MyGUI::IntPoint(0,0));
|
||||||
|
mCurrentY = 0;
|
||||||
|
while (mDestinationsView->getChildCount())
|
||||||
|
MyGUI::Gui::getInstance().destroyWidget(mDestinationsView->getChildAt(0));
|
||||||
|
mDestinationsWidgetMap.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TravelWindow::startTravel(const MWWorld::Ptr& actor)
|
||||||
|
{
|
||||||
|
center();
|
||||||
|
mPtr = actor;
|
||||||
|
clearDestinations();
|
||||||
|
|
||||||
|
MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayer().getPlayer();
|
||||||
|
|
||||||
|
for(unsigned int i = 0;i<mPtr.get<ESM::NPC>()->base->mTransport.size();i++)
|
||||||
|
{
|
||||||
|
std::string cellname = mPtr.get<ESM::NPC>()->base->mTransport[i].mCellName;
|
||||||
|
bool interior = true;
|
||||||
|
int x,y;
|
||||||
|
MWBase::Environment::get().getWorld()->positionToIndex(mPtr.get<ESM::NPC>()->base->mTransport[i].mPos.pos[0],
|
||||||
|
mPtr.get<ESM::NPC>()->base->mTransport[i].mPos.pos[1],x,y);
|
||||||
|
if(cellname == "") {cellname = MWBase::Environment::get().getWorld()->getExterior(x,y)->cell->mName; interior= false;}
|
||||||
|
addDestination(cellname,mPtr.get<ESM::NPC>()->base->mTransport[i].mPos,interior);
|
||||||
|
}
|
||||||
|
|
||||||
|
updateLabels();
|
||||||
|
mDestinationsView->setCanvasSize (MyGUI::IntSize(mDestinationsView->getWidth(), std::max(mDestinationsView->getHeight(), mCurrentY)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void TravelWindow::onTravelButtonClick(MyGUI::Widget* _sender)
|
||||||
|
{
|
||||||
|
std::istringstream iss(_sender->getUserString("price"));
|
||||||
|
int price;
|
||||||
|
iss >> price;
|
||||||
|
|
||||||
|
if (mWindowManager.getInventoryWindow()->getPlayerGold()<price)
|
||||||
|
return;
|
||||||
|
|
||||||
|
MWBase::Environment::get().getWorld ()->getFader ()->fadeOut(1);
|
||||||
|
MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayer().getPlayer();
|
||||||
|
ESM::Position pos = *_sender->getUserData<ESM::Position>();
|
||||||
|
std::string cellname = _sender->getUserString("Destination");
|
||||||
|
int x,y;
|
||||||
|
bool interior = _sender->getUserString("interior") == "y";
|
||||||
|
MWBase::Environment::get().getWorld()->positionToIndex(pos.pos[0],pos.pos[1],x,y);
|
||||||
|
MWWorld::CellStore* cell;
|
||||||
|
if(interior) cell = MWBase::Environment::get().getWorld()->getInterior(cellname);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cell = MWBase::Environment::get().getWorld()->getExterior(x,y);
|
||||||
|
ESM::Position PlayerPos = player.getRefData().getPosition();
|
||||||
|
float d = sqrt( pow(pos.pos[0] - PlayerPos.pos[0],2) + pow(pos.pos[1] - PlayerPos.pos[1],2) + pow(pos.pos[2] - PlayerPos.pos[2],2) );
|
||||||
|
int time = int(d /MWBase::Environment::get().getWorld()->getStore().gameSettings.find("fTravelTimeMult")->getFloat());
|
||||||
|
for(int i = 0;i < time;i++)
|
||||||
|
{
|
||||||
|
MWBase::Environment::get().getMechanicsManager ()->restoreDynamicStats ();
|
||||||
|
}
|
||||||
|
MWBase::Environment::get().getWorld()->advanceTime(time);
|
||||||
|
}
|
||||||
|
MWBase::Environment::get().getWorld()->moveObject(player,*cell,pos.pos[0],pos.pos[1],pos.pos[2]);
|
||||||
|
mWindowManager.removeGuiMode(GM_Travel);
|
||||||
|
mWindowManager.removeGuiMode(GM_Dialogue);
|
||||||
|
MWBase::Environment::get().getWorld ()->getFader ()->fadeOut(0);
|
||||||
|
MWBase::Environment::get().getWorld ()->getFader ()->fadeIn(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TravelWindow::onCancelButtonClicked(MyGUI::Widget* _sender)
|
||||||
|
{
|
||||||
|
mWindowManager.removeGuiMode(GM_Travel);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TravelWindow::updateLabels()
|
||||||
|
{
|
||||||
|
mPlayerGold->setCaptionWithReplacing("#{sGold}: " + boost::lexical_cast<std::string>(mWindowManager.getInventoryWindow()->getPlayerGold()));
|
||||||
|
mPlayerGold->setCoord(8,
|
||||||
|
mPlayerGold->getTop(),
|
||||||
|
mPlayerGold->getTextSize().width,
|
||||||
|
mPlayerGold->getHeight());
|
||||||
|
}
|
||||||
|
|
||||||
|
void TravelWindow::onReferenceUnavailable()
|
||||||
|
{
|
||||||
|
mWindowManager.removeGuiMode(GM_Travel);
|
||||||
|
mWindowManager.removeGuiMode(GM_Dialogue);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TravelWindow::onMouseWheel(MyGUI::Widget* _sender, int _rel)
|
||||||
|
{
|
||||||
|
if (mDestinationsView->getViewOffset().top + _rel*0.3 > 0)
|
||||||
|
mDestinationsView->setViewOffset(MyGUI::IntPoint(0, 0));
|
||||||
|
else
|
||||||
|
mDestinationsView->setViewOffset(MyGUI::IntPoint(0, mDestinationsView->getViewOffset().top + _rel*0.3));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
55
apps/openmw/mwgui/travelwindow.hpp
Normal file
55
apps/openmw/mwgui/travelwindow.hpp
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
#ifndef MWGUI_TravelWINDOW_H
|
||||||
|
#define MWGUI_TravelWINDOW_H
|
||||||
|
|
||||||
|
#include "container.hpp"
|
||||||
|
#include "window_base.hpp"
|
||||||
|
|
||||||
|
#include "../mwworld/ptr.hpp"
|
||||||
|
|
||||||
|
namespace MyGUI
|
||||||
|
{
|
||||||
|
class Gui;
|
||||||
|
class Widget;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace MWGui
|
||||||
|
{
|
||||||
|
class WindowManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
namespace MWGui
|
||||||
|
{
|
||||||
|
class TravelWindow : public ReferenceInterface, public WindowBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TravelWindow(MWBase::WindowManager& parWindowManager);
|
||||||
|
|
||||||
|
void startTravel(const MWWorld::Ptr& actor);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
MyGUI::Button* mCancelButton;
|
||||||
|
MyGUI::TextBox* mPlayerGold;
|
||||||
|
MyGUI::TextBox* mDestinations;
|
||||||
|
MyGUI::TextBox* mSelect;
|
||||||
|
|
||||||
|
MyGUI::ScrollView* mDestinationsView;
|
||||||
|
|
||||||
|
std::map<MyGUI::Widget*, std::string> mDestinationsWidgetMap;
|
||||||
|
|
||||||
|
void onCancelButtonClicked(MyGUI::Widget* _sender);
|
||||||
|
void onTravelButtonClick(MyGUI::Widget* _sender);
|
||||||
|
void onMouseWheel(MyGUI::Widget* _sender, int _rel);
|
||||||
|
void addDestination(const std::string& destinationID,ESM::Position pos,bool interior);
|
||||||
|
void clearDestinations();
|
||||||
|
int mLastPos,mCurrentY;
|
||||||
|
|
||||||
|
static const int sLineHeight;
|
||||||
|
|
||||||
|
void updateLabels();
|
||||||
|
|
||||||
|
virtual void onReferenceUnavailable();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -38,6 +38,7 @@
|
||||||
#include "countdialog.hpp"
|
#include "countdialog.hpp"
|
||||||
#include "tradewindow.hpp"
|
#include "tradewindow.hpp"
|
||||||
#include "spellbuyingwindow.hpp"
|
#include "spellbuyingwindow.hpp"
|
||||||
|
#include "travelwindow.hpp"
|
||||||
#include "settingswindow.hpp"
|
#include "settingswindow.hpp"
|
||||||
#include "confirmationdialog.hpp"
|
#include "confirmationdialog.hpp"
|
||||||
#include "alchemywindow.hpp"
|
#include "alchemywindow.hpp"
|
||||||
|
@ -70,6 +71,7 @@ WindowManager::WindowManager(
|
||||||
, mCountDialog(NULL)
|
, mCountDialog(NULL)
|
||||||
, mTradeWindow(NULL)
|
, mTradeWindow(NULL)
|
||||||
, mSpellBuyingWindow(NULL)
|
, mSpellBuyingWindow(NULL)
|
||||||
|
, mTravelWindow(NULL)
|
||||||
, mSettingsWindow(NULL)
|
, mSettingsWindow(NULL)
|
||||||
, mConfirmationDialog(NULL)
|
, mConfirmationDialog(NULL)
|
||||||
, mAlchemyWindow(NULL)
|
, mAlchemyWindow(NULL)
|
||||||
|
@ -147,6 +149,7 @@ WindowManager::WindowManager(
|
||||||
mInventoryWindow = new InventoryWindow(*this,mDragAndDrop);
|
mInventoryWindow = new InventoryWindow(*this,mDragAndDrop);
|
||||||
mTradeWindow = new TradeWindow(*this);
|
mTradeWindow = new TradeWindow(*this);
|
||||||
mSpellBuyingWindow = new SpellBuyingWindow(*this);
|
mSpellBuyingWindow = new SpellBuyingWindow(*this);
|
||||||
|
mTravelWindow = new TravelWindow(*this);
|
||||||
mDialogueWindow = new DialogueWindow(*this);
|
mDialogueWindow = new DialogueWindow(*this);
|
||||||
mContainerWindow = new ContainerWindow(*this,mDragAndDrop);
|
mContainerWindow = new ContainerWindow(*this,mDragAndDrop);
|
||||||
mHud = new HUD(w,h, mShowFPSLevel, mDragAndDrop);
|
mHud = new HUD(w,h, mShowFPSLevel, mDragAndDrop);
|
||||||
|
@ -212,6 +215,7 @@ WindowManager::~WindowManager()
|
||||||
delete mScrollWindow;
|
delete mScrollWindow;
|
||||||
delete mTradeWindow;
|
delete mTradeWindow;
|
||||||
delete mSpellBuyingWindow;
|
delete mSpellBuyingWindow;
|
||||||
|
delete mTravelWindow;
|
||||||
delete mSettingsWindow;
|
delete mSettingsWindow;
|
||||||
delete mConfirmationDialog;
|
delete mConfirmationDialog;
|
||||||
delete mAlchemyWindow;
|
delete mAlchemyWindow;
|
||||||
|
@ -265,6 +269,7 @@ void WindowManager::updateVisible()
|
||||||
mBookWindow->setVisible(false);
|
mBookWindow->setVisible(false);
|
||||||
mTradeWindow->setVisible(false);
|
mTradeWindow->setVisible(false);
|
||||||
mSpellBuyingWindow->setVisible(false);
|
mSpellBuyingWindow->setVisible(false);
|
||||||
|
mTravelWindow->setVisible(false);
|
||||||
mSettingsWindow->setVisible(false);
|
mSettingsWindow->setVisible(false);
|
||||||
mAlchemyWindow->setVisible(false);
|
mAlchemyWindow->setVisible(false);
|
||||||
mSpellWindow->setVisible(false);
|
mSpellWindow->setVisible(false);
|
||||||
|
@ -374,6 +379,9 @@ void WindowManager::updateVisible()
|
||||||
case GM_SpellBuying:
|
case GM_SpellBuying:
|
||||||
mSpellBuyingWindow->setVisible(true);
|
mSpellBuyingWindow->setVisible(true);
|
||||||
break;
|
break;
|
||||||
|
case GM_Travel:
|
||||||
|
mTravelWindow->setVisible(true);
|
||||||
|
break;
|
||||||
case GM_SpellCreation:
|
case GM_SpellCreation:
|
||||||
mSpellCreationDialog->setVisible(true);
|
mSpellCreationDialog->setVisible(true);
|
||||||
break;
|
break;
|
||||||
|
@ -873,6 +881,7 @@ MWGui::CountDialog* WindowManager::getCountDialog() { return mCountDialog; }
|
||||||
MWGui::ConfirmationDialog* WindowManager::getConfirmationDialog() { return mConfirmationDialog; }
|
MWGui::ConfirmationDialog* WindowManager::getConfirmationDialog() { return mConfirmationDialog; }
|
||||||
MWGui::TradeWindow* WindowManager::getTradeWindow() { return mTradeWindow; }
|
MWGui::TradeWindow* WindowManager::getTradeWindow() { return mTradeWindow; }
|
||||||
MWGui::SpellBuyingWindow* WindowManager::getSpellBuyingWindow() { return mSpellBuyingWindow; }
|
MWGui::SpellBuyingWindow* WindowManager::getSpellBuyingWindow() { return mSpellBuyingWindow; }
|
||||||
|
MWGui::TravelWindow* WindowManager::getTravelWindow() { return mTravelWindow; }
|
||||||
MWGui::SpellWindow* WindowManager::getSpellWindow() { return mSpellWindow; }
|
MWGui::SpellWindow* WindowManager::getSpellWindow() { return mSpellWindow; }
|
||||||
MWGui::Console* WindowManager::getConsole() { return mConsole; }
|
MWGui::Console* WindowManager::getConsole() { return mConsole; }
|
||||||
|
|
||||||
|
|
|
@ -114,6 +114,7 @@ namespace MWGui
|
||||||
virtual MWGui::ConfirmationDialog* getConfirmationDialog();
|
virtual MWGui::ConfirmationDialog* getConfirmationDialog();
|
||||||
virtual MWGui::TradeWindow* getTradeWindow();
|
virtual MWGui::TradeWindow* getTradeWindow();
|
||||||
virtual MWGui::SpellBuyingWindow* getSpellBuyingWindow();
|
virtual MWGui::SpellBuyingWindow* getSpellBuyingWindow();
|
||||||
|
virtual MWGui::TravelWindow* getTravelWindow();
|
||||||
virtual MWGui::SpellWindow* getSpellWindow();
|
virtual MWGui::SpellWindow* getSpellWindow();
|
||||||
virtual MWGui::Console* getConsole();
|
virtual MWGui::Console* getConsole();
|
||||||
|
|
||||||
|
@ -237,6 +238,7 @@ namespace MWGui
|
||||||
CountDialog* mCountDialog;
|
CountDialog* mCountDialog;
|
||||||
TradeWindow* mTradeWindow;
|
TradeWindow* mTradeWindow;
|
||||||
SpellBuyingWindow* mSpellBuyingWindow;
|
SpellBuyingWindow* mSpellBuyingWindow;
|
||||||
|
TravelWindow* mTravelWindow;
|
||||||
SettingsWindow* mSettingsWindow;
|
SettingsWindow* mSettingsWindow;
|
||||||
ConfirmationDialog* mConfirmationDialog;
|
ConfirmationDialog* mConfirmationDialog;
|
||||||
AlchemyWindow* mAlchemyWindow;
|
AlchemyWindow* mAlchemyWindow;
|
||||||
|
|
|
@ -79,6 +79,7 @@ set(MYGUI_FILES
|
||||||
openmw_edit_effect.layout
|
openmw_edit_effect.layout
|
||||||
openmw_enchanting_dialog.layout
|
openmw_enchanting_dialog.layout
|
||||||
openmw_trainingwindow.layout
|
openmw_trainingwindow.layout
|
||||||
|
openmw_travel_window.layout
|
||||||
smallbars.png
|
smallbars.png
|
||||||
VeraMono.ttf
|
VeraMono.ttf
|
||||||
markers.png
|
markers.png
|
||||||
|
|
35
files/mygui/openmw_travel_window.layout
Normal file
35
files/mygui/openmw_travel_window.layout
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<MyGUI type="Layout">
|
||||||
|
<Widget type="Window" skin="MW_Dialog" layer="Windows" position="0 0 450 300" name="_Main">
|
||||||
|
<Property key="Visible" value="false"/>
|
||||||
|
|
||||||
|
|
||||||
|
<Widget type="TextBox" skin="SandText" position="8 10 24 24" name="Select" align="Right Top">
|
||||||
|
<Property key="TextAlign" value="Right"/>
|
||||||
|
<Property key="Caption" value="#{sTravelServiceTitle}"/>
|
||||||
|
</Widget>
|
||||||
|
<Widget type="TextBox" skin="SandText" position="0 0 24 24" name="Travel" align="Right Top">
|
||||||
|
<Property key="TextAlign" value="Right"/>
|
||||||
|
<Property key="Caption" value="#D8C09A#{sTravel}"/>
|
||||||
|
</Widget>
|
||||||
|
|
||||||
|
|
||||||
|
<Widget type="Widget" skin="MW_Box" position="6 31 430 225" align="ALIGN_LEFT ALIGN_STRETCH">
|
||||||
|
<Widget type="ScrollView" skin="MW_ScrollView" position="4 4 422 217" align="ALIGN_LEFT ALIGN_TOP ALIGN_STRETCH" name="DestinationsView">
|
||||||
|
<Property key="CanvasAlign" value="Left"/>
|
||||||
|
</Widget>
|
||||||
|
</Widget>
|
||||||
|
|
||||||
|
|
||||||
|
<Widget type="TextBox" skin="SandText" position="8 255 24 24" name="PlayerGold" align="Right Top">
|
||||||
|
<Property key="TextAlign" value="Right"/>
|
||||||
|
</Widget>
|
||||||
|
<Widget type="AutoSizedButton" skin="MW_Button" position="375 260 60 24" name="CancelButton" align="Right Top">
|
||||||
|
<Property key="ExpandDirection" value="Left"/>
|
||||||
|
<Property key="Caption" value="#{sOK}"/>
|
||||||
|
</Widget>
|
||||||
|
|
||||||
|
</Widget>
|
||||||
|
|
||||||
|
</MyGUI>
|
|
@ -40,7 +40,7 @@ Fader::Fader(Ogre::SceneManager* sceneMgr)
|
||||||
Ogre::SceneNode* node = mSceneMgr->getRootSceneNode()->createChildSceneNode();
|
Ogre::SceneNode* node = mSceneMgr->getRootSceneNode()->createChildSceneNode();
|
||||||
node->attachObject(mRectangle);
|
node->attachObject(mRectangle);
|
||||||
mRectangle->setVisible(false);
|
mRectangle->setVisible(false);
|
||||||
mRectangle->setVisibilityFlags (0x01);
|
mRectangle->setVisibilityFlags (2048);
|
||||||
}
|
}
|
||||||
|
|
||||||
Fader::~Fader()
|
Fader::~Fader()
|
||||||
|
|
Loading…
Reference in a new issue