mirror of
https://github.com/mod-playerbots/mod-playerbots.git
synced 2026-02-26 13:25:54 +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:
@@ -8,17 +8,18 @@
|
||||
#include <iomanip>
|
||||
#include <numeric>
|
||||
|
||||
#include "CellImpl.h"
|
||||
#include "Talentspec.h"
|
||||
#include "ChatHelper.h"
|
||||
#include "MMapFactory.h"
|
||||
#include "MapMgr.h"
|
||||
#include "PathGenerator.h"
|
||||
#include "Playerbots.h"
|
||||
#include "StrategyContext.h"
|
||||
#include "TransportMgr.h"
|
||||
#include "VMapFactory.h"
|
||||
#include "VMapMgr2.h"
|
||||
#include "Map.h"
|
||||
#include "Corpse.h"
|
||||
#include "CellImpl.h"
|
||||
|
||||
WorldPosition::WorldPosition(std::string const str)
|
||||
{
|
||||
@@ -246,7 +247,7 @@ float WorldPosition::distance(WorldPosition* center)
|
||||
return relPoint(center).size();
|
||||
|
||||
// this -> mapTransfer | mapTransfer -> center
|
||||
return sTravelMgr->mapTransDistance(*this, *center);
|
||||
return TravelMgr::instance().mapTransDistance(*this, *center);
|
||||
};
|
||||
|
||||
float WorldPosition::fDist(WorldPosition* center)
|
||||
@@ -255,7 +256,7 @@ float WorldPosition::fDist(WorldPosition* center)
|
||||
return sqrt(sqDistance2d(center));
|
||||
|
||||
// this -> mapTransfer | mapTransfer -> center
|
||||
return sTravelMgr->fastMapTransDistance(*this, *center);
|
||||
return TravelMgr::instance().fastMapTransDistance(*this, *center);
|
||||
};
|
||||
|
||||
float mapTransfer::fDist(WorldPosition start, WorldPosition end)
|
||||
@@ -428,7 +429,7 @@ void WorldPosition::printWKT(std::vector<WorldPosition> points, std::ostringstre
|
||||
|
||||
WorldPosition WorldPosition::getDisplayLocation()
|
||||
{
|
||||
WorldPosition pos = sTravelNodeMap->getMapOffset(getMapId());
|
||||
WorldPosition pos = TravelNodeMap::instance().getMapOffset(getMapId());
|
||||
return offset(const_cast<WorldPosition*>(&pos));
|
||||
}
|
||||
|
||||
@@ -630,14 +631,14 @@ void WorldPosition::loadMapAndVMap(uint32 mapId, uint8 x, uint8 y)
|
||||
if (isOverworld() && false || false)
|
||||
{
|
||||
if (!MMAP::MMapFactory::createOrGetMMapMgr()->loadMap(mapId, x, y))
|
||||
if (sPlayerbotAIConfig->hasLog(fileName))
|
||||
if (sPlayerbotAIConfig.hasLog(fileName))
|
||||
{
|
||||
std::ostringstream out;
|
||||
out << sPlayerbotAIConfig->GetTimestampStr();
|
||||
out << "+00,\"mmap\", " << x << "," << y << "," << (sTravelMgr->isBadMmap(mapId, x, y) ? "0" : "1")
|
||||
out << sPlayerbotAIConfig.GetTimestampStr();
|
||||
out << "+00,\"mmap\", " << x << "," << y << "," << (TravelMgr::instance().isBadMmap(mapId, x, y) ? "0" : "1")
|
||||
<< ",";
|
||||
printWKT(fromGridCoord(GridCoord(x, y)), out, 1, true);
|
||||
sPlayerbotAIConfig->log(fileName, out.str().c_str());
|
||||
sPlayerbotAIConfig.log(fileName, out.str().c_str());
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -645,7 +646,7 @@ void WorldPosition::loadMapAndVMap(uint32 mapId, uint8 x, uint8 y)
|
||||
// This needs to be disabled or maps will not load.
|
||||
// Needs more testing to check for impact on movement.
|
||||
if (false)
|
||||
if (!sTravelMgr->isBadVmap(mapId, x, y))
|
||||
if (!TravelMgr::instance().isBadVmap(mapId, x, y))
|
||||
{
|
||||
// load VMAPs for current map/grid...
|
||||
const MapEntry* i_mapEntry = sMapStore.LookupEntry(mapId);
|
||||
@@ -662,40 +663,40 @@ void WorldPosition::loadMapAndVMap(uint32 mapId, uint8 x, uint8 y)
|
||||
case VMAP::VMAP_LOAD_RESULT_ERROR:
|
||||
// LOG_ERROR("playerbots", "Could not load VMAP name:{}, id:{}, x:{}, y:{} (vmap rep.: x:{},
|
||||
// y:{})", mapName, mapId, x, y, x, y);
|
||||
sTravelMgr->addBadVmap(mapId, x, y);
|
||||
TravelMgr::instance().addBadVmap(mapId, x, y);
|
||||
break;
|
||||
case VMAP::VMAP_LOAD_RESULT_IGNORED:
|
||||
sTravelMgr->addBadVmap(mapId, x, y);
|
||||
TravelMgr::instance().addBadVmap(mapId, x, y);
|
||||
// LOG_INFO("playerbots", "Ignored VMAP name:{}, id:{}, x:{}, y:{} (vmap rep.: x:{}, y:{})",
|
||||
// mapName, mapId, x, y, x, y);
|
||||
break;
|
||||
}
|
||||
|
||||
if (sPlayerbotAIConfig->hasLog(fileName))
|
||||
if (sPlayerbotAIConfig.hasLog(fileName))
|
||||
{
|
||||
std::ostringstream out;
|
||||
out << sPlayerbotAIConfig->GetTimestampStr();
|
||||
out << "+00,\"vmap\", " << x << "," << y << ", " << (sTravelMgr->isBadVmap(mapId, x, y) ? "0" : "1")
|
||||
out << sPlayerbotAIConfig.GetTimestampStr();
|
||||
out << "+00,\"vmap\", " << x << "," << y << ", " << (TravelMgr::instance().isBadVmap(mapId, x, y) ? "0" : "1")
|
||||
<< ",";
|
||||
printWKT(frommGridCoord(mGridCoord(x, y)), out, 1, true);
|
||||
sPlayerbotAIConfig->log(fileName, out.str().c_str());
|
||||
sPlayerbotAIConfig.log(fileName, out.str().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
if (!sTravelMgr->isBadMmap(mapId, x, y))
|
||||
if (!TravelMgr::instance().isBadMmap(mapId, x, y))
|
||||
{
|
||||
// load navmesh
|
||||
if (!MMAP::MMapFactory::createOrGetMMapMgr()->loadMap(mapId, x, y))
|
||||
sTravelMgr->addBadMmap(mapId, x, y);
|
||||
TravelMgr::instance().addBadMmap(mapId, x, y);
|
||||
|
||||
if (sPlayerbotAIConfig->hasLog(fileName))
|
||||
if (sPlayerbotAIConfig.hasLog(fileName))
|
||||
{
|
||||
std::ostringstream out;
|
||||
out << sPlayerbotAIConfig->GetTimestampStr();
|
||||
out << "+00,\"mmap\", " << x << "," << y << "," << (sTravelMgr->isBadMmap(mapId, x, y) ? "0" : "1")
|
||||
out << sPlayerbotAIConfig.GetTimestampStr();
|
||||
out << "+00,\"mmap\", " << x << "," << y << "," << (TravelMgr::instance().isBadMmap(mapId, x, y) ? "0" : "1")
|
||||
<< ",";
|
||||
printWKT(fromGridCoord(GridCoord(x, y)), out, 1, true);
|
||||
sPlayerbotAIConfig->log(fileName, out.str().c_str());
|
||||
sPlayerbotAIConfig.log(fileName, out.str().c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -733,21 +734,21 @@ std::vector<WorldPosition> WorldPosition::getPathStepFrom(WorldPosition startPos
|
||||
Movement::PointsArray points = path.GetPath();
|
||||
PathType type = path.GetPathType();
|
||||
|
||||
if (sPlayerbotAIConfig->hasLog("pathfind_attempt_point.csv"))
|
||||
if (sPlayerbotAIConfig.hasLog("pathfind_attempt_point.csv"))
|
||||
{
|
||||
std::ostringstream out;
|
||||
out << std::fixed << std::setprecision(1);
|
||||
printWKT({startPos, *this}, out);
|
||||
sPlayerbotAIConfig->log("pathfind_attempt_point.csv", out.str().c_str());
|
||||
sPlayerbotAIConfig.log("pathfind_attempt_point.csv", out.str().c_str());
|
||||
}
|
||||
|
||||
if (sPlayerbotAIConfig->hasLog("pathfind_attempt.csv") && (type == PATHFIND_INCOMPLETE || type == PATHFIND_NORMAL))
|
||||
if (sPlayerbotAIConfig.hasLog("pathfind_attempt.csv") && (type == PATHFIND_INCOMPLETE || type == PATHFIND_NORMAL))
|
||||
{
|
||||
std::ostringstream out;
|
||||
out << sPlayerbotAIConfig->GetTimestampStr() << "+00,";
|
||||
out << sPlayerbotAIConfig.GetTimestampStr() << "+00,";
|
||||
out << std::fixed << std::setprecision(1) << type << ",";
|
||||
printWKT(fromPointsArray(points), out, 1);
|
||||
sPlayerbotAIConfig->log("pathfind_attempt.csv", out.str().c_str());
|
||||
sPlayerbotAIConfig.log("pathfind_attempt.csv", out.str().c_str());
|
||||
}
|
||||
|
||||
if (type == PATHFIND_INCOMPLETE || type == PATHFIND_NORMAL)
|
||||
@@ -796,7 +797,7 @@ std::vector<WorldPosition> WorldPosition::getPathFromPath(std::vector<WorldPosit
|
||||
subPath = getPathStepFrom(currentPos, bot);
|
||||
|
||||
// If we could not find a path return what we have now.
|
||||
if (subPath.empty() || currentPos.distance(&subPath.back()) < sPlayerbotAIConfig->targetPosRecalcDistance)
|
||||
if (subPath.empty() || currentPos.distance(&subPath.back()) < sPlayerbotAIConfig.targetPosRecalcDistance)
|
||||
break;
|
||||
|
||||
// Append the path excluding the start (this should be the same as the end of the startPath)
|
||||
@@ -1071,7 +1072,7 @@ std::vector<WorldPosition*> TravelDestination::sortedPoints(WorldPosition* pos)
|
||||
|
||||
std::vector<WorldPosition*> TravelDestination::nextPoint(WorldPosition* pos, bool ignoreFull)
|
||||
{
|
||||
return sTravelMgr->getNextPoint(pos, ignoreFull ? points : getPoints());
|
||||
return TravelMgr::instance().getNextPoint(pos, ignoreFull ? points : getPoints());
|
||||
}
|
||||
|
||||
bool TravelDestination::isFull(bool ignoreFull)
|
||||
@@ -1108,7 +1109,7 @@ bool QuestRelationTravelDestination::isActive(Player* bot)
|
||||
if (!bot->GetMap()->GetEntry()->IsWorldMap() || !bot->CanTakeQuest(questTemplate, false))
|
||||
return false;
|
||||
|
||||
//uint32 dialogStatus = sTravelMgr->getDialogStatus(bot, entry, questTemplate); //not used, shadowed by the next declaration, line marked for removal.
|
||||
//uint32 dialogStatus = TravelMgr::instance().getDialogStatus(bot, entry, questTemplate); //not used, shadowed by the next declaration, line marked for removal.
|
||||
|
||||
if (AI_VALUE(bool, "can fight equal"))
|
||||
{
|
||||
@@ -1197,7 +1198,7 @@ bool QuestObjectiveTravelDestination::isActive(Player* bot)
|
||||
if (questTemplate->GetType() == QUEST_TYPE_ELITE && !AI_VALUE(bool, "can fight elite"))
|
||||
return false;
|
||||
|
||||
if (!sTravelMgr->getObjectiveStatus(bot, questTemplate, objective))
|
||||
if (!TravelMgr::instance().getObjectiveStatus(bot, questTemplate, objective))
|
||||
return false;
|
||||
|
||||
WorldPosition botPos(bot);
|
||||
@@ -1435,8 +1436,8 @@ TravelTarget::~TravelTarget()
|
||||
return;
|
||||
|
||||
releaseVisitors();
|
||||
// sTravelMgr->botTargets.erase(std::remove(sTravelMgr->botTargets.begin(), sTravelMgr->botTargets.end(), this),
|
||||
// sTravelMgr->botTargets.end());
|
||||
// TravelMgr::instance().botTargets.erase(std::remove(TravelMgr::instance().botTargets.begin(), TravelMgr::instance().botTargets.end(), this),
|
||||
// TravelMgr::instance().botTargets.end());
|
||||
}
|
||||
|
||||
void TravelTarget::setTarget(TravelDestination* tDestination1, WorldPosition* wPosition1, bool groupCopy1)
|
||||
@@ -1509,7 +1510,7 @@ void TravelTarget::setStatus(TravelStatus status)
|
||||
statusTime = 1;
|
||||
break;
|
||||
case TRAVEL_STATUS_TRAVEL:
|
||||
statusTime = getMaxTravelTime() * 2 + sPlayerbotAIConfig->maxWaitForMove;
|
||||
statusTime = getMaxTravelTime() * 2 + sPlayerbotAIConfig.maxWaitForMove;
|
||||
break;
|
||||
case TRAVEL_STATUS_WORK:
|
||||
statusTime = tDestination->getExpireDelay();
|
||||
@@ -1578,7 +1579,7 @@ bool TravelTarget::isTraveling()
|
||||
|
||||
if (!botAI->HasStrategy("travel", BOT_STATE_NON_COMBAT))
|
||||
{
|
||||
setTarget(sTravelMgr->nullTravelDestination, sTravelMgr->nullWorldPosition, true);
|
||||
setTarget(TravelMgr::instance().nullTravelDestination, TravelMgr::instance().nullWorldPosition, true);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1610,7 +1611,7 @@ bool TravelTarget::isWorking()
|
||||
|
||||
if (!botAI->HasStrategy("travel", BOT_STATE_NON_COMBAT))
|
||||
{
|
||||
setTarget(sTravelMgr->nullTravelDestination, sTravelMgr->nullWorldPosition, true);
|
||||
setTarget(TravelMgr::instance().nullTravelDestination, TravelMgr::instance().nullWorldPosition, true);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1767,7 +1768,7 @@ void TravelMgr::logQuestError(uint32 errorNr, Quest* quest, uint32 objective, ui
|
||||
|
||||
void TravelMgr::LoadQuestTravelTable()
|
||||
{
|
||||
if (!sTravelMgr->quests.empty())
|
||||
if (!TravelMgr::instance().quests.empty())
|
||||
return;
|
||||
|
||||
// Clearing store (for reloading case)
|
||||
@@ -1960,7 +1961,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
bool loadQuestData = true;
|
||||
if (loadQuestData)
|
||||
{
|
||||
questGuidpMap questMap = GAI_VALUE(questGuidpMap, "quest guidp map");
|
||||
questGuidpMap questMap = SharedValueContext::instance().getGlobalValue<questGuidpMap>("quest guidp map")->Get();
|
||||
|
||||
for (auto& q : questMap)
|
||||
{
|
||||
@@ -1982,7 +1983,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
if (flag & (uint32)QuestRelationFlag::questGiver)
|
||||
{
|
||||
loc = new QuestRelationTravelDestination(
|
||||
questId, entry, 0, sPlayerbotAIConfig->tooCloseDistance, sPlayerbotAIConfig->sightDistance);
|
||||
questId, entry, 0, sPlayerbotAIConfig.tooCloseDistance, sPlayerbotAIConfig.sightDistance);
|
||||
loc->setExpireDelay(5 * 60 * 1000);
|
||||
loc->setMaxVisitors(15, 0);
|
||||
container->questGivers.push_back(loc);
|
||||
@@ -1991,7 +1992,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
if (flag & (uint32)QuestRelationFlag::questTaker)
|
||||
{
|
||||
loc = new QuestRelationTravelDestination(
|
||||
questId, entry, 1, sPlayerbotAIConfig->tooCloseDistance, sPlayerbotAIConfig->sightDistance);
|
||||
questId, entry, 1, sPlayerbotAIConfig.tooCloseDistance, sPlayerbotAIConfig.sightDistance);
|
||||
loc->setExpireDelay(5 * 60 * 1000);
|
||||
loc->setMaxVisitors(15, 0);
|
||||
container->questTakers.push_back(loc);
|
||||
@@ -2010,8 +2011,8 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
objective = 3;
|
||||
|
||||
loc = new QuestObjectiveTravelDestination(questId, entry, objective,
|
||||
sPlayerbotAIConfig->tooCloseDistance,
|
||||
sPlayerbotAIConfig->sightDistance);
|
||||
sPlayerbotAIConfig.tooCloseDistance,
|
||||
sPlayerbotAIConfig.sightDistance);
|
||||
loc->setExpireDelay(1 * 60 * 1000);
|
||||
loc->setMaxVisitors(100, 1);
|
||||
container->questObjectives.push_back(loc);
|
||||
@@ -2060,8 +2061,8 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
|
||||
int32 entry = r.type == 0 ? r.entry : r.entry * -1;
|
||||
|
||||
loc = new QuestRelationTravelDestination(r.questId, entry, r.role, sPlayerbotAIConfig->tooCloseDistance,
|
||||
sPlayerbotAIConfig->sightDistance); loc->setExpireDelay(5 * 60 * 1000); loc->setMaxVisitors(15, 0);
|
||||
loc = new QuestRelationTravelDestination(r.questId, entry, r.role, sPlayerbotAIConfig.tooCloseDistance,
|
||||
sPlayerbotAIConfig.sightDistance); loc->setExpireDelay(5 * 60 * 1000); loc->setMaxVisitors(15, 0);
|
||||
|
||||
for (auto& u : units)
|
||||
{
|
||||
@@ -2098,8 +2099,8 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
|
||||
uint32 reqEntry = quest->RequiredNpcOrGo[i];
|
||||
|
||||
loc = new QuestObjectiveTravelDestination(questId, reqEntry, i, sPlayerbotAIConfig->tooCloseDistance,
|
||||
sPlayerbotAIConfig->sightDistance); loc->setExpireDelay(1 * 60 * 1000); loc->setMaxVisitors(100, 1);
|
||||
loc = new QuestObjectiveTravelDestination(questId, reqEntry, i, sPlayerbotAIConfig.tooCloseDistance,
|
||||
sPlayerbotAIConfig.sightDistance); loc->setExpireDelay(1 * 60 * 1000); loc->setMaxVisitors(100, 1);
|
||||
|
||||
for (auto& u : units)
|
||||
{
|
||||
@@ -2149,8 +2150,8 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
|
||||
int32 entry = l.type == 0 ? l.entry : l.entry * -1;
|
||||
|
||||
loc = new QuestObjectiveTravelDestination(questId, entry, i, sPlayerbotAIConfig->tooCloseDistance,
|
||||
sPlayerbotAIConfig->sightDistance, l.item); loc->setExpireDelay(1 * 60 * 1000); loc->setMaxVisitors(100, 1);
|
||||
loc = new QuestObjectiveTravelDestination(questId, entry, i, sPlayerbotAIConfig.tooCloseDistance,
|
||||
sPlayerbotAIConfig.sightDistance, l.item); loc->setExpireDelay(1 * 60 * 1000); loc->setMaxVisitors(100, 1);
|
||||
|
||||
for (auto& u : units)
|
||||
{
|
||||
@@ -2238,8 +2239,8 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
{
|
||||
if ((cInfo->npcflag & *i) != 0)
|
||||
{
|
||||
rLoc = new RpgTravelDestination(u.entry, sPlayerbotAIConfig->tooCloseDistance,
|
||||
sPlayerbotAIConfig->sightDistance);
|
||||
rLoc = new RpgTravelDestination(u.entry, sPlayerbotAIConfig.tooCloseDistance,
|
||||
sPlayerbotAIConfig.sightDistance);
|
||||
rLoc->setExpireDelay(5 * 60 * 1000);
|
||||
rLoc->setMaxVisitors(15, 0);
|
||||
|
||||
@@ -2251,8 +2252,8 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
|
||||
if (cInfo->mingold > 0)
|
||||
{
|
||||
gLoc = new GrindTravelDestination(u.entry, sPlayerbotAIConfig->tooCloseDistance,
|
||||
sPlayerbotAIConfig->sightDistance);
|
||||
gLoc = new GrindTravelDestination(u.entry, sPlayerbotAIConfig.tooCloseDistance,
|
||||
sPlayerbotAIConfig.sightDistance);
|
||||
gLoc->setExpireDelay(5 * 60 * 1000);
|
||||
gLoc->setMaxVisitors(100, 0);
|
||||
|
||||
@@ -2265,8 +2266,8 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
{
|
||||
std::string const nodeName = cInfo->Name;
|
||||
|
||||
bLoc = new BossTravelDestination(u.entry, sPlayerbotAIConfig->tooCloseDistance,
|
||||
sPlayerbotAIConfig->sightDistance);
|
||||
bLoc = new BossTravelDestination(u.entry, sPlayerbotAIConfig.tooCloseDistance,
|
||||
sPlayerbotAIConfig.sightDistance);
|
||||
bLoc->setExpireDelay(5 * 60 * 1000);
|
||||
bLoc->setMaxVisitors(0, 0);
|
||||
|
||||
@@ -2298,8 +2299,8 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
|
||||
if (iloc == exploreLocs.end())
|
||||
{
|
||||
loc = new ExploreTravelDestination(area->ID, sPlayerbotAIConfig->tooCloseDistance,
|
||||
sPlayerbotAIConfig->sightDistance);
|
||||
loc = new ExploreTravelDestination(area->ID, sPlayerbotAIConfig.tooCloseDistance,
|
||||
sPlayerbotAIConfig.sightDistance);
|
||||
loc->setMaxVisitors(1000, 0);
|
||||
loc->setCooldownDelay(1000);
|
||||
loc->setExpireDelay(1000);
|
||||
@@ -2315,23 +2316,23 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
}
|
||||
|
||||
// Clear these logs files
|
||||
sPlayerbotAIConfig->openLog("zones.csv", "w");
|
||||
sPlayerbotAIConfig->openLog("creatures.csv", "w");
|
||||
sPlayerbotAIConfig->openLog("gos.csv", "w");
|
||||
sPlayerbotAIConfig->openLog("bot_movement.csv", "w");
|
||||
sPlayerbotAIConfig->openLog("bot_pathfinding.csv", "w");
|
||||
sPlayerbotAIConfig->openLog("pathfind_attempt.csv", "w");
|
||||
sPlayerbotAIConfig->openLog("pathfind_attempt_point.csv", "w");
|
||||
sPlayerbotAIConfig->openLog("pathfind_result.csv", "w");
|
||||
sPlayerbotAIConfig->openLog("load_map_grid.csv", "w");
|
||||
sPlayerbotAIConfig->openLog("strategy.csv", "w");
|
||||
sPlayerbotAIConfig.openLog("zones.csv", "w");
|
||||
sPlayerbotAIConfig.openLog("creatures.csv", "w");
|
||||
sPlayerbotAIConfig.openLog("gos.csv", "w");
|
||||
sPlayerbotAIConfig.openLog("bot_movement.csv", "w");
|
||||
sPlayerbotAIConfig.openLog("bot_pathfinding.csv", "w");
|
||||
sPlayerbotAIConfig.openLog("pathfind_attempt.csv", "w");
|
||||
sPlayerbotAIConfig.openLog("pathfind_attempt_point.csv", "w");
|
||||
sPlayerbotAIConfig.openLog("pathfind_result.csv", "w");
|
||||
sPlayerbotAIConfig.openLog("load_map_grid.csv", "w");
|
||||
sPlayerbotAIConfig.openLog("strategy.csv", "w");
|
||||
|
||||
sPlayerbotAIConfig->openLog("unload_grid.csv", "w");
|
||||
sPlayerbotAIConfig->openLog("unload_obj.csv", "w");
|
||||
sPlayerbotAIConfig.openLog("unload_grid.csv", "w");
|
||||
sPlayerbotAIConfig.openLog("unload_obj.csv", "w");
|
||||
|
||||
sTravelNodeMap->loadNodeStore();
|
||||
TravelNodeMap::instance().loadNodeStore();
|
||||
|
||||
sTravelNodeMap->generateAll();
|
||||
TravelNodeMap::instance().generateAll();
|
||||
|
||||
/*
|
||||
bool fullNavPointReload = false;
|
||||
@@ -2340,9 +2341,9 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
if (!fullNavPointReload && true)
|
||||
TravelNodeStore::loadNodes();
|
||||
|
||||
//sTravelNodeMap->loadNodeStore();
|
||||
//TravelNodeMap::instance().loadNodeStore();
|
||||
|
||||
for (auto node : sTravelNodeMap->getNodes())
|
||||
for (auto node : TravelNodeMap::instance().getNodes())
|
||||
{
|
||||
node->setLinked(true);
|
||||
}
|
||||
@@ -2384,7 +2385,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
else
|
||||
nodeName += " flightMaster";
|
||||
|
||||
sTravelNodeMap->addNode(&pos, nodeName, true, true);
|
||||
TravelNodeMap::instance().addNode(&pos, nodeName, true, true);
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -2414,8 +2415,8 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
WorldPosition startPos(startTaxiNode->map_id, startTaxiNode->x, startTaxiNode->y, startTaxiNode->z);
|
||||
WorldPosition endPos(endTaxiNode->map_id, endTaxiNode->x, endTaxiNode->y, endTaxiNode->z);
|
||||
|
||||
TravelNode* startNode = sTravelNodeMap->getNode(&startPos, nullptr, 15.0f);
|
||||
TravelNode* endNode = sTravelNodeMap->getNode(&endPos, nullptr, 15.0f);
|
||||
TravelNode* startNode = TravelNodeMap::instance().getNode(&startPos, nullptr, 15.0f);
|
||||
TravelNode* endNode = TravelNodeMap::instance().getNode(&endPos, nullptr, 15.0f);
|
||||
|
||||
if (!startNode || !endNode)
|
||||
continue;
|
||||
@@ -2448,7 +2449,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
if (cInfo->rank == 3 || (cInfo->rank == 1 && !pos.isOverworld() && u.c == 1))
|
||||
{
|
||||
std::string const nodeName = cInfo->Name;
|
||||
sTravelNodeMap->addNode(&pos, nodeName, true, true);
|
||||
TravelNodeMap::instance().addNode(&pos, nodeName, true, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2475,7 +2476,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
pos = WorldPosition(info->mapId, info->positionX, info->positionY, info->positionZ, info->orientation);
|
||||
|
||||
std::string const nodeName = startNames[i] + " start";
|
||||
sTravelNodeMap->addNode(&pos, nodeName, true, true);
|
||||
TravelNodeMap::instance().addNode(&pos, nodeName, true, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2530,7 +2531,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
|
||||
if (pos.distance(&lPos) == 0)
|
||||
{
|
||||
TravelNode* node = sTravelNodeMap->addNode(&pos, data->name, true, true, true,
|
||||
TravelNode* node = TravelNodeMap::instance().addNode(&pos, data->name, true, true, true,
|
||||
iter.first);
|
||||
|
||||
if (!prevNode)
|
||||
@@ -2566,7 +2567,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
|
||||
if (pos.distance(&lPos) == 0)
|
||||
{
|
||||
TravelNode* node = sTravelNodeMap->addNode(&pos, data->name, true, true, true,
|
||||
TravelNode* node = TravelNodeMap::instance().addNode(&pos, data->name, true, true, true,
|
||||
iter.first); if (node != prevNode)
|
||||
{
|
||||
float totalTime = (p.second->TimeSeg - timeStart) / 1000.0f;
|
||||
@@ -2605,7 +2606,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
|
||||
if (p->delay > 0)
|
||||
{
|
||||
TravelNode* node = sTravelNodeMap->addNode(&pos, data->name, true, true, true, iter.first);
|
||||
TravelNode* node = TravelNodeMap::instance().addNode(&pos, data->name, true, true, true, iter.first);
|
||||
|
||||
if (!prevNode)
|
||||
{
|
||||
@@ -2638,7 +2639,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
|
||||
if (p->delay > 0)
|
||||
{
|
||||
TravelNode* node = sTravelNodeMap->getNode(&pos, nullptr, 5.0f);
|
||||
TravelNode* node = TravelNodeMap::instance().getNode(&pos, nullptr, 5.0f);
|
||||
if (node != prevNode)
|
||||
{
|
||||
TravelNodePath travelPath(0.1f, 0.0, (uint8) TravelNodePathType::transport, entry,
|
||||
@@ -2667,13 +2668,13 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
|
||||
WorldPosition pos = WorldPosition(points, WP_MEAN_CENTROID);
|
||||
|
||||
TravelNode* node = sTravelNodeMap->addNode(&pos, pos.getAreaName(), true, true, false);
|
||||
TravelNode* node = TravelNodeMap::instance().addNode(&pos, pos.getAreaName(), true, true, false);
|
||||
}
|
||||
|
||||
LOG_INFO("playerbots", ">> Loaded {} navigation points.", sTravelNodeMap->getNodes().size());
|
||||
LOG_INFO("playerbots", ">> Loaded {} navigation points.", TravelNodeMap::instance().getNodes().size());
|
||||
}
|
||||
|
||||
sTravelNodeMap->calcMapOffset();
|
||||
TravelNodeMap::instance().calcMapOffset();
|
||||
loadMapTransfers();
|
||||
*/
|
||||
|
||||
@@ -2692,14 +2693,14 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
//PathGenerator
|
||||
std::vector<WorldPosition> ppath;
|
||||
|
||||
uint32 cur = 0, max = sTravelNodeMap->getNodes().size();
|
||||
uint32 cur = 0, max = TravelNodeMap::instance().getNodes().size();
|
||||
|
||||
for (auto& startNode : sTravelNodeMap->getNodes())
|
||||
for (auto& startNode : TravelNodeMap::instance().getNodes())
|
||||
{
|
||||
if (!preloadReLinkFullyLinked && startNode->isLinked())
|
||||
continue;
|
||||
|
||||
for (auto& endNode : sTravelNodeMap->getNodes())
|
||||
for (auto& endNode : TravelNodeMap::instance().getNodes())
|
||||
{
|
||||
if (startNode == endNode)
|
||||
continue;
|
||||
@@ -2734,18 +2735,18 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
|
||||
if (preloadSubPrint && (cur * 50) / max > ((cur - 1) * 50) / max)
|
||||
{
|
||||
sTravelNodeMap->printMap();
|
||||
sTravelNodeMap->printNodeStore();
|
||||
TravelNodeMap::instance().printMap();
|
||||
TravelNodeMap::instance().printNodeStore();
|
||||
}
|
||||
}
|
||||
|
||||
if (!preloadSubPrint)
|
||||
{
|
||||
sTravelNodeMap->printNodeStore();
|
||||
sTravelNodeMap->printMap();
|
||||
TravelNodeMap::instance().printNodeStore();
|
||||
TravelNodeMap::instance().printMap();
|
||||
}
|
||||
|
||||
LOG_INFO("playerbots", ">> Loaded paths for {} nodes.", sTravelNodeMap->getNodes().size());
|
||||
LOG_INFO("playerbots", ">> Loaded paths for {} nodes.", TravelNodeMap::instance().getNodes().size());
|
||||
}
|
||||
|
||||
bool removeLowLinkNodes = false || fullNavPointReload || storeNavPointReload;
|
||||
@@ -2754,7 +2755,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
{
|
||||
std::vector<TravelNode*> goodNodes;
|
||||
std::vector<TravelNode*> remNodes;
|
||||
for (auto& node : sTravelNodeMap->getNodes())
|
||||
for (auto& node : TravelNodeMap::instance().getNodes())
|
||||
{
|
||||
if (!node->getPosition()->isOverworld())
|
||||
continue;
|
||||
@@ -2774,9 +2775,9 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
}
|
||||
|
||||
for (auto& node : remNodes)
|
||||
sTravelNodeMap->removeNode(node);
|
||||
TravelNodeMap::instance().removeNode(node);
|
||||
|
||||
LOG_INFO("playerbots", ">> Checked {} nodes.", sTravelNodeMap->getNodes().size());
|
||||
LOG_INFO("playerbots", ">> Checked {} nodes.", TravelNodeMap::instance().getNodes().size());
|
||||
}
|
||||
|
||||
bool cleanUpNodeLinks = false || fullNavPointReload || storeNavPointReload;
|
||||
@@ -2786,22 +2787,22 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
{
|
||||
//Routes
|
||||
uint32 cur = 0;
|
||||
uint32 max = sTravelNodeMap->getNodes().size();
|
||||
uint32 max = TravelNodeMap::instance().getNodes().size();
|
||||
|
||||
//Clean up node links
|
||||
for (auto& startNode : sTravelNodeMap->getNodes())
|
||||
for (auto& startNode : TravelNodeMap::instance().getNodes())
|
||||
{
|
||||
startNode->cropUselessLinks();
|
||||
|
||||
cur++;
|
||||
if (cleanUpSubPrint && (cur * 10) / max > ((cur - 1) * 10) / max)
|
||||
{
|
||||
sTravelNodeMap->printMap();
|
||||
sTravelNodeMap->printNodeStore();
|
||||
TravelNodeMap::instance().printMap();
|
||||
TravelNodeMap::instance().printNodeStore();
|
||||
}
|
||||
}
|
||||
|
||||
LOG_INFO("playerbots", ">> Cleaned paths for {} nodes.", sTravelNodeMap->getNodes().size());
|
||||
LOG_INFO("playerbots", ">> Cleaned paths for {} nodes.", TravelNodeMap::instance().getNodes().size());
|
||||
}
|
||||
|
||||
bool reCalculateCost = false || fullNavPointReload || storeNavPointReload;
|
||||
@@ -2809,7 +2810,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
|
||||
if (reCalculateCost)
|
||||
{
|
||||
for (auto& startNode : sTravelNodeMap->getNodes())
|
||||
for (auto& startNode : TravelNodeMap::instance().getNodes())
|
||||
{
|
||||
for (auto& path : *startNode->getLinks())
|
||||
{
|
||||
@@ -2825,14 +2826,14 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
}
|
||||
}
|
||||
|
||||
LOG_INFO("playerbots", ">> Calculated pathcost for {} nodes.", sTravelNodeMap->getNodes().size());
|
||||
LOG_INFO("playerbots", ">> Calculated pathcost for {} nodes.", TravelNodeMap::instance().getNodes().size());
|
||||
}
|
||||
|
||||
bool mirrorMissingPaths = true || fullNavPointReload || storeNavPointReload;
|
||||
|
||||
if (mirrorMissingPaths)
|
||||
{
|
||||
for (auto& startNode : sTravelNodeMap->getNodes())
|
||||
for (auto& startNode : TravelNodeMap::instance().getNodes())
|
||||
{
|
||||
for (auto& path : *startNode->getLinks())
|
||||
{
|
||||
@@ -2855,16 +2856,16 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
}
|
||||
}
|
||||
|
||||
LOG_INFO("playerbots", ">> Reversed missing paths for {} nodes.", sTravelNodeMap->getNodes().size());
|
||||
LOG_INFO("playerbots", ">> Reversed missing paths for {} nodes.", TravelNodeMap::instance().getNodes().size());
|
||||
}
|
||||
*/
|
||||
|
||||
sTravelNodeMap->printMap();
|
||||
sTravelNodeMap->printNodeStore();
|
||||
sTravelNodeMap->saveNodeStore();
|
||||
TravelNodeMap::instance().printMap();
|
||||
TravelNodeMap::instance().printNodeStore();
|
||||
TravelNodeMap::instance().saveNodeStore();
|
||||
|
||||
// Creature/gos/zone export.
|
||||
if (sPlayerbotAIConfig->hasLog("creatures.csv"))
|
||||
if (sPlayerbotAIConfig.hasLog("creatures.csv"))
|
||||
{
|
||||
for (CreatureData const* cData : WorldPosition().getCreaturesNear())
|
||||
{
|
||||
@@ -2889,11 +2890,11 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
out << point.getAreaName() << ",";
|
||||
out << std::fixed;
|
||||
|
||||
sPlayerbotAIConfig->log("creatures.csv", out.str().c_str());
|
||||
sPlayerbotAIConfig.log("creatures.csv", out.str().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
if (sPlayerbotAIConfig->hasLog("vmangoslines.csv"))
|
||||
if (sPlayerbotAIConfig.hasLog("vmangoslines.csv"))
|
||||
{
|
||||
uint32 mapId = 0;
|
||||
std::vector<WorldPosition> pos;
|
||||
@@ -2924,7 +2925,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
WorldPosition().printWKT(pos, out, 1);
|
||||
out << std::fixed;
|
||||
|
||||
sPlayerbotAIConfig->log("vmangoslines.csv", out.str().c_str());
|
||||
sPlayerbotAIConfig.log("vmangoslines.csv", out.str().c_str());
|
||||
|
||||
static float const ironforgeAreaSouthLimit[] = {
|
||||
-7491.33f, 3093.740f, -7472.04f, -391.880f, -6366.68f, -730.100f, -6063.96f, -1411.76f,
|
||||
@@ -2951,7 +2952,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
WorldPosition().printWKT(pos, out, 1);
|
||||
out << std::fixed;
|
||||
|
||||
sPlayerbotAIConfig->log("vmangoslines.csv", out.str().c_str());
|
||||
sPlayerbotAIConfig.log("vmangoslines.csv", out.str().c_str());
|
||||
|
||||
static float const stormwindAreaNorthLimit[] = {
|
||||
-8004.250f, 3714.110f, -8075.000f, -179.000f, -8638.000f, 169.0000f, -9044.000f, 35.00000f,
|
||||
@@ -2979,7 +2980,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
WorldPosition().printWKT(pos, out, 1);
|
||||
out << std::fixed;
|
||||
|
||||
sPlayerbotAIConfig->log("vmangoslines.csv", out.str().c_str());
|
||||
sPlayerbotAIConfig.log("vmangoslines.csv", out.str().c_str());
|
||||
|
||||
static float const stormwindAreaSouthLimit[] = {
|
||||
-8725.3378910f, 3535.62402300f, -9525.6992190f, 910.13256800f, -9796.9531250f, 839.06958000f,
|
||||
@@ -3010,7 +3011,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
WorldPosition().printWKT(pos, out, 1);
|
||||
out << std::fixed;
|
||||
|
||||
sPlayerbotAIConfig->log("vmangoslines.csv", out.str().c_str());
|
||||
sPlayerbotAIConfig.log("vmangoslines.csv", out.str().c_str());
|
||||
|
||||
mapId = 1;
|
||||
|
||||
@@ -3044,7 +3045,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
WorldPosition().printWKT(pos, out, 1);
|
||||
out << std::fixed;
|
||||
|
||||
sPlayerbotAIConfig->log("vmangoslines.csv", out.str().c_str());
|
||||
sPlayerbotAIConfig.log("vmangoslines.csv", out.str().c_str());
|
||||
|
||||
static float const durotarSouthLimit[] = {
|
||||
2755.0f, -3766.f, 2225.0f, -3596.f, 1762.0f, -3746.f, 1564.0f, -3943.f, 1184.0f, -3915.f, 737.00f,
|
||||
@@ -3072,7 +3073,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
WorldPosition().printWKT(pos, out, 1);
|
||||
out << std::fixed;
|
||||
|
||||
sPlayerbotAIConfig->log("vmangoslines.csv", out.str().c_str());
|
||||
sPlayerbotAIConfig.log("vmangoslines.csv", out.str().c_str());
|
||||
|
||||
static float const valleyoftrialsSouthLimit[] = {-324.f, -3869.f, -774.f, -3992.f, -965.f, -4290.f, -932.f,
|
||||
-4349.f, -828.f, -4414.f, -661.f, -4541.f, -521.f, -4582.f};
|
||||
@@ -3097,7 +3098,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
WorldPosition().printWKT(pos, out, 1);
|
||||
out << std::fixed;
|
||||
|
||||
sPlayerbotAIConfig->log("vmangoslines.csv", out.str().c_str());
|
||||
sPlayerbotAIConfig.log("vmangoslines.csv", out.str().c_str());
|
||||
|
||||
static float const middleToSouthLimit[] = {
|
||||
-2402.010000f, 4255.7000000f, -2475.933105f, 3199.5683590f, // Desolace
|
||||
@@ -3129,7 +3130,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
WorldPosition().printWKT(pos, out, 1);
|
||||
out << std::fixed;
|
||||
|
||||
sPlayerbotAIConfig->log("vmangoslines.csv", out.str().c_str());
|
||||
sPlayerbotAIConfig.log("vmangoslines.csv", out.str().c_str());
|
||||
|
||||
static float const orgrimmarSouthLimit[] = {
|
||||
2132.5076f, -3912.2478f, 1944.4298f, -3855.2583f, 1735.6906f, -3834.2417f, 1654.3671f, -3380.9902f,
|
||||
@@ -3157,7 +3158,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
WorldPosition().printWKT(pos, out, 1);
|
||||
out << std::fixed;
|
||||
|
||||
sPlayerbotAIConfig->log("vmangoslines.csv", out.str().c_str());
|
||||
sPlayerbotAIConfig.log("vmangoslines.csv", out.str().c_str());
|
||||
|
||||
static float const feralasThousandNeedlesSouthLimit[] = {
|
||||
-6495.4995f, -4711.9810f, -6674.9995f, -4515.0019f, -6769.5717f, -4122.4272f, -6838.2651f, -3874.2792f,
|
||||
@@ -3187,10 +3188,10 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
WorldPosition().printWKT(pos, out, 1);
|
||||
out << std::fixed;
|
||||
|
||||
sPlayerbotAIConfig->log("vmangoslines.csv", out.str().c_str());
|
||||
sPlayerbotAIConfig.log("vmangoslines.csv", out.str().c_str());
|
||||
}
|
||||
|
||||
if (sPlayerbotAIConfig->hasLog("gos.csv"))
|
||||
if (sPlayerbotAIConfig.hasLog("gos.csv"))
|
||||
{
|
||||
for (GameObjectData const* gData : WorldPosition().getGameObjectsNear())
|
||||
{
|
||||
@@ -3212,11 +3213,11 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
out << point.getAreaName() << ",";
|
||||
out << std::fixed;
|
||||
|
||||
sPlayerbotAIConfig->log("gos.csv", out.str().c_str());
|
||||
sPlayerbotAIConfig.log("gos.csv", out.str().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
if (sPlayerbotAIConfig->hasLog("zones.csv"))
|
||||
if (sPlayerbotAIConfig.hasLog("zones.csv"))
|
||||
{
|
||||
std::unordered_map<std::string, std::vector<WorldPosition>> zoneLocs;
|
||||
|
||||
@@ -3238,7 +3239,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
if (loc.second.empty())
|
||||
continue;
|
||||
|
||||
if (!sTravelNodeMap->getMapOffset(loc.second.front().getMapId()) && loc.second.front().getMapId() != 0)
|
||||
if (!TravelNodeMap::instance().getMapOffset(loc.second.front().getMapId()) && loc.second.front().getMapId() != 0)
|
||||
continue;
|
||||
|
||||
std::vector<WorldPosition> points = loc.second;
|
||||
@@ -3266,13 +3267,13 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
|
||||
point.printWKT(points, out, 0);
|
||||
|
||||
sPlayerbotAIConfig->log("zones.csv", out.str().c_str());
|
||||
sPlayerbotAIConfig.log("zones.csv", out.str().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
bool printStrategyMap = false;
|
||||
|
||||
if (printStrategyMap && sPlayerbotAIConfig->hasLog("strategy.csv"))
|
||||
if (printStrategyMap && sPlayerbotAIConfig.hasLog("strategy.csv"))
|
||||
{
|
||||
static std::map<uint8, std::string> classes;
|
||||
static std::map<uint8, std::map<uint8, std::string>> specs;
|
||||
@@ -3328,7 +3329,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
|
||||
// Use randombot 0.
|
||||
std::ostringstream cout;
|
||||
cout << sPlayerbotAIConfig->randomBotAccountPrefix << 0;
|
||||
cout << sPlayerbotAIConfig.randomBotAccountPrefix << 0;
|
||||
std::string const accountName = cout.str();
|
||||
|
||||
LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_GET_ACCOUNT_ID_BY_USERNAME);
|
||||
@@ -3502,7 +3503,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
return false;
|
||||
});
|
||||
|
||||
sPlayerbotAIConfig->log("strategy.csv", "relevance, action, trigger, strategy, classes");
|
||||
sPlayerbotAIConfig.log("strategy.csv", "relevance, action, trigger, strategy, classes");
|
||||
|
||||
for (auto& actionkey : actionKeys)
|
||||
{
|
||||
@@ -3607,17 +3608,17 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
out << actionkey << "\n";
|
||||
}
|
||||
|
||||
sPlayerbotAIConfig->log("strategy.csv", out.str().c_str());
|
||||
sPlayerbotAIConfig.log("strategy.csv", out.str().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
sPlayerbotAIConfig->openLog(7, "w");
|
||||
sPlayerbotAIConfig.openLog(7, "w");
|
||||
|
||||
//Zone area map REMOVE!
|
||||
uint32 k = 0;
|
||||
for (auto& node : sTravelNodeMap->getNodes())
|
||||
for (auto& node : TravelNodeMap::instance().getNodes())
|
||||
{
|
||||
WorldPosition* pos = node->getPosition();
|
||||
//map area
|
||||
@@ -3642,7 +3643,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
|
||||
std::ostringstream out;
|
||||
out << std::fixed << area << "," << npos.getDisplayX() << "," << npos.getDisplayY();
|
||||
sPlayerbotAIConfig->log(7, out.str().c_str());
|
||||
sPlayerbotAIConfig.log(7, out.str().c_str());
|
||||
}
|
||||
}
|
||||
k++;
|
||||
@@ -3653,7 +3654,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
|
||||
//Explore map output (REMOVE!)
|
||||
|
||||
sPlayerbotAIConfig->openLog(5, "w");
|
||||
sPlayerbotAIConfig.openLog(5, "w");
|
||||
for (auto i : exploreLocs)
|
||||
{
|
||||
for (auto j : i.second->getPoints())
|
||||
@@ -3662,7 +3663,7 @@ void TravelMgr::LoadQuestTravelTable()
|
||||
std::string const name = i.second->getTitle();
|
||||
name.erase(remove(name.begin(), name.end(), '\"'), name.end());
|
||||
out << std::fixed << std::setprecision(2) << name.c_str() << "," << i.first << "," << j->getDisplayX() <<
|
||||
"," << j->getDisplayY() << "," << j->getX() << "," << j->getY() << "," << j->getZ(); sPlayerbotAIConfig->log(5,
|
||||
"," << j->getDisplayY() << "," << j->getX() << "," << j->getY() << "," << j->getZ(); sPlayerbotAIConfig.log(5,
|
||||
out.str().c_str());
|
||||
}
|
||||
}
|
||||
@@ -3897,7 +3898,7 @@ bool TravelMgr::getObjectiveStatus(Player* bot, Quest const* pQuest, uint32 obje
|
||||
if (bot->GetQuestStatus(questId) != QUEST_STATUS_INCOMPLETE)
|
||||
return false;
|
||||
|
||||
QuestStatusData* questStatus = sTravelMgr->getQuestStatus(bot, questId);
|
||||
QuestStatusData* questStatus = TravelMgr::instance().getQuestStatus(bot, questId);
|
||||
|
||||
uint32 reqCount = pQuest->RequiredItemCount[objective];
|
||||
uint32 hasCount = questStatus->ItemCount[objective];
|
||||
@@ -4097,7 +4098,7 @@ void TravelMgr::setNullTravelTarget(Player* player)
|
||||
TravelTarget* target = playerBotAI->GetAiObjectContext()->GetValue<TravelTarget*>("travel target")->Get();
|
||||
|
||||
if (target)
|
||||
target->setTarget(sTravelMgr->nullTravelDestination, sTravelMgr->nullWorldPosition, true);
|
||||
target->setTarget(TravelMgr::instance().nullTravelDestination, TravelMgr::instance().nullWorldPosition, true);
|
||||
}
|
||||
|
||||
void TravelMgr::addMapTransfer(WorldPosition start, WorldPosition end, float portalDistance, bool makeShortcuts)
|
||||
@@ -4146,7 +4147,7 @@ void TravelMgr::addMapTransfer(WorldPosition start, WorldPosition end, float por
|
||||
|
||||
void TravelMgr::loadMapTransfers()
|
||||
{
|
||||
for (auto& node : sTravelNodeMap->getNodes())
|
||||
for (auto& node : TravelNodeMap::instance().getNodes())
|
||||
{
|
||||
for (auto& link : *node->getLinks())
|
||||
{
|
||||
@@ -4233,15 +4234,15 @@ void TravelMgr::printGrid(uint32 mapId, int x, int y, std::string const type)
|
||||
{
|
||||
std::string const fileName = "unload_grid.csv";
|
||||
|
||||
if (sPlayerbotAIConfig->hasLog(fileName))
|
||||
if (sPlayerbotAIConfig.hasLog(fileName))
|
||||
{
|
||||
WorldPosition p = WorldPosition(mapId, 0, 0, 0, 0);
|
||||
|
||||
std::ostringstream out;
|
||||
out << sPlayerbotAIConfig->GetTimestampStr();
|
||||
out << sPlayerbotAIConfig.GetTimestampStr();
|
||||
out << "+00, " << 0 << 0 << x << "," << y << ", " << type << ",";
|
||||
p.printWKT(p.fromGridCoord(GridCoord(x, y)), out, 1, true);
|
||||
sPlayerbotAIConfig->log(fileName, out.str().c_str());
|
||||
sPlayerbotAIConfig.log(fileName, out.str().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4249,7 +4250,7 @@ void TravelMgr::printObj(WorldObject* obj, std::string const type)
|
||||
{
|
||||
std::string fileName = "unload_grid.csv";
|
||||
|
||||
if (sPlayerbotAIConfig->hasLog(fileName))
|
||||
if (sPlayerbotAIConfig.hasLog(fileName))
|
||||
{
|
||||
WorldPosition p = WorldPosition(obj);
|
||||
|
||||
@@ -4261,40 +4262,40 @@ void TravelMgr::printObj(WorldObject* obj, std::string const type)
|
||||
|
||||
{
|
||||
std::ostringstream out;
|
||||
out << sPlayerbotAIConfig->GetTimestampStr();
|
||||
out << sPlayerbotAIConfig.GetTimestampStr();
|
||||
out << "+00, " << obj->GetGUID().GetEntry() << "," << obj->GetGUID().GetCounter() << "," << cell.GridX()
|
||||
<< "," << cell.GridY() << ", " << type << ",";
|
||||
|
||||
p.printWKT(vcell, out, 1, true);
|
||||
sPlayerbotAIConfig->log(fileName, out.str().c_str());
|
||||
sPlayerbotAIConfig.log(fileName, out.str().c_str());
|
||||
}
|
||||
|
||||
{
|
||||
std::ostringstream out;
|
||||
out << sPlayerbotAIConfig->GetTimestampStr();
|
||||
out << sPlayerbotAIConfig.GetTimestampStr();
|
||||
out << "+00, " << obj->GetGUID().GetEntry() << "," << obj->GetGUID().GetCounter() << "," << cell.GridX()
|
||||
<< "," << cell.GridY() << ", " << type << ",";
|
||||
|
||||
p.printWKT(vgrid, out, 1, true);
|
||||
sPlayerbotAIConfig->log(fileName, out.str().c_str());
|
||||
sPlayerbotAIConfig.log(fileName, out.str().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
fileName = "unload_obj.csv";
|
||||
|
||||
if (sPlayerbotAIConfig->hasLog(fileName))
|
||||
if (sPlayerbotAIConfig.hasLog(fileName))
|
||||
{
|
||||
WorldPosition p = WorldPosition(obj);
|
||||
|
||||
Cell cell(obj->GetPositionX(), obj->GetPositionY());
|
||||
{
|
||||
std::ostringstream out;
|
||||
out << sPlayerbotAIConfig->GetTimestampStr();
|
||||
out << sPlayerbotAIConfig.GetTimestampStr();
|
||||
out << "+00, " << obj->GetGUID().GetEntry() << "," << obj->GetGUID().GetCounter() << "," << cell.GridX()
|
||||
<< "," << cell.GridY() << ", " << type << ",";
|
||||
|
||||
p.printWKT({p}, out, 0);
|
||||
sPlayerbotAIConfig->log(fileName, out.str().c_str());
|
||||
sPlayerbotAIConfig.log(fileName, out.str().c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user