diff --git a/apps/openmw/mwbase/world.hpp b/apps/openmw/mwbase/world.hpp index bc7c504471..956a038f11 100644 --- a/apps/openmw/mwbase/world.hpp +++ b/apps/openmw/mwbase/world.hpp @@ -222,12 +222,16 @@ namespace MWBase virtual const std::vector& getAllWeather() const = 0; + virtual int getCurrentWeatherScriptId() const = 0; + virtual const MWWorld::Weather& getCurrentWeather() const = 0; virtual const MWWorld::Weather* getWeather(size_t index) const = 0; virtual const MWWorld::Weather* getWeather(const ESM::RefId& id) const = 0; + virtual int getNextWeatherScriptId() const = 0; + virtual const MWWorld::Weather* getNextWeather() const = 0; virtual float getWeatherTransition() const = 0; diff --git a/apps/openmw/mwdialogue/filter.cpp b/apps/openmw/mwdialogue/filter.cpp index 92ec453c58..a5a3be85f9 100644 --- a/apps/openmw/mwdialogue/filter.cpp +++ b/apps/openmw/mwdialogue/filter.cpp @@ -18,7 +18,6 @@ #include "../mwworld/class.hpp" #include "../mwworld/esmstore.hpp" #include "../mwworld/inventorystore.hpp" -#include "../mwworld/weather.hpp" #include "../mwmechanics/actorutil.hpp" #include "../mwmechanics/creaturestats.hpp" @@ -502,7 +501,7 @@ int MWDialogue::Filter::getSelectStructInteger(const SelectWrapper& select) cons case ESM::DialogueCondition::Function_Weather: - return MWBase::Environment::get().getWorld()->getCurrentWeather().mScriptId; + return MWBase::Environment::get().getWorld()->getCurrentWeatherScriptId(); case ESM::DialogueCondition::Function_Reputation: if (!mActor.getClass().isNpc()) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 82cc9b8b3c..0698e8c4ae 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -60,7 +60,6 @@ #include "../mwworld/class.hpp" #include "../mwworld/groundcoverstore.hpp" #include "../mwworld/scene.hpp" -#include "../mwworld/weather.hpp" #include "../mwgui/postprocessorhud.hpp" @@ -944,8 +943,8 @@ namespace MWRender stateUpdater->setIsUnderwater(isUnderwater); stateUpdater->setFogColor(fogColor); stateUpdater->setGameHour(world->getTimeStamp().getHour()); - stateUpdater->setWeatherId(world->getCurrentWeather().mScriptId); - stateUpdater->setNextWeatherId(world->getNextWeather() != nullptr ? world->getNextWeather()->mScriptId : -1); + stateUpdater->setWeatherId(world->getCurrentWeatherScriptId()); + stateUpdater->setNextWeatherId(world->getNextWeatherScriptId()); stateUpdater->setWeatherTransition(world->getWeatherTransition()); stateUpdater->setWindSpeed(world->getWindSpeed()); stateUpdater->setSkyColor(mSky->getSkyColor()); diff --git a/apps/openmw/mwscript/skyextensions.cpp b/apps/openmw/mwscript/skyextensions.cpp index e85d8381ba..b354bb5ce2 100644 --- a/apps/openmw/mwscript/skyextensions.cpp +++ b/apps/openmw/mwscript/skyextensions.cpp @@ -14,7 +14,6 @@ #include "../mwbase/world.hpp" #include "../mwworld/esmstore.hpp" -#include "../mwworld/weather.hpp" namespace MWScript { @@ -72,7 +71,7 @@ namespace MWScript public: void execute(Interpreter::Runtime& runtime) override { - runtime.push(MWBase::Environment::get().getWorld()->getCurrentWeather().mScriptId); + runtime.push(MWBase::Environment::get().getWorld()->getCurrentWeatherScriptId()); } }; diff --git a/apps/openmw/mwworld/worldimp.cpp b/apps/openmw/mwworld/worldimp.cpp index 057456abe4..02b93706b3 100644 --- a/apps/openmw/mwworld/worldimp.cpp +++ b/apps/openmw/mwworld/worldimp.cpp @@ -1873,6 +1873,11 @@ namespace MWWorld return mWeatherManager->getAllWeather(); } + int World::getCurrentWeatherScriptId() const + { + return mWeatherManager->getWeather().mScriptId; + } + const MWWorld::Weather& World::getCurrentWeather() const { return mWeatherManager->getWeather(); @@ -1888,6 +1893,15 @@ namespace MWWorld return mWeatherManager->getWeather(id); } + int World::getNextWeatherScriptId() const + { + auto next = mWeatherManager->getNextWeather(); + if (next == nullptr) + return -1; + + return next->mScriptId; + } + const MWWorld::Weather* World::getNextWeather() const { return mWeatherManager->getNextWeather(); diff --git a/apps/openmw/mwworld/worldimp.hpp b/apps/openmw/mwworld/worldimp.hpp index d7c05a0191..a9af507857 100644 --- a/apps/openmw/mwworld/worldimp.hpp +++ b/apps/openmw/mwworld/worldimp.hpp @@ -321,10 +321,11 @@ namespace MWWorld const std::vector& getAllWeather() const override; + int getCurrentWeatherScriptId() const override; const MWWorld::Weather& getCurrentWeather() const override; const MWWorld::Weather* getWeather(size_t index) const override; const MWWorld::Weather* getWeather(const ESM::RefId& id) const override; - + int getNextWeatherScriptId() const override; const MWWorld::Weather* getNextWeather() const override; float getWeatherTransition() const override;