From c8067bcacf4e078bbb419257601fdb5aabd3d81b Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Wed, 10 Nov 2021 14:40:42 +0100 Subject: [PATCH] feat: changed random engine --- include/misc/Random.h | 19 ++++++++++++++++--- src/TowerDefense.cpp | 2 -- src/game/server/ServerConnexion.cpp | 2 +- src/game/server/ServerWorld.cpp | 7 ++----- src/misc/Random.cpp | 17 ----------------- 5 files changed, 19 insertions(+), 28 deletions(-) delete mode 100644 src/misc/Random.cpp diff --git a/include/misc/Random.h b/include/misc/Random.h index 057fcad..2c8f2ac 100644 --- a/include/misc/Random.h +++ b/include/misc/Random.h @@ -1,12 +1,25 @@ #pragma once -#include +#include namespace td { namespace utils { -void initRandomizer(); -std::uint64_t getRandomNumber(std::uint64_t max); +template +NumberType getRandomInt(NumberType min, NumberType max){ + std::random_device randomDevice; + std::mt19937 generator(randomDevice()); + std::uniform_int_distribution distrib(min, max); + return distrib(generator); +} + +template +NumberType getRandomReal(NumberType min, NumberType max){ + std::random_device randomDevice; + std::mt19937 generator(randomDevice()); + std::uniform_real_distribution distrib(min, max); + return distrib(generator); +} } // namespace utils } // namespace td diff --git a/src/TowerDefense.cpp b/src/TowerDefense.cpp index 0383f16..036fbb9 100644 --- a/src/TowerDefense.cpp +++ b/src/TowerDefense.cpp @@ -7,14 +7,12 @@ //============================================================================ #include "window/Display.h" -#include "misc/Random.h" #ifdef __ANDROID__ extern "C" #endif int main(int argc, const char* args[]) { - td::utils::initRandomizer(); Display::create(); while (!Display::isCloseRequested()) { Display::pollEvents(); diff --git a/src/game/server/ServerConnexion.cpp b/src/game/server/ServerConnexion.cpp index 78bb687..336d4d9 100644 --- a/src/game/server/ServerConnexion.cpp +++ b/src/game/server/ServerConnexion.cpp @@ -62,7 +62,7 @@ void ServerConnexion::checkKeepAlive() { } void ServerConnexion::sendKeepAlive() { - m_KeepAlive.keepAliveID = utils::getRandomNumber(RAND_MAX); + m_KeepAlive.keepAliveID = utils::getRandomInt(0, RAND_MAX); m_KeepAlive.recievedResponse = false; protocol::KeepAlivePacket keepAlivePacket(m_KeepAlive.keepAliveID); diff --git a/src/game/server/ServerWorld.cpp b/src/game/server/ServerWorld.cpp index 2041169..2b907a9 100644 --- a/src/game/server/ServerWorld.cpp +++ b/src/game/server/ServerWorld.cpp @@ -31,11 +31,8 @@ void ServerWorld::spawnMobs(game::MobType type, std::uint8_t level, game::Player std::int32_t minSpawnX = spawnCenterX - 2; std::int32_t maxSpawnX = spawnCenterX + 2; - std::uint64_t randomX = utils::getRandomNumber(std::abs(minSpawnX - maxSpawnX) * MOB_SPAWN_PRECISION); - float mobX = (float)randomX / MOB_SPAWN_PRECISION + (float)minSpawnX; - - std::uint64_t randomY = utils::getRandomNumber(std::abs(minSpawnY - maxSpawnY) * MOB_SPAWN_PRECISION); - float mobY = (float)randomY / MOB_SPAWN_PRECISION + (float)minSpawnY; + float mobX = utils::getRandomReal(minSpawnX, maxSpawnX); + float mobY = utils::getRandomReal(minSpawnY, maxSpawnY); spawnMobAt(m_CurrentMobID, type, level, sender, mobX, mobY, enemyMobSpawn->direction); diff --git a/src/misc/Random.cpp b/src/misc/Random.cpp deleted file mode 100644 index 5b44ee8..0000000 --- a/src/misc/Random.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "misc/Random.h" -#include -#include - -namespace td { -namespace utils { - -void initRandomizer() { - srand(time(0)); -} - -std::uint64_t getRandomNumber(std::uint64_t max) { - return rand() % max; -} - -} // namespace utils -} // namespace td