2020-02-16 14:08:22 +00:00
|
|
|
#ifndef CREATURELIB_BATTLERANDOM_HPP
|
|
|
|
#define CREATURELIB_BATTLERANDOM_HPP
|
|
|
|
|
2020-02-26 12:51:16 +00:00
|
|
|
#include <Arbutils/Random.hpp>
|
2020-02-16 14:08:22 +00:00
|
|
|
|
|
|
|
namespace CreatureLib::Battling {
|
|
|
|
class ExecutingAttack;
|
|
|
|
class Creature;
|
|
|
|
|
|
|
|
class BattleRandom {
|
|
|
|
private:
|
2020-05-26 16:31:06 +00:00
|
|
|
ArbUt::Random _random;
|
2020-02-16 14:08:22 +00:00
|
|
|
|
|
|
|
public:
|
2020-04-04 16:24:59 +00:00
|
|
|
BattleRandom() noexcept : _random() {}
|
2020-06-02 11:06:24 +00:00
|
|
|
explicit BattleRandom(uint_fast32_t seed) noexcept : _random(seed) {}
|
2020-02-16 14:08:22 +00:00
|
|
|
|
|
|
|
bool EffectChance(float chance, ExecutingAttack* attack, Creature* target);
|
2020-04-04 16:24:59 +00:00
|
|
|
int32_t Get() noexcept { return _random.Get(); }
|
|
|
|
int32_t Get(int32_t max) noexcept { return _random.Get(max); }
|
|
|
|
int32_t Get(int32_t min, int32_t max) noexcept { return _random.Get(min, max); }
|
2020-05-26 16:31:06 +00:00
|
|
|
ArbUt::Random& GetRNG() noexcept { return _random; }
|
2020-04-04 16:24:59 +00:00
|
|
|
uint_fast32_t GetSeed() const noexcept { return _random.GetSeed(); }
|
2020-02-16 14:08:22 +00:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // CREATURELIB_BATTLERANDOM_HPP
|