mirror of
https://github.com/mod-playerbots/mod-playerbots.git
synced 2026-02-04 03:13:48 +00:00
Improper singletons migration to clean Meyer's singletons (cherry-pick) (#2082)
# Pull Request
- Applies the clean and corrected singletons, Meyer pattern. (cherry
picked from @SmashingQuasar )
Testing by just playing the game in various ways. Been tested by myself
@Celandriel and @SmashingQuasar
---
## Complexity & Impact
- Does this change add new decision branches?
- [x] No
- [ ] Yes (**explain below**)
- Does this change increase per-bot or per-tick processing?
- [x] No
- [ ] Yes (**describe and justify impact**)
- Could this logic scale poorly under load?
- [x] No
- [ ] Yes (**explain why**)
---
## Defaults & Configuration
- Does this change modify default bot behavior?
- [x] No
- [ ] Yes (**explain why**)
---
## AI Assistance
- Was AI assistance (e.g. ChatGPT or similar tools) used while working
on this change?
- [x] No
- [ ] Yes (**explain below**)
---
## Final Checklist
- [x] Stability is not compromised
- [x] Performance impact is understood, tested, and acceptable
- [x] Added logic complexity is justified and explained
- [x] Documentation updated if needed
---
## Notes for Reviewers
Anything that significantly improves realism at the cost of stability or
performance should be carefully discussed
before merging.
---------
Co-authored-by: Nicolas Lebacq <nicolas.cordier@outlook.com>
Co-authored-by: Keleborn <22352763+Celandriel@users.noreply.github.com>
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
#include "ObjectGuid.h"
|
||||
#include "PlayerbotMgr.h"
|
||||
#include "GameTime.h"
|
||||
#include "PlayerbotCommandServer.h"
|
||||
|
||||
struct BattlegroundInfo
|
||||
{
|
||||
@@ -88,12 +89,11 @@ private:
|
||||
class RandomPlayerbotMgr : public PlayerbotHolder
|
||||
{
|
||||
public:
|
||||
RandomPlayerbotMgr();
|
||||
virtual ~RandomPlayerbotMgr();
|
||||
static RandomPlayerbotMgr* instance()
|
||||
static RandomPlayerbotMgr& instance()
|
||||
{
|
||||
static RandomPlayerbotMgr instance;
|
||||
return &instance;
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
void LogPlayerLocation();
|
||||
@@ -192,6 +192,43 @@ protected:
|
||||
void OnBotLoginInternal(Player* const bot) override;
|
||||
|
||||
private:
|
||||
RandomPlayerbotMgr() : PlayerbotHolder(), processTicks(0)
|
||||
{
|
||||
this->playersLevel = sPlayerbotAIConfig.randombotStartingLevel;
|
||||
|
||||
if (sPlayerbotAIConfig.enabled || sPlayerbotAIConfig.randomBotAutologin)
|
||||
{
|
||||
PlayerbotCommandServer::instance().Start();
|
||||
}
|
||||
|
||||
BattlegroundData.clear(); // Clear here and here only.
|
||||
|
||||
// Cleanup on server start: orphaned pet data that's often left behind by bot pets that no longer exist in the DB
|
||||
CharacterDatabase.Execute("DELETE FROM pet_aura WHERE guid NOT IN (SELECT id FROM character_pet)");
|
||||
CharacterDatabase.Execute("DELETE FROM pet_spell WHERE guid NOT IN (SELECT id FROM character_pet)");
|
||||
CharacterDatabase.Execute("DELETE FROM pet_spell_cooldown WHERE guid NOT IN (SELECT id FROM character_pet)");
|
||||
|
||||
for (int bracket = BG_BRACKET_ID_FIRST; bracket < MAX_BATTLEGROUND_BRACKETS; ++bracket)
|
||||
{
|
||||
for (int queueType = BATTLEGROUND_QUEUE_AV; queueType < MAX_BATTLEGROUND_QUEUE_TYPES; ++queueType)
|
||||
{
|
||||
this->BattlegroundData[queueType][bracket] = BattlegroundInfo();
|
||||
}
|
||||
}
|
||||
|
||||
this->BgCheckTimer = 0;
|
||||
this->LfgCheckTimer = 0;
|
||||
this->PlayersCheckTimer = 0;
|
||||
}
|
||||
|
||||
~RandomPlayerbotMgr() = default;
|
||||
|
||||
RandomPlayerbotMgr(const RandomPlayerbotMgr&) = delete;
|
||||
RandomPlayerbotMgr& operator=(const RandomPlayerbotMgr&) = delete;
|
||||
|
||||
RandomPlayerbotMgr(RandomPlayerbotMgr&&) = delete;
|
||||
RandomPlayerbotMgr& operator=(RandomPlayerbotMgr&&) = delete;
|
||||
|
||||
// pid values are set in constructor
|
||||
botPID pid = botPID(1, 50, -50, 0, 0, 0);
|
||||
float activityMod = 0.25;
|
||||
|
||||
Reference in New Issue
Block a user