AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
SmartWaypointMgr Class Reference

#include "SmartScriptMgr.h"

Public Member Functions

 ~SmartWaypointMgr ()
 
void LoadFromDB ()
 
WPPathGetPath (uint32 id)
 

Static Public Member Functions

static SmartWaypointMgrinstance ()
 

Private Member Functions

 SmartWaypointMgr ()
 

Private Attributes

std::unordered_map< uint32, WPPath * > waypoint_map
 

Detailed Description

Constructor & Destructor Documentation

◆ SmartWaypointMgr()

SmartWaypointMgr::SmartWaypointMgr ( )
inlineprivate
1954{}

◆ ~SmartWaypointMgr()

SmartWaypointMgr::~SmartWaypointMgr ( )
110{
111 for (std::unordered_map<uint32, WPPath*>::iterator itr = waypoint_map.begin(); itr != waypoint_map.end(); ++itr)
112 {
113 for (WPPath::iterator pathItr = itr->second->begin(); pathItr != itr->second->end(); ++pathItr)
114 delete pathItr->second;
115
116 delete itr->second;
117 }
118}
std::unordered_map< uint32, WPPath * > waypoint_map
Definition: SmartScriptMgr.h:1970

References waypoint_map.

Member Function Documentation

◆ GetPath()

WPPath * SmartWaypointMgr::GetPath ( uint32  id)
inline
1963 {
1964 if (waypoint_map.find(id) != waypoint_map.end())
1965 return waypoint_map[id];
1966 else return 0;
1967 }

References waypoint_map.

◆ instance()

SmartWaypointMgr * SmartWaypointMgr::instance ( )
static
41{
43 return &instance;
44}
Definition: SmartScriptMgr.h:1953
static SmartWaypointMgr * instance()
Definition: SmartScriptMgr.cpp:40

References instance().

Referenced by instance().

◆ LoadFromDB()

void SmartWaypointMgr::LoadFromDB ( )
47{
48 uint32 oldMSTime = getMSTime();
49
50 for (std::unordered_map<uint32, WPPath*>::iterator itr = waypoint_map.begin(); itr != waypoint_map.end(); ++itr)
51 {
52 for (WPPath::iterator pathItr = itr->second->begin(); pathItr != itr->second->end(); ++pathItr)
53 delete pathItr->second;
54
55 delete itr->second;
56 }
57
58 waypoint_map.clear();
59
61 PreparedQueryResult result = WorldDatabase.Query(stmt);
62
63 if (!result)
64 {
65 LOG_WARN("server.loading", ">> Loaded 0 SmartAI Waypoint Paths. DB table `waypoints` is empty.");
66 LOG_INFO("server.loading", " ");
67 return;
68 }
69
70 uint32 count = 0;
71 uint32 total = 0;
72 uint32 last_entry = 0;
73 uint32 last_id = 1;
74
75 do
76 {
77 Field* fields = result->Fetch();
78 uint32 entry = fields[0].Get<uint32>();
79 uint32 id = fields[1].Get<uint32>();
80 float x = fields[2].Get<float>();
81 float y = fields[3].Get<float>();
82 float z = fields[4].Get<float>();
84 if (!fields[5].IsNull())
85 o = fields[5].Get<float>();
86 uint32 delay = fields[6].Get<uint32>();
87
88 if (last_entry != entry)
89 {
90 waypoint_map[entry] = new WPPath();
91 last_id = 1;
92 count++;
93 }
94
95 if (last_id != id)
96 LOG_ERROR("sql.sql", "SmartWaypointMgr::LoadFromDB: Path entry {}, unexpected point id {}, expected {}.", entry, id, last_id);
97
98 last_id++;
99 (*waypoint_map[entry])[id] = new WayPoint(id, x, y, z, o, delay);
100
101 last_entry = entry;
102 total++;
103 } while (result->NextRow());
104
105 LOG_INFO("server.loading", ">> Loaded {} SmartAI waypoint paths (total {} waypoints) in {} ms", count, total, GetMSTimeDiffToNow(oldMSTime));
106 LOG_INFO("server.loading", " ");
107}
std::uint32_t uint32
Definition: Define.h:108
#define LOG_INFO(filterType__,...)
Definition: Log.h:165
#define LOG_ERROR(filterType__,...)
Definition: Log.h:157
#define LOG_WARN(filterType__,...)
Definition: Log.h:161
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition: Optional.h:24
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
Definition: Timer.h:131
uint32 getMSTime()
Definition: Timer.h:103
DatabaseWorkerPool< WorldDatabaseConnection > WorldDatabase
Accessor to the world database.
Definition: DatabaseEnv.cpp:20
std::shared_ptr< PreparedResultSet > PreparedQueryResult
Definition: DatabaseEnvFwd.h:46
@ WORLD_SEL_SMARTAI_WP
Definition: WorldDatabase.h:36
std::unordered_map< uint32, WayPoint * > WPPath
Definition: SmartScriptMgr.h:1913
Definition: PreparedStatement.h:158
Class used to access individual fields of database query result.
Definition: Field.h:99
std::enable_if_t< std::is_arithmetic_v< T >, T > Get() const
Definition: Field.h:113
Definition: SmartScriptMgr.h:33

References Field::Get(), getMSTime(), GetMSTimeDiffToNow(), LOG_ERROR, LOG_INFO, LOG_WARN, waypoint_map, WORLD_SEL_SMARTAI_WP, and WorldDatabase.

Member Data Documentation

◆ waypoint_map

std::unordered_map<uint32, WPPath*> SmartWaypointMgr::waypoint_map
private