1
0

Returned cFastRandom and cEnchantment:GetRandomEnchantmentFromVector to before

Added cEnchantment:GenerateEnchantmentFromVector that allows to get the same enchantments over and over.
This commit is contained in:
STRWarrior
2014-10-15 14:44:07 +02:00
parent e3aa6e4857
commit ff5f57514e
5 changed files with 37 additions and 17 deletions

View File

@@ -6,6 +6,7 @@
#include "Enchantments.h"
#include "WorldStorage/FastNBT.h"
#include "FastRandom.h"
#include "Noise.h"
@@ -994,13 +995,9 @@ void cEnchantments::CheckEnchantmentConflictsFromVector(cWeightedEnchantments &
cEnchantments cEnchantments::GetRandomEnchantmentFromVector(cWeightedEnchantments & a_Enchantments, int a_Seed)
cEnchantments cEnchantments::GetRandomEnchantmentFromVector(cWeightedEnchantments & a_Enchantments)
{
cFastRandom Random;
if (a_Seed != -1)
{
Random = cFastRandom(a_Seed);
}
int AllWeights = 0;
for (cWeightedEnchantments::iterator it = a_Enchantments.begin(); it != a_Enchantments.end(); ++it)
@@ -1023,3 +1020,30 @@ cEnchantments cEnchantments::GetRandomEnchantmentFromVector(cWeightedEnchantment
cEnchantments cEnchantments::GenerateEnchantmentFromVector(cWeightedEnchantments & a_Enchantments, int a_Seed)
{
int AllWeights = 0;
for (cWeightedEnchantments::iterator it = a_Enchantments.begin(); it != a_Enchantments.end(); ++it)
{
AllWeights += (*it).m_Weight;
}
cNoise Noise(a_Seed);
int RandomNumber = Noise.IntNoise1DInt(AllWeights) % AllWeights;
for (cWeightedEnchantments::iterator it = a_Enchantments.begin(); it != a_Enchantments.end(); ++it)
{
RandomNumber -= (*it).m_Weight;
if (RandomNumber < 0)
{
return (*it).m_Enchantments;
}
}
return cEnchantments();
}