mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-16 19:19:56 +00:00
Merge pull request #411 from OpenMW/master
Add OpenMW commits up to 19 Apr 2018
This commit is contained in:
commit
02eef933fd
4 changed files with 23 additions and 23 deletions
|
@ -404,7 +404,12 @@ namespace MWGui
|
|||
MWMechanics::CreatureStats& stats = player.getClass().getCreatureStats(player);
|
||||
MWMechanics::Spells& spells = stats.getSpells();
|
||||
if (!spells.hasSpell(spellId))
|
||||
{
|
||||
const ESM::Spell* spell = MWBase::Environment::get().getWorld()->getStore().get<ESM::Spell>().find(spellId);
|
||||
MWBase::Environment::get().getWindowManager()->messageBox (
|
||||
"#{sQuickMenu5} " + spell->mName);
|
||||
return;
|
||||
}
|
||||
store.setSelectedEnchantItem(store.end());
|
||||
MWBase::Environment::get().getWindowManager()->setSelectedSpell(spellId, int(MWMechanics::getSpellSuccessChance(spellId, player)));
|
||||
MWBase::Environment::get().getWorld()->getPlayer().setDrawState(MWMechanics::DrawState_Spell);
|
||||
|
|
|
@ -63,28 +63,16 @@ std::string Misc::ResourceHelpers::correctResourcePath(const std::string &topLev
|
|||
|
||||
std::string origExt = correctedPath;
|
||||
|
||||
// since we know all (GOTY edition or less) textures end
|
||||
// in .dds, we change the extension
|
||||
bool changedToDds = changeExtensionToDds(correctedPath);
|
||||
if (vfs->exists(correctedPath))
|
||||
if (vfs->exists(origExt)
|
||||
|| (changeExtensionToDds(correctedPath) && vfs->exists(correctedPath)))
|
||||
return correctedPath;
|
||||
// if it turns out that the above wasn't true in all cases (not for vanilla, but maybe mods)
|
||||
// verify, and revert if false (this call succeeds quickly, but fails slowly)
|
||||
if (changedToDds && vfs->exists(origExt))
|
||||
return origExt;
|
||||
|
||||
// fall back to a resource in the top level directory if it exists
|
||||
std::string fallback = topLevelDirectory + "\\" + getBasename(correctedPath);
|
||||
if (vfs->exists(fallback))
|
||||
std::string fallback = topLevelDirectory + "\\" + getBasename(origExt);
|
||||
if (vfs->exists(fallback)
|
||||
|| (changeExtensionToDds(fallback) && vfs->exists(fallback)))
|
||||
return fallback;
|
||||
|
||||
if (changedToDds)
|
||||
{
|
||||
fallback = topLevelDirectory + "\\" + getBasename(origExt);
|
||||
if (vfs->exists(fallback))
|
||||
return fallback;
|
||||
}
|
||||
|
||||
return correctedPath;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,28 +1,31 @@
|
|||
#include "rng.hpp"
|
||||
#include <cstdlib>
|
||||
#include <ctime>
|
||||
|
||||
#include <chrono>
|
||||
#include <random>
|
||||
|
||||
namespace Misc
|
||||
{
|
||||
|
||||
std::mt19937 Rng::generator = std::mt19937();
|
||||
|
||||
void Rng::init()
|
||||
{
|
||||
std::srand(static_cast<unsigned int>(std::time(NULL)));
|
||||
generator.seed(static_cast<unsigned int>(std::chrono::high_resolution_clock::now().time_since_epoch().count()));
|
||||
}
|
||||
|
||||
float Rng::rollProbability()
|
||||
{
|
||||
return static_cast<float>(std::rand() / (static_cast<double>(RAND_MAX)+1.0));
|
||||
return std::uniform_real_distribution<float>(0, 1 - std::numeric_limits<float>::epsilon())(generator);
|
||||
}
|
||||
|
||||
float Rng::rollClosedProbability()
|
||||
{
|
||||
return static_cast<float>(std::rand() / static_cast<double>(RAND_MAX));
|
||||
return std::uniform_real_distribution<float>(0, 1)(generator);
|
||||
}
|
||||
|
||||
int Rng::rollDice(int max)
|
||||
{
|
||||
return static_cast<int>((std::rand() / (static_cast<double>(RAND_MAX)+1.0)) * (max));
|
||||
return std::uniform_int_distribution<int>(0, max - 1)(generator);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#define OPENMW_COMPONENTS_MISC_RNG_H
|
||||
|
||||
#include <cassert>
|
||||
#include <random>
|
||||
|
||||
namespace Misc
|
||||
{
|
||||
|
@ -13,6 +14,9 @@ class Rng
|
|||
{
|
||||
public:
|
||||
|
||||
/// create a RNG
|
||||
static std::mt19937 generator;
|
||||
|
||||
/// seed the RNG
|
||||
static void init();
|
||||
|
||||
|
|
Loading…
Reference in a new issue