diff --git a/CInterface/Battling/BattleRandom.cpp b/CInterface/Battling/BattleRandom.cpp new file mode 100644 index 0000000..2328ad6 --- /dev/null +++ b/CInterface/Battling/BattleRandom.cpp @@ -0,0 +1,20 @@ +#include "../../src/Battling/Models/BattleRandom.hpp" +#include "../Core.hpp" +using namespace CreatureLib::Battling; + +export BattleRandom* CreatureLib_BattleRandom_Construct() { return new BattleRandom(); } +export BattleRandom* CreatureLib_BattleRandom_ConstructWithSeed(uint_fast32_t seed) { return new BattleRandom(seed); } + +export void CreatureLib_BattleRandom_Destruct(BattleRandom* p) { delete p; } + +export uint8_t CreatureLib_BattleRandom_EffectChance(bool& out, BattleRandom* p, float chance, ExecutingAttack* attack, + Creature* target) { + Try(out = p->EffectChance(chance, attack, target);) +} + +export int32_t CreatureLib_BattleRandom_Get(BattleRandom* p) { return p->Get(); } +export int32_t CreatureLib_BattleRandom_GetMax(BattleRandom* p, int32_t max) { return p->Get(max); } +export int32_t CreatureLib_BattleRandom_GetMinMax(BattleRandom* p, int32_t min, int32_t max) { + return p->Get(min, max); +} +export uint_fast32_t CreatureLib_BattleRandom_GetSeed(BattleRandom* p) { return p->GetSeed(); } diff --git a/src/Battling/Models/BattleRandom.hpp b/src/Battling/Models/BattleRandom.hpp index 56275c0..ca9b387 100644 --- a/src/Battling/Models/BattleRandom.hpp +++ b/src/Battling/Models/BattleRandom.hpp @@ -12,14 +12,15 @@ namespace CreatureLib::Battling { Arbutils::Random _random; public: - BattleRandom() : _random() {} - BattleRandom(int32_t seed) : _random(seed) {} + BattleRandom() noexcept : _random() {} + BattleRandom(uint_fast32_t seed) noexcept : _random(seed) {} bool EffectChance(float chance, ExecutingAttack* attack, Creature* target); - int32_t Get() { return _random.Get(); } - int32_t Get(int32_t max) { return _random.Get(max); } - int32_t Get(int32_t min, int32_t max) { return _random.Get(min, max); } - Arbutils::Random& GetRNG() { return _random; } + 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); } + Arbutils::Random& GetRNG() noexcept { return _random; } + uint_fast32_t GetSeed() const noexcept { return _random.GetSeed(); } }; }