| 215 | } |
| 216 | |
| 217 | void CEventSystem::LoadEvents() |
| 218 | { |
| 219 | std::string dzv_Dir; |
| 220 | CdzVents* dzvents = CdzVents::GetInstance(); |
| 221 | dzvents->m_bdzVentsExist = false; |
| 222 | |
| 223 | #ifdef WIN32 |
| 224 | m_lua_Dir = szUserDataFolder + "scripts\\lua\\"; |
| 225 | dzv_Dir = szUserDataFolder + "scripts\\dzVents\\generated_scripts\\"; |
| 226 | dzvents->m_scriptsDir = szUserDataFolder + "scripts\\dzVents\\scripts\\"; |
| 227 | dzvents->m_dataDir = szUserDataFolder + "scripts\\dzVents\\data\\"; |
| 228 | dzvents->m_runtimeDir = szStartupFolder + "dzVents\\runtime\\"; |
| 229 | #else |
| 230 | m_lua_Dir = szUserDataFolder + "scripts/lua/"; |
| 231 | dzv_Dir = szUserDataFolder + "scripts/dzVents/generated_scripts/"; |
| 232 | dzvents->m_scriptsDir = szUserDataFolder + "scripts/dzVents/scripts/"; |
| 233 | dzvents->m_dataDir = szUserDataFolder + "scripts/dzVents/data/"; |
| 234 | dzvents->m_runtimeDir = szStartupFolder + "dzVents/runtime/"; |
| 235 | #endif |
| 236 | if (!mkdir_deep(m_lua_Dir.c_str(), 0755)) |
| 237 | { |
| 238 | _log.Log(LOG_NORM, "%s: Created directory %s", __func__, m_lua_Dir.c_str()); |
| 239 | } |
| 240 | if (!mkdir_deep(dzv_Dir.c_str(), 0755)) |
| 241 | { |
| 242 | _log.Log(LOG_NORM, "%s: Created directory %s", __func__, dzv_Dir.c_str()); |
| 243 | } |
| 244 | if (!mkdir_deep(dzvents->m_scriptsDir.c_str(), 0755)) |
| 245 | { |
| 246 | _log.Log(LOG_NORM, "%s: Created directory %s", __func__, dzvents->m_scriptsDir.c_str()); |
| 247 | } |
| 248 | if (!mkdir_deep(dzvents->m_dataDir.c_str(), 0755)) |
| 249 | { |
| 250 | _log.Log(LOG_NORM, "%s: Created directory %s", __func__, dzvents->m_dataDir.c_str()); |
| 251 | } |
| 252 | |
| 253 | boost::unique_lock<boost::shared_mutex> eventsMutexLock(m_eventsMutex); |
| 254 | _log.Log(LOG_STATUS, "EventSystem: reset all events..."); |
| 255 | m_events.clear(); |
| 256 | |
| 257 | std::vector<std::vector<std::string> > result; |
| 258 | result = m_sql.safe_query( |
| 259 | "SELECT EventRules.ID, EventMaster.Name, EventRules.Conditions, EventRules.Actions, EventMaster.Status, " |
| 260 | "EventRules.SequenceNo, EventMaster.Interpreter, EventMaster.Type FROM EventRules " |
| 261 | "INNER JOIN EventMaster ON EventRules.EMID = EventMaster.ID ORDER BY EventRules.ID"); |
| 262 | if (!result.empty()) |
| 263 | { |
| 264 | for (auto &sd : result) |
| 265 | { |
| 266 | _tEventItem eitem; |
| 267 | eitem.ID = std::stoull(sd[0]); |
| 268 | eitem.Name = sd[1] + "_" + sd[5]; |
| 269 | eitem.Interpreter = sd[6]; |
| 270 | std::transform(sd[7].begin(), sd[7].end(), sd[7].begin(), ::tolower); |
| 271 | eitem.Type = sd[7]; |
| 272 | eitem.Conditions = sd[2]; |
| 273 | eitem.Actions = sd[3]; |
| 274 | eitem.EventStatus = atoi(sd[4].c_str()); |
no test coverage detected