mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-02-04 22:45:35 +00:00
Merge remote-tracking branch 'scrawl/master'
This commit is contained in:
commit
46396034a9
8 changed files with 67 additions and 23 deletions
|
@ -66,6 +66,7 @@ bool OMW::Engine::frameStarted (const Ogre::FrameEvent& evt)
|
||||||
{
|
{
|
||||||
if (!MWBase::Environment::get().getWindowManager()->isGuiMode())
|
if (!MWBase::Environment::get().getWindowManager()->isGuiMode())
|
||||||
MWBase::Environment::get().getWorld()->frameStarted(evt.timeSinceLastFrame);
|
MWBase::Environment::get().getWorld()->frameStarted(evt.timeSinceLastFrame);
|
||||||
|
MWBase::Environment::get().getWindowManager ()->frameStarted(evt.timeSinceLastFrame);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,28 +154,42 @@ OMW::Engine::~Engine()
|
||||||
|
|
||||||
void OMW::Engine::loadBSA()
|
void OMW::Engine::loadBSA()
|
||||||
{
|
{
|
||||||
|
// We use separate resource groups to handle location priority.
|
||||||
|
const Files::PathContainer& dataDirs = mFileCollections.getPaths();
|
||||||
|
|
||||||
|
int i=0;
|
||||||
|
for (Files::PathContainer::const_iterator iter = dataDirs.begin(); iter != dataDirs.end(); ++iter)
|
||||||
|
{
|
||||||
|
// Last data dir has the highest priority
|
||||||
|
std::string groupName = "Data" + Ogre::StringConverter::toString(dataDirs.size()-i);
|
||||||
|
Ogre::ResourceGroupManager::getSingleton ().createResourceGroup (groupName);
|
||||||
|
|
||||||
|
std::string dataDirectory = iter->string();
|
||||||
|
std::cout << "Data dir " << dataDirectory << std::endl;
|
||||||
|
Bsa::addDir(dataDirectory, mFSStrict, groupName);
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
|
||||||
|
i=0;
|
||||||
for (std::vector<std::string>::const_iterator archive = mArchives.begin(); archive != mArchives.end(); ++archive)
|
for (std::vector<std::string>::const_iterator archive = mArchives.begin(); archive != mArchives.end(); ++archive)
|
||||||
{
|
{
|
||||||
if (mFileCollections.doesExist(*archive))
|
if (mFileCollections.doesExist(*archive))
|
||||||
{
|
{
|
||||||
|
// Last BSA has the highest priority
|
||||||
|
std::string groupName = "DataBSA" + Ogre::StringConverter::toString(dataDirs.size()-i);
|
||||||
|
|
||||||
|
Ogre::ResourceGroupManager::getSingleton ().createResourceGroup (groupName);
|
||||||
|
|
||||||
const std::string archivePath = mFileCollections.getPath(*archive).string();
|
const std::string archivePath = mFileCollections.getPath(*archive).string();
|
||||||
std::cout << "Adding BSA archive " << archivePath << std::endl;
|
std::cout << "Adding BSA archive " << archivePath << std::endl;
|
||||||
Bsa::addBSA(archivePath);
|
Bsa::addBSA(archivePath, groupName);
|
||||||
|
++i;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::cout << "Archive " << *archive << " not found" << std::endl;
|
std::cout << "Archive " << *archive << " not found" << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const Files::PathContainer& dataDirs = mFileCollections.getPaths();
|
|
||||||
std::string dataDirectory;
|
|
||||||
for (Files::PathContainer::const_iterator iter = dataDirs.begin(); iter != dataDirs.end(); ++iter)
|
|
||||||
{
|
|
||||||
dataDirectory = iter->string();
|
|
||||||
std::cout << "Data dir " << dataDirectory << std::endl;
|
|
||||||
Bsa::addDir(dataDirectory, mFSStrict);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// add resources directory
|
// add resources directory
|
||||||
|
|
|
@ -246,6 +246,8 @@ namespace MWBase
|
||||||
|
|
||||||
virtual void showSoulgemDialog (MWWorld::Ptr item) = 0;
|
virtual void showSoulgemDialog (MWWorld::Ptr item) = 0;
|
||||||
|
|
||||||
|
virtual void frameStarted(float dt) = 0;
|
||||||
|
|
||||||
virtual void changePointer (const std::string& name) = 0;
|
virtual void changePointer (const std::string& name) = 0;
|
||||||
|
|
||||||
virtual const Translation::Storage& getTranslationDataStorage() const = 0;
|
virtual const Translation::Storage& getTranslationDataStorage() const = 0;
|
||||||
|
|
|
@ -37,6 +37,7 @@ namespace MWGui
|
||||||
, mLastXSize(0)
|
, mLastXSize(0)
|
||||||
, mLastYSize(0)
|
, mLastYSize(0)
|
||||||
, mPreview(MWBase::Environment::get().getWorld ()->getPlayer ().getPlayer ())
|
, mPreview(MWBase::Environment::get().getWorld ()->getPlayer ().getPlayer ())
|
||||||
|
, mPreviewDirty(true)
|
||||||
{
|
{
|
||||||
static_cast<MyGUI::Window*>(mMainWidget)->eventWindowChangeCoord += MyGUI::newDelegate(this, &InventoryWindow::onWindowResize);
|
static_cast<MyGUI::Window*>(mMainWidget)->eventWindowChangeCoord += MyGUI::newDelegate(this, &InventoryWindow::onWindowResize);
|
||||||
|
|
||||||
|
@ -268,6 +269,19 @@ namespace MWGui
|
||||||
mTrading = true;
|
mTrading = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void InventoryWindow::doRenderUpdate ()
|
||||||
|
{
|
||||||
|
if (mPreviewDirty)
|
||||||
|
{
|
||||||
|
mPreviewDirty = false;
|
||||||
|
MyGUI::IntSize size = mAvatar->getSize();
|
||||||
|
|
||||||
|
mPreview.update (size.width, size.height);
|
||||||
|
mAvatarImage->setSize(MyGUI::IntSize(std::max(mAvatar->getSize().width, 512), std::max(mAvatar->getSize().height, 1024)));
|
||||||
|
mAvatarImage->setImageTexture("CharacterPreview");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void InventoryWindow::notifyContentChanged()
|
void InventoryWindow::notifyContentChanged()
|
||||||
{
|
{
|
||||||
// update the spell window just in case new enchanted items were added to inventory
|
// update the spell window just in case new enchanted items were added to inventory
|
||||||
|
@ -282,11 +296,7 @@ namespace MWGui
|
||||||
else
|
else
|
||||||
mWindowManager.setSelectedWeapon(*weaponSlot, 100); /// \todo track weapon durability
|
mWindowManager.setSelectedWeapon(*weaponSlot, 100); /// \todo track weapon durability
|
||||||
|
|
||||||
MyGUI::IntSize size = mAvatar->getSize();
|
mPreviewDirty = true;
|
||||||
|
|
||||||
mPreview.update (size.width, size.height);
|
|
||||||
mAvatarImage->setSize(MyGUI::IntSize(std::max(mAvatar->getSize().width, 512), std::max(mAvatar->getSize().height, 1024)));
|
|
||||||
mAvatarImage->setImageTexture("CharacterPreview");
|
|
||||||
|
|
||||||
mArmorRating->setCaptionWithReplacing ("#{sArmor}: "
|
mArmorRating->setCaptionWithReplacing ("#{sArmor}: "
|
||||||
+ boost::lexical_cast<std::string>(static_cast<int>(MWWorld::Class::get(mPtr).getArmorRating(mPtr))));
|
+ boost::lexical_cast<std::string>(static_cast<int>(MWWorld::Class::get(mPtr).getArmorRating(mPtr))));
|
||||||
|
|
|
@ -16,6 +16,8 @@ namespace MWGui
|
||||||
|
|
||||||
virtual void open();
|
virtual void open();
|
||||||
|
|
||||||
|
void doRenderUpdate();
|
||||||
|
|
||||||
/// start trading, disables item drag&drop
|
/// start trading, disables item drag&drop
|
||||||
void startTrade();
|
void startTrade();
|
||||||
|
|
||||||
|
@ -34,6 +36,8 @@ namespace MWGui
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
bool mPreviewDirty;
|
||||||
|
|
||||||
MyGUI::Widget* mAvatar;
|
MyGUI::Widget* mAvatar;
|
||||||
MyGUI::ImageBox* mAvatarImage;
|
MyGUI::ImageBox* mAvatarImage;
|
||||||
MyGUI::TextBox* mArmorRating;
|
MyGUI::TextBox* mArmorRating;
|
||||||
|
|
|
@ -217,15 +217,21 @@ namespace MWGui
|
||||||
|
|
||||||
void LoadingScreen::changeWallpaper ()
|
void LoadingScreen::changeWallpaper ()
|
||||||
{
|
{
|
||||||
if (mResources.isNull ())
|
if (mResources.empty())
|
||||||
mResources = Ogre::ResourceGroupManager::getSingleton ().findResourceNames ("General", "Splash_*.tga");
|
|
||||||
|
|
||||||
|
|
||||||
if (mResources->size())
|
|
||||||
{
|
{
|
||||||
std::string const & randomSplash = mResources->at (rand() % mResources->size());
|
Ogre::StringVector groups = Ogre::ResourceGroupManager::getSingleton().getResourceGroups ();
|
||||||
|
for (Ogre::StringVector::iterator it = groups.begin(); it != groups.end(); ++it)
|
||||||
|
{
|
||||||
|
Ogre::StringVectorPtr resourcesInThisGroup = Ogre::ResourceGroupManager::getSingleton ().findResourceNames (*it, "Splash_*.tga");
|
||||||
|
mResources.insert(mResources.end(), resourcesInThisGroup->begin(), resourcesInThisGroup->end());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ogre::TexturePtr tex = Ogre::TextureManager::getSingleton ().load (randomSplash, "General");
|
if (!mResources.empty())
|
||||||
|
{
|
||||||
|
std::string const & randomSplash = mResources.at (rand() % mResources.size());
|
||||||
|
|
||||||
|
Ogre::TexturePtr tex = Ogre::TextureManager::getSingleton ().load (randomSplash, Ogre::ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME);
|
||||||
|
|
||||||
mBackgroundImage->setImageTexture (randomSplash);
|
mBackgroundImage->setImageTexture (randomSplash);
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ namespace MWGui
|
||||||
Ogre::Rectangle2D* mRectangle;
|
Ogre::Rectangle2D* mRectangle;
|
||||||
Ogre::MaterialPtr mBackgroundMaterial;
|
Ogre::MaterialPtr mBackgroundMaterial;
|
||||||
|
|
||||||
Ogre::StringVectorPtr mResources;
|
Ogre::StringVector mResources;
|
||||||
|
|
||||||
bool mLoadingOn;
|
bool mLoadingOn;
|
||||||
|
|
||||||
|
|
|
@ -1190,3 +1190,8 @@ void WindowManager::showSoulgemDialog(MWWorld::Ptr item)
|
||||||
{
|
{
|
||||||
mSoulgemDialog->show(item);
|
mSoulgemDialog->show(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WindowManager::frameStarted (float dt)
|
||||||
|
{
|
||||||
|
mInventoryWindow->doRenderUpdate ();
|
||||||
|
}
|
||||||
|
|
|
@ -238,6 +238,8 @@ namespace MWGui
|
||||||
virtual void startRepair(MWWorld::Ptr actor);
|
virtual void startRepair(MWWorld::Ptr actor);
|
||||||
virtual void startRepairItem(MWWorld::Ptr item);
|
virtual void startRepairItem(MWWorld::Ptr item);
|
||||||
|
|
||||||
|
virtual void frameStarted(float dt);
|
||||||
|
|
||||||
virtual void showSoulgemDialog (MWWorld::Ptr item);
|
virtual void showSoulgemDialog (MWWorld::Ptr item);
|
||||||
|
|
||||||
virtual void changePointer (const std::string& name);
|
virtual void changePointer (const std::string& name);
|
||||||
|
|
Loading…
Reference in a new issue