From 33dc72a812ad5fb6e17a26b14d6d7f9aaf5d34b5 Mon Sep 17 00:00:00 2001 From: leak Date: Sat, 21 Jun 2014 19:39:16 +0200 Subject: Replaced Threading and SFMT access related code with std::thread and boost TSS Note: The remote access thread is currently broken due to unknown ACE fail (will be replaced at some point anyways..) --- src/server/shared/Database/MySQLThreading.h | 27 +-------------------------- 1 file changed, 1 insertion(+), 26 deletions(-) (limited to 'src/server/shared/Database') diff --git a/src/server/shared/Database/MySQLThreading.h b/src/server/shared/Database/MySQLThreading.h index 0f6af8ace20..da234138879 100644 --- a/src/server/shared/Database/MySQLThreading.h +++ b/src/server/shared/Database/MySQLThreading.h @@ -23,31 +23,6 @@ class MySQL { public: - /*! Create a thread on the MySQL server to mirrior the calling thread, - initializes thread-specific variables and allows thread-specific - operations without concurrence from other threads. - This should only be called if multiple core threads are running - on the same MySQL connection. Seperate MySQL connections implicitly - create a mirror thread. - */ - static void Thread_Init() - { - mysql_thread_init(); - TC_LOG_WARN("sql.sql", "Core thread with ID [" UI64FMTD "] initializing MySQL thread.", - (uint64)ACE_Based::Thread::currentId()); - } - - /*! Shuts down MySQL thread and frees resources, should only be called - when we terminate. MySQL threads and connections are not configurable - during runtime. - */ - static void Thread_End() - { - mysql_thread_end(); - TC_LOG_WARN("sql.sql", "Core thread with ID [" UI64FMTD "] shutting down MySQL thread.", - (uint64)ACE_Based::Thread::currentId()); - } - static void Library_Init() { mysql_library_init(-1, NULL, NULL); @@ -59,4 +34,4 @@ class MySQL } }; -#endif \ No newline at end of file +#endif -- cgit v1.2.3 From f03d49705dc7a0c00350119b319dcf9feb566529 Mon Sep 17 00:00:00 2001 From: Subv Date: Tue, 24 Jun 2014 13:17:23 -0500 Subject: Core/Databases: Removed ACE dependencies on some of the database handling code. --- src/server/game/Server/WorldSession.cpp | 22 +++++--------- src/server/game/World/World.cpp | 20 ++++++------- src/server/game/World/World.h | 2 +- src/server/shared/Database/AdhocStatement.cpp | 8 ++--- src/server/shared/Database/AdhocStatement.h | 12 ++++---- src/server/shared/Database/DatabaseWorkerPool.h | 12 ++++---- src/server/shared/Database/MySQLConnection.cpp | 2 ++ src/server/shared/Database/PreparedStatement.cpp | 8 ++--- src/server/shared/Database/PreparedStatement.h | 9 +++--- src/server/shared/Database/QueryHolder.cpp | 5 +--- src/server/shared/Database/QueryHolder.h | 11 +++---- src/server/shared/Threading/Callback.h | 37 ++++++++++++------------ 12 files changed, 72 insertions(+), 76 deletions(-) (limited to 'src/server/shared/Database') diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 9f8b3785e92..0c391993c0b 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -1105,27 +1105,23 @@ void WorldSession::ProcessQueryCallbacks() PreparedQueryResult result; //! HandleCharEnumOpcode - if (_charEnumCallback.ready()) + if (_charEnumCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready) { - _charEnumCallback.get(result); + result = _charEnumCallback.get(); HandleCharEnum(result); - _charEnumCallback.cancel(); } if (_charCreateCallback.IsReady()) { _charCreateCallback.GetResult(result); HandleCharCreateCallback(result, _charCreateCallback.GetParam()); - // Don't call FreeResult() here, the callback handler will do that depending on the events in the callback chain } //! HandlePlayerLoginOpcode - if (_charLoginCallback.ready()) + if (_charLoginCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready) { - SQLQueryHolder* param; - _charLoginCallback.get(param); + SQLQueryHolder* param = _charLoginCallback.get(); HandlePlayerLogin((LoginQueryHolder*)param); - _charLoginCallback.cancel(); } //! HandleAddFriendOpcode @@ -1147,11 +1143,10 @@ void WorldSession::ProcessQueryCallbacks() } //- HandleCharAddIgnoreOpcode - if (_addIgnoreCallback.ready()) + if (_addIgnoreCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready) { - _addIgnoreCallback.get(result); + result = _addIgnoreCallback.get(); HandleAddIgnoreOpcodeCallBack(result); - _addIgnoreCallback.cancel(); } //- SendStabledPet @@ -1164,11 +1159,10 @@ void WorldSession::ProcessQueryCallbacks() } //- HandleStablePet - if (_stablePetCallback.ready()) + if (_stablePetCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready) { - _stablePetCallback.get(result); + result = _stablePetCallback.get(); HandleStablePetCallback(result); - _stablePetCallback.cancel(); } //- HandleUnstablePet diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index e5b207d9b46..234a366b08e 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -2731,7 +2731,7 @@ void World::UpdateRealmCharCount(uint32 accountId) PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_COUNT); stmt->setUInt32(0, accountId); PreparedQueryResultFuture result = CharacterDatabase.AsyncQuery(stmt); - m_realmCharCallbacks.insert(result); + m_realmCharCallbacks.push_back(std::move(result)); } void World::_UpdateRealmCharCount(PreparedQueryResult resultCharCount) @@ -3088,19 +3088,17 @@ void World::ProcessQueryCallbacks() { PreparedQueryResult result; - while (!m_realmCharCallbacks.is_empty()) + for (std::deque>::iterator itr = m_realmCharCallbacks.begin(); itr != m_realmCharCallbacks.end(); ) { - ACE_Future lResult; - ACE_Time_Value timeout = ACE_Time_Value::zero; - if (m_realmCharCallbacks.next_readable(lResult, &timeout) != 1) - break; - - if (lResult.ready()) + if ((*itr).wait_for(std::chrono::seconds(0)) != std::future_status::ready) { - lResult.get(result); - _UpdateRealmCharCount(result); - lResult.cancel(); + ++itr; + continue; } + + result = (*itr).get(); + _UpdateRealmCharCount(result); + itr = m_realmCharCallbacks.erase(itr); } } diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index f5c0dd1cb8f..9c68ee8add2 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -839,7 +839,7 @@ class World void LoadCharacterNameData(); void ProcessQueryCallbacks(); - ACE_Future_Set m_realmCharCallbacks; + std::deque> m_realmCharCallbacks; }; extern uint32 realmID; diff --git a/src/server/shared/Database/AdhocStatement.cpp b/src/server/shared/Database/AdhocStatement.cpp index 896fefde5b7..65c41823ccb 100644 --- a/src/server/shared/Database/AdhocStatement.cpp +++ b/src/server/shared/Database/AdhocStatement.cpp @@ -25,9 +25,9 @@ m_has_result(false) m_sql = strdup(sql); } -BasicStatementTask::BasicStatementTask(const char* sql, QueryResultFuture result) : +BasicStatementTask::BasicStatementTask(const char* sql, QueryResultPromise& result) : m_has_result(true), -m_result(result) +m_result(std::move(result)) { m_sql = strdup(sql); } @@ -45,11 +45,11 @@ bool BasicStatementTask::Execute() if (!result || !result->GetRowCount() || !result->NextRow()) { delete result; - m_result.set(QueryResult(NULL)); + m_result.set_value(QueryResult(NULL)); return false; } - m_result.set(QueryResult(result)); + m_result.set_value(QueryResult(result)); return true; } diff --git a/src/server/shared/Database/AdhocStatement.h b/src/server/shared/Database/AdhocStatement.h index 44a9fa3d3ee..a67caaa160f 100644 --- a/src/server/shared/Database/AdhocStatement.h +++ b/src/server/shared/Database/AdhocStatement.h @@ -18,24 +18,26 @@ #ifndef _ADHOCSTATEMENT_H #define _ADHOCSTATEMENT_H -#include +#include #include "SQLOperation.h" -typedef ACE_Future QueryResultFuture; +typedef std::future QueryResultFuture; +typedef std::promise QueryResultPromise; + /*! Raw, ad-hoc query. */ class BasicStatementTask : public SQLOperation { public: BasicStatementTask(const char* sql); - BasicStatementTask(const char* sql, QueryResultFuture result); + BasicStatementTask(const char* sql, QueryResultPromise& result); ~BasicStatementTask(); - bool Execute(); + bool Execute() override; private: const char* m_sql; //- Raw query to be executed bool m_has_result; - QueryResultFuture m_result; + QueryResultPromise m_result; }; #endif \ No newline at end of file diff --git a/src/server/shared/Database/DatabaseWorkerPool.h b/src/server/shared/Database/DatabaseWorkerPool.h index 9c56c75bf71..078b97762b5 100644 --- a/src/server/shared/Database/DatabaseWorkerPool.h +++ b/src/server/shared/Database/DatabaseWorkerPool.h @@ -307,10 +307,10 @@ class DatabaseWorkerPool //! The return value is then processed in ProcessQueryCallback methods. QueryResultFuture AsyncQuery(const char* sql) { - QueryResultFuture res; + QueryResultPromise res; BasicStatementTask* task = new BasicStatementTask(sql, res); Enqueue(task); - return res; //! Actual return value has no use yet + return res.get_future(); //! Actual return value has no use yet } //! Enqueues a query in string format -with variable args- that will set the value of the QueryResultFuture return object as soon as the query is executed. @@ -331,10 +331,10 @@ class DatabaseWorkerPool //! Statement must be prepared with CONNECTION_ASYNC flag. PreparedQueryResultFuture AsyncQuery(PreparedStatement* stmt) { - PreparedQueryResultFuture res; + PreparedQueryResultPromise res; PreparedStatementTask* task = new PreparedStatementTask(stmt, res); Enqueue(task); - return res; + return res.get_future(); } //! Enqueues a vector of SQL operations (can be both adhoc and prepared) that will set the value of the QueryResultHolderFuture @@ -343,10 +343,10 @@ class DatabaseWorkerPool //! Any prepared statements added to this holder need to be prepared with the CONNECTION_ASYNC flag. QueryResultHolderFuture DelayQueryHolder(SQLQueryHolder* holder) { - QueryResultHolderFuture res; + QueryResultHolderPromise res; SQLQueryHolderTask* task = new SQLQueryHolderTask(holder, res); Enqueue(task); - return res; //! Fool compiler, has no use yet + return res.get_future(); //! Fool compiler, has no use yet } /** diff --git a/src/server/shared/Database/MySQLConnection.cpp b/src/server/shared/Database/MySQLConnection.cpp index 55d47c76430..0d2d97f7f28 100644 --- a/src/server/shared/Database/MySQLConnection.cpp +++ b/src/server/shared/Database/MySQLConnection.cpp @@ -34,6 +34,8 @@ #include "Timer.h" #include "Log.h" +#include + MySQLConnection::MySQLConnection(MySQLConnectionInfo& connInfo) : m_reconnecting(false), m_prepareError(false), diff --git a/src/server/shared/Database/PreparedStatement.cpp b/src/server/shared/Database/PreparedStatement.cpp index fe052bf5043..4b2b55f25e5 100644 --- a/src/server/shared/Database/PreparedStatement.cpp +++ b/src/server/shared/Database/PreparedStatement.cpp @@ -449,10 +449,10 @@ PreparedStatementTask::PreparedStatementTask(PreparedStatement* stmt) : m_stmt(stmt), m_has_result(false) { } -PreparedStatementTask::PreparedStatementTask(PreparedStatement* stmt, PreparedQueryResultFuture result) : +PreparedStatementTask::PreparedStatementTask(PreparedStatement* stmt, PreparedQueryResultPromise& result) : m_stmt(stmt), m_has_result(true), -m_result(result) { } +m_result(std::move(result)) { } PreparedStatementTask::~PreparedStatementTask() @@ -468,10 +468,10 @@ bool PreparedStatementTask::Execute() if (!result || !result->GetRowCount()) { delete result; - m_result.set(PreparedQueryResult(NULL)); + m_result.set_value(PreparedQueryResult(NULL)); return false; } - m_result.set(PreparedQueryResult(result)); + m_result.set_value(PreparedQueryResult(result)); return true; } diff --git a/src/server/shared/Database/PreparedStatement.h b/src/server/shared/Database/PreparedStatement.h index 6afb309db2c..d69ee52a3e7 100644 --- a/src/server/shared/Database/PreparedStatement.h +++ b/src/server/shared/Database/PreparedStatement.h @@ -18,8 +18,8 @@ #ifndef _PREPAREDSTATEMENT_H #define _PREPAREDSTATEMENT_H +#include #include "SQLOperation.h" -#include #ifdef __APPLE__ #undef TYPE_BOOL @@ -153,14 +153,15 @@ class MySQLPreparedStatement MySQLPreparedStatement& operator=(MySQLPreparedStatement const& right) = delete; }; -typedef ACE_Future PreparedQueryResultFuture; +typedef std::future PreparedQueryResultFuture; +typedef std::promise PreparedQueryResultPromise; //- Lower-level class, enqueuable operation class PreparedStatementTask : public SQLOperation { public: PreparedStatementTask(PreparedStatement* stmt); - PreparedStatementTask(PreparedStatement* stmt, PreparedQueryResultFuture result); + PreparedStatementTask(PreparedStatement* stmt, PreparedQueryResultPromise& result); ~PreparedStatementTask(); bool Execute(); @@ -168,6 +169,6 @@ class PreparedStatementTask : public SQLOperation protected: PreparedStatement* m_stmt; bool m_has_result; - PreparedQueryResultFuture m_result; + PreparedQueryResultPromise m_result; }; #endif diff --git a/src/server/shared/Database/QueryHolder.cpp b/src/server/shared/Database/QueryHolder.cpp index 7b4105ee076..bd938561b50 100644 --- a/src/server/shared/Database/QueryHolder.cpp +++ b/src/server/shared/Database/QueryHolder.cpp @@ -168,9 +168,6 @@ void SQLQueryHolder::SetSize(size_t size) bool SQLQueryHolderTask::Execute() { - //the result can't be ready as we are processing it right now - ASSERT(!m_result.ready()); - if (!m_holder) return false; @@ -202,6 +199,6 @@ bool SQLQueryHolderTask::Execute() } } - m_result.set(m_holder); + m_result.set_value(m_holder); return true; } diff --git a/src/server/shared/Database/QueryHolder.h b/src/server/shared/Database/QueryHolder.h index b92b2e5327e..5751675fe5f 100644 --- a/src/server/shared/Database/QueryHolder.h +++ b/src/server/shared/Database/QueryHolder.h @@ -18,7 +18,7 @@ #ifndef _QUERYHOLDER_H #define _QUERYHOLDER_H -#include +#include class SQLQueryHolder { @@ -39,17 +39,18 @@ class SQLQueryHolder void SetPreparedResult(size_t index, PreparedResultSet* result); }; -typedef ACE_Future QueryResultHolderFuture; +typedef std::future QueryResultHolderFuture; +typedef std::promise QueryResultHolderPromise; class SQLQueryHolderTask : public SQLOperation { private: SQLQueryHolder * m_holder; - QueryResultHolderFuture m_result; + QueryResultHolderPromise m_result; public: - SQLQueryHolderTask(SQLQueryHolder *holder, QueryResultHolderFuture res) - : m_holder(holder), m_result(res){ }; + SQLQueryHolderTask(SQLQueryHolder *holder, QueryResultHolderPromise& res) + : m_holder(holder), m_result(std::move(res)){ }; bool Execute(); }; diff --git a/src/server/shared/Threading/Callback.h b/src/server/shared/Threading/Callback.h index c48546bbf5c..a6aa11b3958 100644 --- a/src/server/shared/Threading/Callback.h +++ b/src/server/shared/Threading/Callback.h @@ -18,12 +18,13 @@ #ifndef _CALLBACK_H #define _CALLBACK_H -#include -#include +#include #include "QueryResult.h" -typedef ACE_Future QueryResultFuture; -typedef ACE_Future PreparedQueryResultFuture; +typedef std::future QueryResultFuture; +typedef std::promise QueryResultPromise; +typedef std::future PreparedQueryResultFuture; +typedef std::promise PreparedQueryResultPromise; /*! A simple template using ACE_Future to manage callbacks from the thread and object that issued the request. is variable type of parameter that is used as parameter @@ -38,29 +39,29 @@ class QueryCallback QueryCallback() : _param(), _stage(chain ? 0 : CALLBACK_STAGE_INVALID) { } //! The parameter of this function should be a resultset returned from either .AsyncQuery or .AsyncPQuery - void SetFutureResult(ACE_Future value) + void SetFutureResult(std::future& value) { - _result = value; + _result = std::move(value); } - ACE_Future GetFutureResult() + std::future& GetFutureResult() { return _result; } int IsReady() { - return _result.ready(); + return _result.wait_for(std::chrono::seconds(0)) == std::future_status::ready; } void GetResult(Result& res) { - _result.get(res); + res = _result.get(); } void FreeResult() { - _result.cancel(); + // Nothing to do here, the constructor of std::future will take care of the cleanup } void SetParam(ParamType value) @@ -106,7 +107,7 @@ class QueryCallback } private: - ACE_Future _result; + std::future _result; ParamType _param; uint8 _stage; @@ -121,29 +122,29 @@ class QueryCallback_2 QueryCallback_2() : _stage(chain ? 0 : CALLBACK_STAGE_INVALID) { } //! The parameter of this function should be a resultset returned from either .AsyncQuery or .AsyncPQuery - void SetFutureResult(ACE_Future value) + void SetFutureResult(std::future& value) { - _result = value; + _result = std::move(value); } - ACE_Future GetFutureResult() + std::future& GetFutureResult() { return _result; } int IsReady() { - return _result.ready(); + return _result.wait_for(std::chrono::seconds(0)) == std::future_status::ready; } void GetResult(Result& res) { - _result.get(res); + res = _result.get(); } void FreeResult() { - _result.cancel(); + // Nothing to do here, the constructor of std::future will take care of the cleanup } void SetFirstParam(ParamType1 value) @@ -200,7 +201,7 @@ class QueryCallback_2 } private: - ACE_Future _result; + std::future _result; ParamType1 _param_1; ParamType2 _param_2; uint8 _stage; -- cgit v1.2.3 From d39a013b6b979a5158bf86c37a197cb902b2c2f9 Mon Sep 17 00:00:00 2001 From: leak Date: Mon, 30 Jun 2014 18:37:23 +0200 Subject: Replaced ACE_Task_Base based DatabaseWorker with PCQ Note: Not exactly sure how shutdown should be handled, currently the queue clears itself out before shutting down This might need to be changed if the queue should be fully processed before being deleted --- src/server/shared/Database/DatabaseWorker.cpp | 44 +++++++++++++--------- src/server/shared/Database/DatabaseWorker.h | 21 ++++++----- src/server/shared/Database/DatabaseWorkerPool.h | 20 ++++------ .../Database/Implementation/CharacterDatabase.h | 2 +- .../shared/Database/Implementation/LoginDatabase.h | 2 +- .../shared/Database/Implementation/WorldDatabase.h | 2 +- src/server/shared/Database/MySQLConnection.cpp | 13 +++---- src/server/shared/Database/MySQLConnection.h | 5 ++- src/server/shared/Database/SQLOperation.h | 5 +-- .../shared/Threading/ProducerConsumerQueue.h | 11 +++++- 10 files changed, 68 insertions(+), 57 deletions(-) (limited to 'src/server/shared/Database') diff --git a/src/server/shared/Database/DatabaseWorker.cpp b/src/server/shared/Database/DatabaseWorker.cpp index 3581f8e0211..3944c008652 100644 --- a/src/server/shared/Database/DatabaseWorker.cpp +++ b/src/server/shared/Database/DatabaseWorker.cpp @@ -20,32 +20,42 @@ #include "SQLOperation.h" #include "MySQLConnection.h" #include "MySQLThreading.h" +#include "ProducerConsumerQueue.h" -DatabaseWorker::DatabaseWorker(ACE_Activation_Queue* new_queue, MySQLConnection* con) : -m_queue(new_queue), -m_conn(con) +DatabaseWorker::DatabaseWorker(ProducerConsumerQueue* newQueue, MySQLConnection* connection) { - /// Assign thread to task - activate(); + _connection = connection; + _queue = newQueue; + _cancelationToken = false; + _workerThread = std::thread(&DatabaseWorker::WorkerThread, this); } -int DatabaseWorker::svc() +DatabaseWorker::~DatabaseWorker() { - if (!m_queue) - return -1; + _cancelationToken = true; + + _queue->Cancel(); + + _workerThread.join(); +} + +void DatabaseWorker::WorkerThread() +{ + if (!_queue) + return; - SQLOperation *request = NULL; while (1) { - request = (SQLOperation*)(m_queue->dequeue()); - if (!request) - break; + SQLOperation* operation = nullptr; - request->SetConnection(m_conn); - request->call(); + _queue->WaitAndPop(operation); - delete request; - } + if (_cancelationToken) + return; - return 0; + operation->SetConnection(_connection); + operation->call(); + + delete operation; + } } diff --git a/src/server/shared/Database/DatabaseWorker.h b/src/server/shared/Database/DatabaseWorker.h index dc883dd3428..9b45318e39f 100644 --- a/src/server/shared/Database/DatabaseWorker.h +++ b/src/server/shared/Database/DatabaseWorker.h @@ -19,23 +19,24 @@ #define _WORKERTHREAD_H #include "Define.h" -#include -#include +#include "ProducerConsumerQueue.h" class MySQLConnection; -class DatabaseWorker : protected ACE_Task_Base +class DatabaseWorker { public: - DatabaseWorker(ACE_Activation_Queue* new_queue, MySQLConnection* con); - - ///- Inherited from ACE_Task_Base - int svc(); - int wait() { return ACE_Task_Base::wait(); } + DatabaseWorker(ProducerConsumerQueue* newQueue, MySQLConnection* connection); + ~DatabaseWorker(); private: - ACE_Activation_Queue* m_queue; - MySQLConnection* m_conn; + ProducerConsumerQueue* _queue; + MySQLConnection* _connection; + + void WorkerThread(); + std::thread _workerThread; + + std::atomic_bool _cancelationToken; DatabaseWorker(DatabaseWorker const& right) = delete; DatabaseWorker& operator=(DatabaseWorker const& right) = delete; diff --git a/src/server/shared/Database/DatabaseWorkerPool.h b/src/server/shared/Database/DatabaseWorkerPool.h index 078b97762b5..e56dcc329cd 100644 --- a/src/server/shared/Database/DatabaseWorkerPool.h +++ b/src/server/shared/Database/DatabaseWorkerPool.h @@ -52,7 +52,7 @@ class DatabaseWorkerPool DatabaseWorkerPool() : _connectionInfo(NULL) { _messageQueue = new ACE_Message_Queue(8 * 1024 * 1024, 8 * 1024 * 1024); - _queue = new ACE_Activation_Queue(_messageQueue); + _queue = new ProducerConsumerQueue(); memset(_connectionCount, 0, sizeof(_connectionCount)); _connections.resize(IDX_SIZE); @@ -107,16 +107,10 @@ class DatabaseWorkerPool { TC_LOG_INFO("sql.driver", "Closing down DatabasePool '%s'.", GetDatabaseName()); - //! Shuts down delaythreads for this connection pool by underlying deactivate(). - //! The next dequeue attempt in the worker thread tasks will result in an error, - //! ultimately ending the worker thread task. - _queue->queue()->close(); - for (uint8 i = 0; i < _connectionCount[IDX_ASYNC]; ++i) { T* t = _connections[IDX_ASYNC][i]; DatabaseWorker* worker = t->m_worker; - worker->wait(); //! Block until no more threads are running this task. delete worker; t->Close(); //! Closes the actualy MySQL connection. } @@ -488,7 +482,7 @@ class DatabaseWorkerPool void Enqueue(SQLOperation* op) { - _queue->enqueue(op); + _queue->Push(op); } //! Gets a free connection in the synchronous connection pool. @@ -523,11 +517,11 @@ class DatabaseWorkerPool IDX_SIZE }; - ACE_Message_Queue* _messageQueue; //! Message Queue used by ACE_Activation_Queue - ACE_Activation_Queue* _queue; //! Queue shared by async worker threads. - std::vector< std::vector > _connections; - uint32 _connectionCount[2]; //! Counter of MySQL connections; - MySQLConnectionInfo* _connectionInfo; + ACE_Message_Queue* _messageQueue; //! Message Queue used by ACE_Activation_Queue + ProducerConsumerQueue* _queue; //! Queue shared by async worker threads. + std::vector< std::vector > _connections; + uint32 _connectionCount[2]; //! Counter of MySQL connections; + MySQLConnectionInfo* _connectionInfo; }; #endif diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h index 98d7fe231f1..61167681b0b 100644 --- a/src/server/shared/Database/Implementation/CharacterDatabase.h +++ b/src/server/shared/Database/Implementation/CharacterDatabase.h @@ -26,7 +26,7 @@ class CharacterDatabaseConnection : public MySQLConnection public: //- Constructors for sync and async connections CharacterDatabaseConnection(MySQLConnectionInfo& connInfo) : MySQLConnection(connInfo) { } - CharacterDatabaseConnection(ACE_Activation_Queue* q, MySQLConnectionInfo& connInfo) : MySQLConnection(q, connInfo) { } + CharacterDatabaseConnection(ProducerConsumerQueue* q, MySQLConnectionInfo& connInfo) : MySQLConnection(q, connInfo) { } //- Loads database type specific prepared statements void DoPrepareStatements(); diff --git a/src/server/shared/Database/Implementation/LoginDatabase.h b/src/server/shared/Database/Implementation/LoginDatabase.h index 604e9d39551..7fa2ff49324 100644 --- a/src/server/shared/Database/Implementation/LoginDatabase.h +++ b/src/server/shared/Database/Implementation/LoginDatabase.h @@ -26,7 +26,7 @@ class LoginDatabaseConnection : public MySQLConnection public: //- Constructors for sync and async connections LoginDatabaseConnection(MySQLConnectionInfo& connInfo) : MySQLConnection(connInfo) { } - LoginDatabaseConnection(ACE_Activation_Queue* q, MySQLConnectionInfo& connInfo) : MySQLConnection(q, connInfo) { } + LoginDatabaseConnection(ProducerConsumerQueue* q, MySQLConnectionInfo& connInfo) : MySQLConnection(q, connInfo) { } //- Loads database type specific prepared statements void DoPrepareStatements(); diff --git a/src/server/shared/Database/Implementation/WorldDatabase.h b/src/server/shared/Database/Implementation/WorldDatabase.h index a815373a1c6..c8c38d8a629 100644 --- a/src/server/shared/Database/Implementation/WorldDatabase.h +++ b/src/server/shared/Database/Implementation/WorldDatabase.h @@ -26,7 +26,7 @@ class WorldDatabaseConnection : public MySQLConnection public: //- Constructors for sync and async connections WorldDatabaseConnection(MySQLConnectionInfo& connInfo) : MySQLConnection(connInfo) { } - WorldDatabaseConnection(ACE_Activation_Queue* q, MySQLConnectionInfo& connInfo) : MySQLConnection(q, connInfo) { } + WorldDatabaseConnection(ProducerConsumerQueue* q, MySQLConnectionInfo& connInfo) : MySQLConnection(q, connInfo) { } //- Loads database type specific prepared statements void DoPrepareStatements(); diff --git a/src/server/shared/Database/MySQLConnection.cpp b/src/server/shared/Database/MySQLConnection.cpp index 0d2d97f7f28..8b24f508331 100644 --- a/src/server/shared/Database/MySQLConnection.cpp +++ b/src/server/shared/Database/MySQLConnection.cpp @@ -33,8 +33,7 @@ #include "DatabaseWorker.h" #include "Timer.h" #include "Log.h" - -#include +#include "ProducerConsumerQueue.h" MySQLConnection::MySQLConnection(MySQLConnectionInfo& connInfo) : m_reconnecting(false), @@ -45,7 +44,7 @@ m_Mysql(NULL), m_connectionInfo(connInfo), m_connectionFlags(CONNECTION_SYNCH) { } -MySQLConnection::MySQLConnection(ACE_Activation_Queue* queue, MySQLConnectionInfo& connInfo) : +MySQLConnection::MySQLConnection(ProducerConsumerQueue* queue, MySQLConnectionInfo& connInfo) : m_reconnecting(false), m_prepareError(false), m_queue(queue), @@ -502,8 +501,8 @@ bool MySQLConnection::_HandleMySQLErrno(uint32 errNo) } uint32 lErrno = mysql_errno(GetHandle()); // It's possible this attempted reconnect throws 2006 at us. To prevent crazy recursive calls, sleep here. - ACE_OS::sleep(3); // Sleep 3 seconds - return _HandleMySQLErrno(lErrno); // Call self (recursive) + std::this_thread::sleep_for(std::chrono::seconds(3)); // Sleep 3 seconds + return _HandleMySQLErrno(lErrno); // Call self (recursive) } case ER_LOCK_DEADLOCK: @@ -517,12 +516,12 @@ bool MySQLConnection::_HandleMySQLErrno(uint32 errNo) case ER_BAD_FIELD_ERROR: case ER_NO_SUCH_TABLE: TC_LOG_ERROR("sql.sql", "Your database structure is not up to date. Please make sure you've executed all queries in the sql/updates folders."); - ACE_OS::sleep(10); + std::this_thread::sleep_for(std::chrono::seconds(10)); std::abort(); return false; case ER_PARSE_ERROR: TC_LOG_ERROR("sql.sql", "Error while parsing SQL. Core fix required."); - ACE_OS::sleep(10); + std::this_thread::sleep_for(std::chrono::seconds(10)); std::abort(); return false; default: diff --git a/src/server/shared/Database/MySQLConnection.h b/src/server/shared/Database/MySQLConnection.h index 512df7c16c7..3b7efeb5846 100644 --- a/src/server/shared/Database/MySQLConnection.h +++ b/src/server/shared/Database/MySQLConnection.h @@ -20,6 +20,7 @@ #include "DatabaseWorkerPool.h" #include "Transaction.h" #include "Util.h" +#include "ProducerConsumerQueue.h" #ifndef _MYSQLCONNECTION_H #define _MYSQLCONNECTION_H @@ -70,7 +71,7 @@ class MySQLConnection public: MySQLConnection(MySQLConnectionInfo& connInfo); //! Constructor for synchronous connections. - MySQLConnection(ACE_Activation_Queue* queue, MySQLConnectionInfo& connInfo); //! Constructor for asynchronous connections. + MySQLConnection(ProducerConsumerQueue* queue, MySQLConnectionInfo& connInfo); //! Constructor for asynchronous connections. virtual ~MySQLConnection(); virtual bool Open(); @@ -125,7 +126,7 @@ class MySQLConnection bool _HandleMySQLErrno(uint32 errNo); private: - ACE_Activation_Queue* m_queue; //! Queue shared with other asynchronous connections. + ProducerConsumerQueue* m_queue; //! Queue shared with other asynchronous connections. DatabaseWorker* m_worker; //! Core worker task. MYSQL * m_Mysql; //! MySQL Handle. MySQLConnectionInfo& m_connectionInfo; //! Connection info (used for logging) diff --git a/src/server/shared/Database/SQLOperation.h b/src/server/shared/Database/SQLOperation.h index 6f933a051e3..64fc64e2c2e 100644 --- a/src/server/shared/Database/SQLOperation.h +++ b/src/server/shared/Database/SQLOperation.h @@ -18,9 +18,6 @@ #ifndef _SQLOPERATION_H #define _SQLOPERATION_H -#include -#include - #include "QueryResult.h" //- Forward declare (don't include header to prevent circular includes) @@ -56,7 +53,7 @@ union SQLResultSetUnion class MySQLConnection; -class SQLOperation : public ACE_Method_Request +class SQLOperation { public: SQLOperation(): m_conn(NULL) { } diff --git a/src/server/shared/Threading/ProducerConsumerQueue.h b/src/server/shared/Threading/ProducerConsumerQueue.h index 961cb9f9c82..41bff445c2e 100644 --- a/src/server/shared/Threading/ProducerConsumerQueue.h +++ b/src/server/shared/Threading/ProducerConsumerQueue.h @@ -21,6 +21,7 @@ #include #include #include +#include template class ProducerConsumerQueue @@ -29,9 +30,12 @@ private: std::mutex _queueLock; std::queue _queue; std::condition_variable _condition; + std::atomic _shutdown; public: + ProducerConsumerQueue() : _shutdown(false) { } + void Push(const T& value) { _queueLock.lock(); @@ -68,7 +72,10 @@ public: { std::unique_lock lock(_queueLock); - _condition.wait(lock, [this](){ return !_queue.empty(); }); + while (_queue.empty() && !_shutdown) + { + _condition.wait(lock); + } if (_queue.empty()) return; @@ -91,6 +98,8 @@ public: _queue.pop(); } + _shutdown = true; + _queueLock.unlock(); _condition.notify_all(); -- cgit v1.2.3 From 029bad6698df6ac9556fe308342e616f4a7a8cc7 Mon Sep 17 00:00:00 2001 From: leak Date: Tue, 1 Jul 2014 00:54:09 +0200 Subject: Replaced all remaining ACE based Singletons Replaced ACE base AutoPtr class with shared_ptr Note: worldserver currently broken due to MapUpdater threading failure (ACE ofc, what else could it be) --- src/server/authserver/Main.cpp | 1 - src/server/collision/Management/VMapManager2.cpp | 2 - src/server/game/AI/SmartScripts/SmartScriptMgr.h | 28 +++++++---- src/server/game/Accounts/AccountMgr.h | 11 +++-- src/server/game/Achievements/AchievementMgr.h | 10 ++-- src/server/game/AuctionHouse/AuctionHouseMgr.h | 11 +++-- src/server/game/Battlefield/BattlefieldMgr.h | 17 ++++--- src/server/game/Battlegrounds/ArenaTeam.h | 1 - src/server/game/Battlegrounds/ArenaTeamMgr.h | 10 +++- src/server/game/Battlegrounds/BattlegroundMgr.h | 11 +++-- src/server/game/Calendar/CalendarMgr.h | 11 +++-- src/server/game/Chat/Channels/ChannelMgr.cpp | 6 +-- src/server/game/Chat/Channels/ChannelMgr.h | 14 ++++-- src/server/game/Conditions/ConditionMgr.h | 12 +++-- src/server/game/DataStores/DBCStructure.h | 10 ++-- src/server/game/DungeonFinding/LFGMgr.h | 11 +++-- src/server/game/Entities/Creature/CreatureGroups.h | 13 +++-- src/server/game/Entities/Item/Item.cpp | 4 +- src/server/game/Entities/Player/Player.cpp | 6 +-- src/server/game/Entities/Player/SocialMgr.h | 11 +++-- src/server/game/Events/GameEventMgr.h | 11 +++-- src/server/game/Globals/ObjectMgr.h | 10 ++-- src/server/game/Groups/GroupMgr.h | 9 +++- src/server/game/Guilds/GuildMgr.h | 10 ++-- src/server/game/Handlers/AddonHandler.cpp | 4 -- src/server/game/Handlers/AddonHandler.h | 19 ++++---- src/server/game/Maps/MapManager.h | 14 +++--- src/server/game/Maps/TransportMgr.h | 10 ++-- src/server/game/Movement/MovementGenerator.h | 1 - .../game/Movement/Waypoints/WaypointManager.h | 13 ++--- src/server/game/OutdoorPvP/OutdoorPvPMgr.h | 11 +++-- src/server/game/Pools/PoolMgr.h | 11 +++-- src/server/game/Scripting/ScriptMgr.h | 10 ++-- src/server/game/Scripting/ScriptSystem.h | 11 +++-- src/server/game/Server/Protocol/PacketLog.h | 11 +++-- src/server/game/Server/WorldSession.cpp | 2 +- src/server/game/Server/WorldSocketMgr.h | 12 +++-- src/server/game/Spells/SpellMgr.h | 12 +++-- src/server/game/Texts/CreatureTextMgr.h | 14 ++++-- src/server/game/Tickets/TicketMgr.h | 11 +++-- src/server/game/Warden/WardenCheckMgr.h | 14 ++++-- src/server/game/Weather/WeatherMgr.cpp | 2 +- src/server/game/World/World.cpp | 4 +- src/server/game/World/World.h | 17 ++++--- src/server/shared/Cryptography/ARC4.h | 2 +- src/server/shared/Cryptography/BigNumber.h | 1 - src/server/shared/Database/DatabaseWorkerPool.h | 10 +--- src/server/shared/Database/MySQLConnection.h | 8 ++-- src/server/shared/Database/QueryResult.h | 8 ++-- src/server/shared/Database/Transaction.h | 2 +- src/server/shared/Debugging/Errors.cpp | 11 ++--- src/server/shared/Logging/Appender.h | 4 +- src/server/shared/Logging/AppenderConsole.h | 2 +- src/server/shared/Logging/AppenderFile.h | 2 +- src/server/shared/Threading/Callback.h | 6 +-- src/server/shared/Threading/DelayExecutor.cpp | 18 ++++++- src/server/shared/Threading/DelayExecutor.h | 2 - src/server/worldserver/Master.cpp | 55 ++++++++-------------- src/server/worldserver/Master.h | 8 +++- .../worldserver/WorldThread/WorldRunnable.cpp | 4 +- src/server/worldserver/WorldThread/WorldRunnable.h | 4 +- 61 files changed, 347 insertions(+), 243 deletions(-) (limited to 'src/server/shared/Database') diff --git a/src/server/authserver/Main.cpp b/src/server/authserver/Main.cpp index 3901480c70d..ad04a52c7db 100644 --- a/src/server/authserver/Main.cpp +++ b/src/server/authserver/Main.cpp @@ -178,7 +178,6 @@ int main(int argc, char** argv) SetProcessPriority(); - _dbPingInterval = sConfigMgr->GetIntDefault("MaxPingTime", 30); _dbPingTimer.expires_from_now(boost::posix_time::seconds(_dbPingInterval)); diff --git a/src/server/collision/Management/VMapManager2.cpp b/src/server/collision/Management/VMapManager2.cpp index 2aa3b6ab40d..00381cb1205 100644 --- a/src/server/collision/Management/VMapManager2.cpp +++ b/src/server/collision/Management/VMapManager2.cpp @@ -26,8 +26,6 @@ #include "ModelInstance.h" #include "WorldModel.h" #include -#include -#include #include "DisableMgr.h" #include "DBCStores.h" #include "Log.h" diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 3d14b8f69e9..0380ec8bae9 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -1396,11 +1396,17 @@ typedef std::unordered_map ObjectListMap; class SmartWaypointMgr { - friend class ACE_Singleton; - SmartWaypointMgr() { } - public: + private: + SmartWaypointMgr() { } ~SmartWaypointMgr(); + public: + static SmartWaypointMgr* instance() + { + static SmartWaypointMgr* instance = new SmartWaypointMgr(); + return instance; + } + void LoadFromDB(); WPPath* GetPath(uint32 id) @@ -1426,11 +1432,17 @@ typedef std::pair; - SmartAIMgr() { } - public: + private: + SmartAIMgr() { } ~SmartAIMgr() { } + public: + static SmartAIMgr* instance() + { + static SmartAIMgr* instance = new SmartAIMgr(); + return instance; + } + void LoadSmartAIFromDB(); SmartAIEventList GetScript(int32 entry, SmartScriptType type) @@ -1598,6 +1610,6 @@ class SmartAIMgr CacheSpellContainer KillCreditSpellStore; }; -#define sSmartScriptMgr ACE_Singleton::instance() -#define sSmartWaypointMgr ACE_Singleton::instance() +#define sSmartScriptMgr SmartAIMgr::instance() +#define sSmartWaypointMgr SmartWaypointMgr::instance() #endif diff --git a/src/server/game/Accounts/AccountMgr.h b/src/server/game/Accounts/AccountMgr.h index b3012ace177..2f3137ae3cd 100644 --- a/src/server/game/Accounts/AccountMgr.h +++ b/src/server/game/Accounts/AccountMgr.h @@ -20,7 +20,6 @@ #define _ACCMGR_H #include "RBAC.h" -#include enum AccountOpResult { @@ -51,13 +50,17 @@ typedef std::map RBACDefaultPermissionsCon class AccountMgr { - friend class ACE_Singleton; - private: AccountMgr(); ~AccountMgr(); public: + static AccountMgr* instance() + { + static AccountMgr* instance = new AccountMgr(); + return instance; + } + AccountOpResult CreateAccount(std::string username, std::string password, std::string email); static AccountOpResult DeleteAccount(uint32 accountId); static AccountOpResult ChangeUsername(uint32 accountId, std::string newUsername, std::string newPassword); @@ -95,5 +98,5 @@ class AccountMgr rbac::RBACDefaultPermissionsContainer _defaultPermissions; }; -#define sAccountMgr ACE_Singleton::instance() +#define sAccountMgr AccountMgr::instance() #endif diff --git a/src/server/game/Achievements/AchievementMgr.h b/src/server/game/Achievements/AchievementMgr.h index c3a1481bb2e..7128b8d6318 100644 --- a/src/server/game/Achievements/AchievementMgr.h +++ b/src/server/game/Achievements/AchievementMgr.h @@ -23,7 +23,6 @@ #include #include "Common.h" -#include #include "DatabaseEnv.h" #include "DBCEnums.h" #include "DBCStores.h" @@ -305,11 +304,16 @@ class AchievementMgr class AchievementGlobalMgr { - friend class ACE_Singleton; AchievementGlobalMgr() { } ~AchievementGlobalMgr() { } public: + static AchievementGlobalMgr* instance() + { + static AchievementGlobalMgr* instance = new AchievementGlobalMgr(); + return instance; + } + AchievementCriteriaEntryList const& GetAchievementCriteriaByType(AchievementCriteriaTypes type) const { return m_AchievementCriteriasByType[type]; @@ -389,6 +393,6 @@ class AchievementGlobalMgr AchievementRewardLocales m_achievementRewardLocales; }; -#define sAchievementMgr ACE_Singleton::instance() +#define sAchievementMgr AchievementGlobalMgr::instance() #endif diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.h b/src/server/game/AuctionHouse/AuctionHouseMgr.h index f45fc4100de..0f42a5833a2 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.h +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.h @@ -19,8 +19,6 @@ #ifndef _AUCTION_HOUSE_MGR_H #define _AUCTION_HOUSE_MGR_H -#include - #include "Common.h" #include "DatabaseEnv.h" #include "DBCStructure.h" @@ -137,13 +135,16 @@ class AuctionHouseObject class AuctionHouseMgr { - friend class ACE_Singleton; - private: AuctionHouseMgr(); ~AuctionHouseMgr(); public: + static AuctionHouseMgr* instance() + { + static AuctionHouseMgr* instance = new AuctionHouseMgr(); + return instance; + } typedef std::unordered_map ItemMap; @@ -193,6 +194,6 @@ class AuctionHouseMgr ItemMap mAitems; }; -#define sAuctionMgr ACE_Singleton::instance() +#define sAuctionMgr AuctionHouseMgr::instance() #endif diff --git a/src/server/game/Battlefield/BattlefieldMgr.h b/src/server/game/Battlefield/BattlefieldMgr.h index bb8a076d5d0..9b51fd7710e 100644 --- a/src/server/game/Battlefield/BattlefieldMgr.h +++ b/src/server/game/Battlefield/BattlefieldMgr.h @@ -19,7 +19,6 @@ #define BATTLEFIELD_MGR_H_ #include "Battlefield.h" -#include class Player; class ZoneScript; @@ -28,11 +27,12 @@ class ZoneScript; class BattlefieldMgr { public: - // ctor - BattlefieldMgr(); - // dtor - ~BattlefieldMgr(); - + static BattlefieldMgr* instance() + { + static BattlefieldMgr* instance = new BattlefieldMgr(); + return instance; + } + // create battlefield events void InitBattlefield(); @@ -52,6 +52,9 @@ class BattlefieldMgr void Update(uint32 diff); private: + BattlefieldMgr(); + ~BattlefieldMgr(); + typedef std::vector BattlefieldSet; typedef std::map BattlefieldMap; // contains all initiated battlefield events @@ -64,6 +67,6 @@ class BattlefieldMgr uint32 _updateTimer; }; -#define sBattlefieldMgr ACE_Singleton::instance() +#define sBattlefieldMgr BattlefieldMgr::instance() #endif // BATTLEFIELD_MGR_H_ diff --git a/src/server/game/Battlegrounds/ArenaTeam.h b/src/server/game/Battlegrounds/ArenaTeam.h index cd9e2be4318..85372c35daa 100644 --- a/src/server/game/Battlegrounds/ArenaTeam.h +++ b/src/server/game/Battlegrounds/ArenaTeam.h @@ -20,7 +20,6 @@ #define TRINITYCORE_ARENATEAM_H #include "QueryResult.h" -#include #include #include diff --git a/src/server/game/Battlegrounds/ArenaTeamMgr.h b/src/server/game/Battlegrounds/ArenaTeamMgr.h index 946824fb656..9a4c1184133 100644 --- a/src/server/game/Battlegrounds/ArenaTeamMgr.h +++ b/src/server/game/Battlegrounds/ArenaTeamMgr.h @@ -22,11 +22,17 @@ class ArenaTeamMgr { - friend class ACE_Singleton; +private: ArenaTeamMgr(); ~ArenaTeamMgr(); public: + static ArenaTeamMgr* instance() + { + static ArenaTeamMgr* instance = new ArenaTeamMgr(); + return instance; + } + typedef std::unordered_map ArenaTeamContainer; ArenaTeam* GetArenaTeamById(uint32 arenaTeamId) const; @@ -50,6 +56,6 @@ protected: ArenaTeamContainer ArenaTeamStore; }; -#define sArenaTeamMgr ACE_Singleton::instance() +#define sArenaTeamMgr ArenaTeamMgr::instance() #endif diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.h b/src/server/game/Battlegrounds/BattlegroundMgr.h index 786e664c3f3..046e2588ad3 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.h +++ b/src/server/game/Battlegrounds/BattlegroundMgr.h @@ -23,7 +23,6 @@ #include "DBCEnums.h" #include "Battleground.h" #include "BattlegroundQueue.h" -#include typedef std::map BattlegroundContainer; typedef std::set BattlegroundClientIdsContainer; @@ -64,13 +63,17 @@ struct BattlegroundData class BattlegroundMgr { - friend class ACE_Singleton; - private: BattlegroundMgr(); ~BattlegroundMgr(); public: + static BattlegroundMgr* instance() + { + static BattlegroundMgr* instance = new BattlegroundMgr(); + return instance; + } + void Update(uint32 diff); /* Packet Building */ @@ -158,5 +161,5 @@ class BattlegroundMgr BattleMastersMap mBattleMastersMap; }; -#define sBattlegroundMgr ACE_Singleton::instance() +#define sBattlegroundMgr BattlegroundMgr::instance() #endif diff --git a/src/server/game/Calendar/CalendarMgr.h b/src/server/game/Calendar/CalendarMgr.h index 8f44b013e5c..9c7882fe4b7 100644 --- a/src/server/game/Calendar/CalendarMgr.h +++ b/src/server/game/Calendar/CalendarMgr.h @@ -18,7 +18,6 @@ #ifndef TRINITY_CALENDARMGR_H #define TRINITY_CALENDARMGR_H -#include #include "Common.h" #include "DatabaseEnv.h" #include "WorldPacket.h" @@ -268,8 +267,6 @@ typedef std::map CalendarEventInvite class CalendarMgr { - friend class ACE_Singleton; - private: CalendarMgr(); ~CalendarMgr(); @@ -283,6 +280,12 @@ class CalendarMgr uint64 _maxInviteId; public: + static CalendarMgr* instance() + { + static CalendarMgr* instance = new CalendarMgr(); + return instance; + } + void LoadFromDB(); CalendarEvent* GetEvent(uint64 eventId) const; @@ -329,6 +332,6 @@ class CalendarMgr void SendPacketToAllEventRelatives(WorldPacket packet, CalendarEvent const& calendarEvent); }; -#define sCalendarMgr ACE_Singleton::instance() +#define sCalendarMgr CalendarMgr::instance() #endif diff --git a/src/server/game/Chat/Channels/ChannelMgr.cpp b/src/server/game/Chat/Channels/ChannelMgr.cpp index 0975a690889..00824ae2056 100644 --- a/src/server/game/Chat/Channels/ChannelMgr.cpp +++ b/src/server/game/Chat/Channels/ChannelMgr.cpp @@ -29,13 +29,13 @@ ChannelMgr::~ChannelMgr() ChannelMgr* ChannelMgr::forTeam(uint32 team) { if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHANNEL)) - return ACE_Singleton::instance(); // cross-faction + return AllianceChannelMgr::instance(); // cross-faction if (team == ALLIANCE) - return ACE_Singleton::instance(); + return AllianceChannelMgr::instance(); if (team == HORDE) - return ACE_Singleton::instance(); + return HordeChannelMgr::instance(); return NULL; } diff --git a/src/server/game/Chat/Channels/ChannelMgr.h b/src/server/game/Chat/Channels/ChannelMgr.h index 603eb52f589..0fd5cdbfe24 100644 --- a/src/server/game/Chat/Channels/ChannelMgr.h +++ b/src/server/game/Chat/Channels/ChannelMgr.h @@ -20,7 +20,6 @@ #include "Common.h" #include "Channel.h" -#include #include #include @@ -31,12 +30,17 @@ class ChannelMgr { typedef std::map ChannelMap; - public: - ChannelMgr() : team(0) - { } - + protected: + ChannelMgr() : team(0) { } ~ChannelMgr(); + public: + static ChannelMgr* instance() + { + static ChannelMgr* instance = new ChannelMgr(); + return instance; + } + static ChannelMgr * forTeam(uint32 team); void setTeam(uint32 newTeam) { team = newTeam; } diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h index 876b922d243..a78434776e0 100644 --- a/src/server/game/Conditions/ConditionMgr.h +++ b/src/server/game/Conditions/ConditionMgr.h @@ -21,7 +21,6 @@ #include "Define.h" #include "Errors.h" -#include #include #include @@ -223,13 +222,18 @@ typedef std::map ConditionReferenceContainer;//only used class ConditionMgr { - friend class ACE_Singleton; - private: ConditionMgr(); ~ConditionMgr(); public: + + static ConditionMgr* instance() + { + static ConditionMgr* instance = new ConditionMgr(); + return instance; + } + void LoadConditions(bool isReload = false); bool isConditionTypeValid(Condition* cond); ConditionList GetConditionReferences(uint32 refId); @@ -265,6 +269,6 @@ class ConditionMgr SmartEventConditionContainer SmartEventConditionStore; }; -#define sConditionMgr ACE_Singleton::instance() +#define sConditionMgr ConditionMgr::instance() #endif diff --git a/src/server/game/DataStores/DBCStructure.h b/src/server/game/DataStores/DBCStructure.h index 5d6c8c7aa89..ec9d2dafbd2 100644 --- a/src/server/game/DataStores/DBCStructure.h +++ b/src/server/game/DataStores/DBCStructure.h @@ -535,7 +535,7 @@ struct AreaTableEntry { if (mapid == 609) return true; - return (flags & AREA_FLAG_SANCTUARY); + return (flags & AREA_FLAG_SANCTUARY) != 0; } }; @@ -1367,7 +1367,7 @@ struct MapEntry return MapID == 0 || MapID == 1 || MapID == 530 || MapID == 571; } - bool IsDynamicDifficultyMap() const { return Flags & MAP_FLAG_DYNAMIC_DIFFICULTY; } + bool IsDynamicDifficultyMap() const { return (Flags & MAP_FLAG_DYNAMIC_DIFFICULTY) != 0; } }; struct MapDifficultyEntry @@ -2047,12 +2047,12 @@ struct VehicleSeatEntry uint32 m_flagsB; // 45 // 46-57 added in 3.1, floats mostly - bool CanEnterOrExit() const { return m_flags & VEHICLE_SEAT_FLAG_CAN_ENTER_OR_EXIT; } - bool CanSwitchFromSeat() const { return m_flags & VEHICLE_SEAT_FLAG_CAN_SWITCH; } + bool CanEnterOrExit() const { return (m_flags & VEHICLE_SEAT_FLAG_CAN_ENTER_OR_EXIT) != 0; } + bool CanSwitchFromSeat() const { return (m_flags & VEHICLE_SEAT_FLAG_CAN_SWITCH) != 0; } bool IsUsableByOverride() const { return (m_flags & (VEHICLE_SEAT_FLAG_UNCONTROLLED | VEHICLE_SEAT_FLAG_UNK18) || (m_flagsB & (VEHICLE_SEAT_FLAG_B_USABLE_FORCED | VEHICLE_SEAT_FLAG_B_USABLE_FORCED_2 | VEHICLE_SEAT_FLAG_B_USABLE_FORCED_3 | VEHICLE_SEAT_FLAG_B_USABLE_FORCED_4))); } - bool IsEjectable() const { return m_flagsB & VEHICLE_SEAT_FLAG_B_EJECTABLE; } + bool IsEjectable() const { return (m_flagsB & VEHICLE_SEAT_FLAG_B_EJECTABLE) != 0; } }; struct WMOAreaTableEntry diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h index 2c31fe37d4d..03ac5254057 100644 --- a/src/server/game/DungeonFinding/LFGMgr.h +++ b/src/server/game/DungeonFinding/LFGMgr.h @@ -18,7 +18,6 @@ #ifndef _LFGMGR_H #define _LFGMGR_H -#include #include "DBCStructure.h" #include "Field.h" #include "LFG.h" @@ -292,13 +291,17 @@ struct LFGDungeonData class LFGMgr { - friend class ACE_Singleton; - private: LFGMgr(); ~LFGMgr(); public: + static LFGMgr* instance() + { + static LFGMgr* instance = new LFGMgr(); + return instance; + } + // Functions used outside lfg namespace void Update(uint32 diff); @@ -466,5 +469,5 @@ class LFGMgr } // namespace lfg -#define sLFGMgr ACE_Singleton::instance() +#define sLFGMgr lfg::LFGMgr::instance() #endif diff --git a/src/server/game/Entities/Creature/CreatureGroups.h b/src/server/game/Entities/Creature/CreatureGroups.h index b790853f5e1..29832e4ff76 100644 --- a/src/server/game/Entities/Creature/CreatureGroups.h +++ b/src/server/game/Entities/Creature/CreatureGroups.h @@ -40,10 +40,17 @@ typedef std::unordered_map CreatureGro class FormationMgr { - friend class ACE_Singleton; - public: + private: FormationMgr() { } ~FormationMgr(); + + public: + static FormationMgr* instance() + { + static FormationMgr* instance = new FormationMgr(); + return instance; + } + void AddCreatureToGroup(uint32 group_id, Creature* creature); void RemoveCreatureFromGroup(CreatureGroup* group, Creature* creature); void LoadCreatureFormations(); @@ -78,6 +85,6 @@ class CreatureGroup void MemberAttackStart(Creature* member, Unit* target); }; -#define sFormationMgr ACE_Singleton::instance() +#define sFormationMgr FormationMgr::instance() #endif diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index 4573b85c7f3..e041e063080 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -310,7 +310,7 @@ void Item::UpdateDuration(Player* owner, uint32 diff) void Item::SaveToDB(SQLTransaction& trans) { - bool isInTransaction = !(trans.null()); + bool isInTransaction = !trans; if (!isInTransaction) trans = CharacterDatabase.BeginTransaction(); @@ -1129,7 +1129,7 @@ void Item::SaveRefundDataToDB() void Item::DeleteRefundDataFromDB(SQLTransaction* trans) { - if (trans && !trans->null()) + if (trans) { PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_REFUND_INSTANCE); stmt->setUInt32(0, GetGUIDLow()); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 9733c0f2b52..f2823cc1435 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -7326,7 +7326,7 @@ void Player::ModifyHonorPoints(int32 value, SQLTransaction* trans /*=NULL*/) newValue = 0; SetHonorPoints(uint32(newValue)); - if (trans && !trans->null()) + if (trans && !trans) { PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_HONOR_POINTS); stmt->setUInt32(0, newValue); @@ -7342,7 +7342,7 @@ void Player::ModifyArenaPoints(int32 value, SQLTransaction* trans /*=NULL*/) newValue = 0; SetArenaPoints(uint32(newValue)); - if (trans && !trans->null()) + if (trans && !trans) { PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_ARENA_POINTS); stmt->setUInt32(0, newValue); @@ -19769,7 +19769,7 @@ void Player::_SaveMail(SQLTransaction& trans) void Player::_SaveQuestStatus(SQLTransaction& trans) { - bool isTransaction = !trans.null(); + bool isTransaction = !trans; if (!isTransaction) trans = CharacterDatabase.BeginTransaction(); diff --git a/src/server/game/Entities/Player/SocialMgr.h b/src/server/game/Entities/Player/SocialMgr.h index 910c9164738..68c25fbf648 100644 --- a/src/server/game/Entities/Player/SocialMgr.h +++ b/src/server/game/Entities/Player/SocialMgr.h @@ -19,7 +19,6 @@ #ifndef __TRINITY_SOCIALMGR_H #define __TRINITY_SOCIALMGR_H -#include #include "DatabaseEnv.h" #include "Common.h" @@ -123,13 +122,17 @@ class PlayerSocial class SocialMgr { - friend class ACE_Singleton; - private: SocialMgr(); ~SocialMgr(); public: + static SocialMgr* instance() + { + static SocialMgr* instance = new SocialMgr(); + return instance; + } + // Misc void RemovePlayerSocial(uint32 guid) { m_socialMap.erase(guid); } @@ -144,5 +147,5 @@ class SocialMgr SocialMap m_socialMap; }; -#define sSocialMgr ACE_Singleton::instance() +#define sSocialMgr SocialMgr::instance() #endif diff --git a/src/server/game/Events/GameEventMgr.h b/src/server/game/Events/GameEventMgr.h index df062c6f660..94beb9912d5 100644 --- a/src/server/game/Events/GameEventMgr.h +++ b/src/server/game/Events/GameEventMgr.h @@ -22,7 +22,6 @@ #include "Common.h" #include "SharedDefines.h" #include "Define.h" -#include #define max_ge_check_delay DAY // 1 day in seconds @@ -95,13 +94,17 @@ class Quest; class GameEventMgr { - friend class ACE_Singleton; - private: GameEventMgr(); ~GameEventMgr() { }; public: + static GameEventMgr* instance() + { + static GameEventMgr* instance = new GameEventMgr(); + return instance; + } + typedef std::set ActiveEvents; typedef std::vector GameEventDataMap; ActiveEvents const& GetActiveEventList() const { return m_ActiveEvents; } @@ -180,7 +183,7 @@ class GameEventMgr GameEventGuidMap mGameEventGameobjectGuids; }; -#define sGameEventMgr ACE_Singleton::instance() +#define sGameEventMgr GameEventMgr::instance() bool IsHolidayActive(HolidayIds id); bool IsEventActive(uint16 event_id); diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index ba5940d7e12..20941901731 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -35,7 +35,6 @@ #include "Map.h" #include "ObjectAccessor.h" #include "ObjectDefines.h" -#include #include "VehicleDefines.h" #include #include @@ -687,13 +686,18 @@ class PlayerDumpReader; class ObjectMgr { friend class PlayerDumpReader; - friend class ACE_Singleton; private: ObjectMgr(); ~ObjectMgr(); public: + static ObjectMgr* instance() + { + static ObjectMgr* instance = new ObjectMgr(); + return instance; + } + typedef std::unordered_map ItemMap; typedef std::unordered_map QuestMap; @@ -1442,6 +1446,6 @@ class ObjectMgr std::set _transportMaps; // Helper container storing map ids that are for transports only, loaded from gameobject_template }; -#define sObjectMgr ACE_Singleton::instance() +#define sObjectMgr ObjectMgr::instance() #endif diff --git a/src/server/game/Groups/GroupMgr.h b/src/server/game/Groups/GroupMgr.h index a805b7514da..4bf440c881e 100644 --- a/src/server/game/Groups/GroupMgr.h +++ b/src/server/game/Groups/GroupMgr.h @@ -22,12 +22,17 @@ class GroupMgr { - friend class ACE_Singleton; private: GroupMgr(); ~GroupMgr(); public: + static GroupMgr* instance() + { + static GroupMgr* instance = new GroupMgr(); + return instance; + } + typedef std::map GroupContainer; typedef std::vector GroupDbContainer; @@ -53,6 +58,6 @@ protected: GroupDbContainer GroupDbStore; }; -#define sGroupMgr ACE_Singleton::instance() +#define sGroupMgr GroupMgr::instance() #endif diff --git a/src/server/game/Guilds/GuildMgr.h b/src/server/game/Guilds/GuildMgr.h index e8e6acb1bf0..032a8864e3e 100644 --- a/src/server/game/Guilds/GuildMgr.h +++ b/src/server/game/Guilds/GuildMgr.h @@ -22,13 +22,17 @@ class GuildMgr { - friend class ACE_Singleton; - private: GuildMgr(); ~GuildMgr(); public: + static GuildMgr* instance() + { + static GuildMgr* instance = new GuildMgr(); + return instance; + } + Guild* GetGuildByLeader(uint64 guid) const; Guild* GetGuildById(uint32 guildId) const; Guild* GetGuildByName(std::string const& guildName) const; @@ -48,6 +52,6 @@ protected: GuildContainer GuildStore; }; -#define sGuildMgr ACE_Singleton::instance() +#define sGuildMgr GuildMgr::instance() #endif diff --git a/src/server/game/Handlers/AddonHandler.cpp b/src/server/game/Handlers/AddonHandler.cpp index 806cbd1c7fc..8a00ddc22f4 100644 --- a/src/server/game/Handlers/AddonHandler.cpp +++ b/src/server/game/Handlers/AddonHandler.cpp @@ -22,10 +22,6 @@ #include "Opcodes.h" #include "Log.h" -AddonHandler::AddonHandler() { } - -AddonHandler::~AddonHandler() { } - bool AddonHandler::BuildAddonPacket(WorldPacket* source, WorldPacket* target) { ByteBuffer AddOnPacked; diff --git a/src/server/game/Handlers/AddonHandler.h b/src/server/game/Handlers/AddonHandler.h index 97a541753d0..31bbfa01900 100644 --- a/src/server/game/Handlers/AddonHandler.h +++ b/src/server/game/Handlers/AddonHandler.h @@ -21,20 +21,23 @@ #include "Common.h" #include "Config.h" -#include #include "WorldPacket.h" class AddonHandler { - /* Construction */ - friend class ACE_Singleton; - AddonHandler(); - public: - ~AddonHandler(); - //build addon packet + static AddonHandler* instance() + { + static AddonHandler* instance = new AddonHandler(); + return instance; + } + bool BuildAddonPacket(WorldPacket* Source, WorldPacket* Target); + + private: + AddonHandler() { } + ~AddonHandler() { } }; -#define sAddOnHandler ACE_Singleton::instance() +#define sAddOnHandler AddonHandler::instance() #endif diff --git a/src/server/game/Maps/MapManager.h b/src/server/game/Maps/MapManager.h index 91becb88dfe..990d5e80c1a 100644 --- a/src/server/game/Maps/MapManager.h +++ b/src/server/game/Maps/MapManager.h @@ -24,18 +24,18 @@ #include "GridStates.h" #include "MapUpdater.h" -#include -#include - - class Transport; struct TransportCreatureProto; class MapManager { - friend class ACE_Singleton; - public: + static MapManager* instance() + { + static MapManager* instance = new MapManager(); + return instance; + } + Map* CreateBaseMap(uint32 mapId); Map* FindBaseNonInstanceMap(uint32 mapId) const; Map* CreateMap(uint32 mapId, Player* player); @@ -150,5 +150,5 @@ class MapManager uint32 _nextInstanceId; MapUpdater m_updater; }; -#define sMapMgr ACE_Singleton::instance() +#define sMapMgr MapManager::instance() #endif diff --git a/src/server/game/Maps/TransportMgr.h b/src/server/game/Maps/TransportMgr.h index 5da856b185c..6ebc6316710 100644 --- a/src/server/game/Maps/TransportMgr.h +++ b/src/server/game/Maps/TransportMgr.h @@ -18,7 +18,6 @@ #ifndef TRANSPORTMGR_H #define TRANSPORTMGR_H -#include #include #include "Spline.h" #include "DBCStores.h" @@ -96,10 +95,15 @@ typedef std::map TransportAnimationContainer; class TransportMgr { - friend class ACE_Singleton; friend void LoadDBCStores(std::string const&); public: + static TransportMgr* instance() + { + static TransportMgr* instance = new TransportMgr(); + return instance; + } + void Unload(); void LoadTransportTemplates(); @@ -155,6 +159,6 @@ class TransportMgr TransportAnimationContainer _transportAnimations; }; -#define sTransportMgr ACE_Singleton::instance() +#define sTransportMgr TransportMgr::instance() #endif // TRANSPORTMGR_H diff --git a/src/server/game/Movement/MovementGenerator.h b/src/server/game/Movement/MovementGenerator.h index 5c74bef8d8c..12116b5505d 100755 --- a/src/server/game/Movement/MovementGenerator.h +++ b/src/server/game/Movement/MovementGenerator.h @@ -20,7 +20,6 @@ #define TRINITY_MOVEMENTGENERATOR_H #include "Define.h" -#include #include "ObjectRegistry.h" #include "FactoryHolder.h" #include "Common.h" diff --git a/src/server/game/Movement/Waypoints/WaypointManager.h b/src/server/game/Movement/Waypoints/WaypointManager.h index bafc6322e71..b12396293aa 100644 --- a/src/server/game/Movement/Waypoints/WaypointManager.h +++ b/src/server/game/Movement/Waypoints/WaypointManager.h @@ -19,8 +19,6 @@ #ifndef TRINITY_WAYPOINTMANAGER_H #define TRINITY_WAYPOINTMANAGER_H -#include -#include #include struct WaypointData @@ -38,9 +36,13 @@ typedef std::unordered_map WaypointPathContainer; class WaypointMgr { - friend class ACE_Singleton; - public: + static WaypointMgr* instance() + { + static WaypointMgr* instance = new WaypointMgr(); + return instance; + } + // Attempts to reload a single path from database void ReloadPath(uint32 id); @@ -58,13 +60,12 @@ class WaypointMgr } private: - // Only allow instantiation from ACE_Singleton WaypointMgr(); ~WaypointMgr(); WaypointPathContainer _waypointStore; }; -#define sWaypointMgr ACE_Singleton::instance() +#define sWaypointMgr WaypointMgr::instance() #endif diff --git a/src/server/game/OutdoorPvP/OutdoorPvPMgr.h b/src/server/game/OutdoorPvP/OutdoorPvPMgr.h index 54ea2f3ba1d..ab1908e273d 100644 --- a/src/server/game/OutdoorPvP/OutdoorPvPMgr.h +++ b/src/server/game/OutdoorPvP/OutdoorPvPMgr.h @@ -21,7 +21,6 @@ #define OUTDOORPVP_OBJECTIVE_UPDATE_INTERVAL 1000 #include "OutdoorPvP.h" -#include class Player; class GameObject; @@ -38,13 +37,17 @@ struct OutdoorPvPData // class to handle player enter / leave / areatrigger / GO use events class OutdoorPvPMgr { - friend class ACE_Singleton; - private: OutdoorPvPMgr(); ~OutdoorPvPMgr() { }; public: + static OutdoorPvPMgr* instance() + { + static OutdoorPvPMgr* instance = new OutdoorPvPMgr(); + return instance; + } + // create outdoor pvp events void InitOutdoorPvP(); @@ -101,6 +104,6 @@ class OutdoorPvPMgr uint32 m_UpdateTimer; }; -#define sOutdoorPvPMgr ACE_Singleton::instance() +#define sOutdoorPvPMgr OutdoorPvPMgr::instance() #endif /*OUTDOOR_PVP_MGR_H_*/ diff --git a/src/server/game/Pools/PoolMgr.h b/src/server/game/Pools/PoolMgr.h index 2bc404b3a36..0a3f52b55f6 100644 --- a/src/server/game/Pools/PoolMgr.h +++ b/src/server/game/Pools/PoolMgr.h @@ -20,7 +20,6 @@ #define TRINITY_POOLHANDLER_H #include "Define.h" -#include #include "Creature.h" #include "GameObject.h" #include "QuestDef.h" @@ -104,13 +103,17 @@ typedef std::pair class PoolMgr { - friend class ACE_Singleton; - private: PoolMgr(); ~PoolMgr() { }; public: + static PoolMgr* instance() + { + static PoolMgr* instance = new PoolMgr(); + return instance; + } + void LoadFromDB(); void LoadQuestPools(); void SaveQuestsToDB(); @@ -164,7 +167,7 @@ class PoolMgr ActivePoolData mSpawnedData; }; -#define sPoolMgr ACE_Singleton::instance() +#define sPoolMgr PoolMgr::instance() // Method that tell if the creature is part of a pool and return the pool id if yes template<> diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index ee95759c72e..4f6027bedec 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -20,7 +20,6 @@ #define SC_SCRIPTMGR_H #include "Common.h" -#include #include #include "DBCStores.h" @@ -869,20 +868,23 @@ class GroupScript : public ScriptObject }; // Placed here due to ScriptRegistry::AddScript dependency. -#define sScriptMgr ACE_Singleton::instance() +#define sScriptMgr ScriptMgr::instance() // Manages registration, loading, and execution of scripts. class ScriptMgr { - friend class ACE_Singleton; friend class ScriptObject; private: - ScriptMgr(); virtual ~ScriptMgr(); public: /* Initialization */ + static ScriptMgr* instance() + { + static ScriptMgr* instance = new ScriptMgr(); + return instance; + } void Initialize(); void LoadDatabase(); diff --git a/src/server/game/Scripting/ScriptSystem.h b/src/server/game/Scripting/ScriptSystem.h index 11120f3031b..636343838c1 100644 --- a/src/server/game/Scripting/ScriptSystem.h +++ b/src/server/game/Scripting/ScriptSystem.h @@ -6,7 +6,6 @@ #define SC_SYSTEM_H #include "ScriptMgr.h" -#include #define TEXT_SOURCE_RANGE -1000000 //the amount of entries each text source has available @@ -48,11 +47,17 @@ typedef std::vector ScriptPointVector; class SystemMgr { - friend class ACE_Singleton; + private: SystemMgr() { } ~SystemMgr() { } public: + static SystemMgr* instance() + { + static SystemMgr* instance = new SystemMgr(); + return instance; + } + typedef std::unordered_map PointMoveMap; //Database @@ -75,6 +80,6 @@ class SystemMgr static ScriptPointVector const _empty; }; -#define sScriptSystemMgr ACE_Singleton::instance() +#define sScriptSystemMgr SystemMgr::instance() #endif diff --git a/src/server/game/Server/Protocol/PacketLog.h b/src/server/game/Server/Protocol/PacketLog.h index 9c60655e627..71d87bf45ae 100644 --- a/src/server/game/Server/Protocol/PacketLog.h +++ b/src/server/game/Server/Protocol/PacketLog.h @@ -19,7 +19,6 @@ #define TRINITY_PACKETLOG_H #include "Common.h" -#include enum Direction { @@ -31,13 +30,17 @@ class WorldPacket; class PacketLog { - friend class ACE_Singleton; - private: PacketLog(); ~PacketLog(); public: + static PacketLog* instance() + { + static PacketLog* instance = new PacketLog(); + return instance; + } + void Initialize(); bool CanLogPacket() const { return (_file != NULL); } void LogPacket(WorldPacket const& packet, Direction direction); @@ -46,5 +49,5 @@ class PacketLog FILE* _file; }; -#define sPacketLog ACE_Singleton::instance() +#define sPacketLog PacketLog::instance() #endif diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 0c391993c0b..7fbc398a4da 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -780,7 +780,7 @@ void WorldSession::SaveTutorialsData(SQLTransaction &trans) PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_HAS_TUTORIALS); stmt->setUInt32(0, GetAccountId()); - bool hasTutorials = !CharacterDatabase.Query(stmt).null(); + bool hasTutorials = !CharacterDatabase.Query(stmt); // Modify data in DB stmt = CharacterDatabase.GetPreparedStatement(hasTutorials ? CHAR_UPD_TUTORIALS : CHAR_INS_TUTORIALS); for (uint8 i = 0; i < MAX_ACCOUNT_TUTORIAL_VALUES; ++i) diff --git a/src/server/game/Server/WorldSocketMgr.h b/src/server/game/Server/WorldSocketMgr.h index fb8ddb42b9e..2c91a164ff9 100644 --- a/src/server/game/Server/WorldSocketMgr.h +++ b/src/server/game/Server/WorldSocketMgr.h @@ -26,7 +26,6 @@ #define __WORLDSOCKETMGR_H #include -#include #include class WorldSocket; @@ -36,9 +35,14 @@ class ACE_Event_Handler; /// Manages all sockets connected to peers and network threads class WorldSocketMgr { -public: friend class WorldSocket; - friend class ACE_Singleton; + +public: + static WorldSocketMgr* instance() + { + static WorldSocketMgr* instance = new WorldSocketMgr(); + return instance; + } /// Start network, listen at address:port . int StartNetwork(ACE_UINT16 port, const char* address); @@ -68,7 +72,7 @@ private: class WorldSocketAcceptor* m_Acceptor; }; -#define sWorldSocketMgr ACE_Singleton::instance() +#define sWorldSocketMgr WorldSocketMgr::instance() #endif /// @} diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h index 757bd813613..53b4cef73e8 100644 --- a/src/server/game/Spells/SpellMgr.h +++ b/src/server/game/Spells/SpellMgr.h @@ -21,8 +21,6 @@ // For static or at-server-startup loaded spell data -#include - #include "Define.h" #include "DBCStructure.h" #include "SharedDefines.h" @@ -603,7 +601,6 @@ bool IsDiminishingReturnsGroupDurationLimited(DiminishingGroup group); class SpellMgr { - friend class ACE_Singleton; // Constructors private: SpellMgr(); @@ -611,6 +608,13 @@ class SpellMgr // Accessors (const or static functions) public: + static SpellMgr* instance() + { + static SpellMgr* instance = new SpellMgr(); + + return instance; + } + // Spell correctness for client using static bool IsSpellValid(SpellInfo const* spellInfo, Player* player = NULL, bool msg = true); @@ -766,6 +770,6 @@ class SpellMgr SpellInfoMap mSpellInfoMap; }; -#define sSpellMgr ACE_Singleton::instance() +#define sSpellMgr SpellMgr::instance() #endif diff --git a/src/server/game/Texts/CreatureTextMgr.h b/src/server/game/Texts/CreatureTextMgr.h index ab5b9f59032..f8c499f7ce6 100644 --- a/src/server/game/Texts/CreatureTextMgr.h +++ b/src/server/game/Texts/CreatureTextMgr.h @@ -82,11 +82,17 @@ typedef std::unordered_map CreatureTextRepeatMa class CreatureTextMgr { - friend class ACE_Singleton; - CreatureTextMgr() { }; + private: + CreatureTextMgr() { }; + ~CreatureTextMgr() { }; public: - ~CreatureTextMgr() { }; + static CreatureTextMgr* instance() + { + static CreatureTextMgr* instance = new CreatureTextMgr(); + return instance; + } + void LoadCreatureTexts(); void LoadCreatureTextLocales(); CreatureTextMap const& GetTextMap() const { return mTextMap; } @@ -113,7 +119,7 @@ class CreatureTextMgr LocaleCreatureTextMap mLocaleTextMap; }; -#define sCreatureTextMgr ACE_Singleton::instance() +#define sCreatureTextMgr CreatureTextMgr::instance() template class CreatureTextLocalizer diff --git a/src/server/game/Tickets/TicketMgr.h b/src/server/game/Tickets/TicketMgr.h index 5bfe78abbba..5f85ee307ed 100644 --- a/src/server/game/Tickets/TicketMgr.h +++ b/src/server/game/Tickets/TicketMgr.h @@ -19,7 +19,6 @@ #define _TICKETMGR_H #include -#include #include "ObjectMgr.h" @@ -174,13 +173,17 @@ typedef std::map GmTicketList; class TicketMgr { - friend class ACE_Singleton; - private: TicketMgr(); ~TicketMgr(); public: + static TicketMgr* instance() + { + static TicketMgr* instance = new TicketMgr(); + return instance; + } + void LoadTickets(); void LoadSurveys(); @@ -246,6 +249,6 @@ protected: uint64 _lastChange; }; -#define sTicketMgr ACE_Singleton::instance() +#define sTicketMgr TicketMgr::instance() #endif // _TICKETMGR_H diff --git a/src/server/game/Warden/WardenCheckMgr.h b/src/server/game/Warden/WardenCheckMgr.h index 8f2fa37400d..1108c9a6521 100644 --- a/src/server/game/Warden/WardenCheckMgr.h +++ b/src/server/game/Warden/WardenCheckMgr.h @@ -48,11 +48,17 @@ struct WardenCheckResult class WardenCheckMgr { - friend class ACE_Singleton; - WardenCheckMgr(); - ~WardenCheckMgr(); + private: + WardenCheckMgr(); + ~WardenCheckMgr(); public: + static WardenCheckMgr* instance() + { + static WardenCheckMgr* instance = new WardenCheckMgr(); + return instance; + } + // We have a linear key without any gaps, so we use vector for fast access typedef std::vector CheckContainer; typedef std::map CheckResultContainer; @@ -73,6 +79,6 @@ class WardenCheckMgr CheckResultContainer CheckResultStore; }; -#define sWardenCheckMgr ACE_Singleton::instance() +#define sWardenCheckMgr WardenCheckMgr::instance() #endif diff --git a/src/server/game/Weather/WeatherMgr.cpp b/src/server/game/Weather/WeatherMgr.cpp index 5cf5cde75fd..5274dcd358d 100644 --- a/src/server/game/Weather/WeatherMgr.cpp +++ b/src/server/game/Weather/WeatherMgr.cpp @@ -34,7 +34,7 @@ namespace WeatherMgr namespace { - typedef std::unordered_map > WeatherMap; + typedef std::unordered_map > WeatherMap; typedef std::unordered_map WeatherZoneMap; WeatherMap m_weathers; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 234a366b08e..4a46412dff7 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -668,7 +668,7 @@ void World::LoadConfigSettings(bool reload) m_bool_configs[CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP] = sConfigMgr->GetBoolDefault("AllowTwoSide.Interaction.Group", false); m_bool_configs[CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD] = sConfigMgr->GetBoolDefault("AllowTwoSide.Interaction.Guild", false); m_bool_configs[CONFIG_ALLOW_TWO_SIDE_INTERACTION_AUCTION] = sConfigMgr->GetBoolDefault("AllowTwoSide.Interaction.Auction", false); - m_bool_configs[CONFIG_ALLOW_TWO_SIDE_TRADE] = sConfigMgr->GetBoolDefault("AllowTwoSide.trade", false); + m_bool_configs[CONFIG_ALLOW_TWO_SIDE_TRADE] = sConfigMgr->GetBoolDefault("AllowTwoSide.Trade", false); m_int_configs[CONFIG_STRICT_PLAYER_NAMES] = sConfigMgr->GetIntDefault ("StrictPlayerNames", 0); m_int_configs[CONFIG_STRICT_CHARTER_NAMES] = sConfigMgr->GetIntDefault ("StrictCharterNames", 0); m_int_configs[CONFIG_STRICT_PET_NAMES] = sConfigMgr->GetIntDefault ("StrictPetNames", 0); @@ -1255,8 +1255,6 @@ void World::LoadConfigSettings(bool reload) m_bool_configs[CONFIG_IP_BASED_ACTION_LOGGING] = sConfigMgr->GetBoolDefault("Allow.IP.Based.Action.Logging", false); - m_bool_configs[CONFIG_IP_BASED_LOGIN_LOGGING] = sConfigMgr->GetBoolDefault("Wrong.Password.Login.Logging", false); - // call ScriptMgr if we're reloading the configuration if (reload) sScriptMgr->OnConfigLoad(reload); diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index 4096dd7399a..f9528c793f7 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -25,9 +25,7 @@ #include "Common.h" #include "Timer.h" -#include #include -#include #include "SharedDefines.h" #include "QueryResult.h" #include "Callback.h" @@ -156,7 +154,6 @@ enum WorldBoolConfigs CONFIG_STATS_LIMITS_ENABLE, CONFIG_INSTANCES_RESET_ANNOUNCE, CONFIG_IP_BASED_ACTION_LOGGING, - CONFIG_IP_BASED_LOGIN_LOGGING, BOOL_CONFIG_VALUE_COUNT }; @@ -520,10 +517,13 @@ struct CharacterNameData class World { public: - static ACE_Atomic_Op m_worldLoopCounter; + static World* instance() + { + static World* instance = new World(); + return instance; + } - World(); - ~World(); + static ACE_Atomic_Op m_worldLoopCounter; WorldSession* FindSession(uint32 id) const; void AddSession(WorldSession* s); @@ -758,6 +758,9 @@ class World void ResetRandomBG(); void ResetGuildCap(); private: + World(); + ~World(); + static ACE_Atomic_Op m_stopEvent; static uint8 m_ExitCode; uint32 m_ShutdownTimer; @@ -845,6 +848,6 @@ class World extern uint32 realmID; -#define sWorld ACE_Singleton::instance() +#define sWorld World::instance() #endif /// @} diff --git a/src/server/shared/Cryptography/ARC4.h b/src/server/shared/Cryptography/ARC4.h index 5304b0730a6..11d3d4ba87b 100644 --- a/src/server/shared/Cryptography/ARC4.h +++ b/src/server/shared/Cryptography/ARC4.h @@ -19,8 +19,8 @@ #ifndef _AUTH_SARC4_H #define _AUTH_SARC4_H -#include "Define.h" #include +#include "Define.h" class ARC4 { diff --git a/src/server/shared/Cryptography/BigNumber.h b/src/server/shared/Cryptography/BigNumber.h index 848b3da3e2d..684a25e8801 100644 --- a/src/server/shared/Cryptography/BigNumber.h +++ b/src/server/shared/Cryptography/BigNumber.h @@ -22,7 +22,6 @@ #include #include "Define.h" - struct bignum_st; class BigNumber diff --git a/src/server/shared/Database/DatabaseWorkerPool.h b/src/server/shared/Database/DatabaseWorkerPool.h index e56dcc329cd..4b9e887f341 100644 --- a/src/server/shared/Database/DatabaseWorkerPool.h +++ b/src/server/shared/Database/DatabaseWorkerPool.h @@ -18,8 +18,6 @@ #ifndef _DATABASEWORKERPOOL_H #define _DATABASEWORKERPOOL_H -#include - #include "Common.h" #include "Callback.h" #include "MySQLConnection.h" @@ -51,7 +49,6 @@ class DatabaseWorkerPool /* Activity state */ DatabaseWorkerPool() : _connectionInfo(NULL) { - _messageQueue = new ACE_Message_Queue(8 * 1024 * 1024, 8 * 1024 * 1024); _queue = new ProducerConsumerQueue(); memset(_connectionCount, 0, sizeof(_connectionCount)); _connections.resize(IDX_SIZE); @@ -125,9 +122,7 @@ class DatabaseWorkerPool for (uint8 i = 0; i < _connectionCount[IDX_SYNCH]; ++i) _connections[IDX_SYNCH][i]->Close(); - //! Deletes the ACE_Activation_Queue object and its underlying ACE_Message_Queue delete _queue; - delete _messageQueue; TC_LOG_INFO("sql.driver", "All connections on DatabasePool '%s' closed.", GetDatabaseName()); @@ -410,7 +405,7 @@ class DatabaseWorkerPool //! Will be wrapped in a transaction if valid object is present, otherwise executed standalone. void ExecuteOrAppend(SQLTransaction& trans, PreparedStatement* stmt) { - if (trans.null()) + if (!trans) Execute(stmt); else trans->Append(stmt); @@ -420,7 +415,7 @@ class DatabaseWorkerPool //! Will be wrapped in a transaction if valid object is present, otherwise executed standalone. void ExecuteOrAppend(SQLTransaction& trans, const char* sql) { - if (trans.null()) + if (!trans) Execute(sql); else trans->Append(sql); @@ -517,7 +512,6 @@ class DatabaseWorkerPool IDX_SIZE }; - ACE_Message_Queue* _messageQueue; //! Message Queue used by ACE_Activation_Queue ProducerConsumerQueue* _queue; //! Queue shared by async worker threads. std::vector< std::vector > _connections; uint32 _connectionCount[2]; //! Counter of MySQL connections; diff --git a/src/server/shared/Database/MySQLConnection.h b/src/server/shared/Database/MySQLConnection.h index 3b7efeb5846..61b3b37cbc2 100644 --- a/src/server/shared/Database/MySQLConnection.h +++ b/src/server/shared/Database/MySQLConnection.h @@ -15,8 +15,6 @@ * with this program. If not, see . */ -#include - #include "DatabaseWorkerPool.h" #include "Transaction.h" #include "Util.h" @@ -100,13 +98,13 @@ class MySQLConnection { /// Tries to acquire lock. If lock is acquired by another thread /// the calling parent will just try another connection - return m_Mutex.tryacquire() != -1; + return m_Mutex.try_lock(); } void Unlock() { /// Called by parent databasepool. Will let other threads access this connection - m_Mutex.release(); + m_Mutex.unlock(); } MYSQL* GetHandle() { return m_Mysql; } @@ -131,7 +129,7 @@ class MySQLConnection MYSQL * m_Mysql; //! MySQL Handle. MySQLConnectionInfo& m_connectionInfo; //! Connection info (used for logging) ConnectionFlags m_connectionFlags; //! Connection flags (for preparing relevant statements) - ACE_Thread_Mutex m_Mutex; + std::mutex m_Mutex; MySQLConnection(MySQLConnection const& right) = delete; MySQLConnection& operator=(MySQLConnection const& right) = delete; diff --git a/src/server/shared/Database/QueryResult.h b/src/server/shared/Database/QueryResult.h index 4795fef4a4c..e8c277c03cf 100644 --- a/src/server/shared/Database/QueryResult.h +++ b/src/server/shared/Database/QueryResult.h @@ -19,9 +19,7 @@ #ifndef QUERYRESULT_H #define QUERYRESULT_H -#include "AutoPtr.h" -#include - +#include #include "Field.h" #ifdef _WIN32 @@ -60,7 +58,7 @@ class ResultSet ResultSet& operator=(ResultSet const& right) = delete; }; -typedef Trinity::AutoPtr QueryResult; +typedef std::shared_ptr QueryResult; class PreparedResultSet { @@ -107,7 +105,7 @@ class PreparedResultSet PreparedResultSet& operator=(PreparedResultSet const& right) = delete; }; -typedef Trinity::AutoPtr PreparedQueryResult; +typedef std::shared_ptr PreparedQueryResult; #endif diff --git a/src/server/shared/Database/Transaction.h b/src/server/shared/Database/Transaction.h index cb28f0ad876..c7cbbbbe712 100644 --- a/src/server/shared/Database/Transaction.h +++ b/src/server/shared/Database/Transaction.h @@ -50,7 +50,7 @@ class Transaction bool _cleanedUp; }; -typedef Trinity::AutoPtr SQLTransaction; +typedef std::shared_ptr SQLTransaction; /*! Low level class*/ class TransactionTask : public SQLOperation diff --git a/src/server/shared/Debugging/Errors.cpp b/src/server/shared/Debugging/Errors.cpp index d656dc3fb4a..62e97d56d42 100644 --- a/src/server/shared/Debugging/Errors.cpp +++ b/src/server/shared/Debugging/Errors.cpp @@ -18,17 +18,15 @@ #include "Errors.h" -#include -#include #include +#include namespace Trinity { void Assert(char const* file, int line, char const* function, char const* message) { - ACE_Stack_Trace st; - fprintf(stderr, "\n%s:%i in %s ASSERTION FAILED:\n %s\n%s\n", - file, line, function, message, st.c_str()); + fprintf(stderr, "\n%s:%i in %s ASSERTION FAILED:\n %s\n", + file, line, function, message); *((volatile int*)NULL) = 0; exit(1); } @@ -37,7 +35,8 @@ void Fatal(char const* file, int line, char const* function, char const* message { fprintf(stderr, "\n%s:%i in %s FATAL ERROR:\n %s\n", file, line, function, message); - ACE_OS::sleep(10); + + std::this_thread::sleep_for(std::chrono::seconds(10)); *((volatile int*)NULL) = 0; exit(1); } diff --git a/src/server/shared/Logging/Appender.h b/src/server/shared/Logging/Appender.h index 84d0dc14eca..67213d0ddd0 100644 --- a/src/server/shared/Logging/Appender.h +++ b/src/server/shared/Logging/Appender.h @@ -18,10 +18,10 @@ #ifndef APPENDER_H #define APPENDER_H -#include "Define.h" -#include #include #include +#include +#include "Define.h" // Values assigned have their equivalent in enum ACE_Log_Priority enum LogLevel diff --git a/src/server/shared/Logging/AppenderConsole.h b/src/server/shared/Logging/AppenderConsole.h index 1aaa74e96ec..b8f15b4fa0f 100644 --- a/src/server/shared/Logging/AppenderConsole.h +++ b/src/server/shared/Logging/AppenderConsole.h @@ -18,8 +18,8 @@ #ifndef APPENDERCONSOLE_H #define APPENDERCONSOLE_H -#include "Appender.h" #include +#include "Appender.h" enum ColorTypes { diff --git a/src/server/shared/Logging/AppenderFile.h b/src/server/shared/Logging/AppenderFile.h index 592742c2184..a600c92d152 100644 --- a/src/server/shared/Logging/AppenderFile.h +++ b/src/server/shared/Logging/AppenderFile.h @@ -18,8 +18,8 @@ #ifndef APPENDERFILE_H #define APPENDERFILE_H -#include "Appender.h" #include +#include "Appender.h" class AppenderFile: public Appender { diff --git a/src/server/shared/Threading/Callback.h b/src/server/shared/Threading/Callback.h index a6aa11b3958..5d9dc9a760d 100644 --- a/src/server/shared/Threading/Callback.h +++ b/src/server/shared/Threading/Callback.h @@ -26,10 +26,6 @@ typedef std::promise QueryResultPromise; typedef std::future PreparedQueryResultFuture; typedef std::promise PreparedQueryResultPromise; -/*! A simple template using ACE_Future to manage callbacks from the thread and object that - issued the request. is variable type of parameter that is used as parameter - for the callback function. -*/ #define CALLBACK_STAGE_INVALID uint8(-1) template @@ -210,4 +206,4 @@ class QueryCallback_2 QueryCallback_2& operator=(QueryCallback_2 const& right) = delete; }; -#endif \ No newline at end of file +#endif diff --git a/src/server/shared/Threading/DelayExecutor.cpp b/src/server/shared/Threading/DelayExecutor.cpp index 0db45a8ff8f..ef3c028fd97 100644 --- a/src/server/shared/Threading/DelayExecutor.cpp +++ b/src/server/shared/Threading/DelayExecutor.cpp @@ -1,4 +1,20 @@ -#include +/* +* Copyright (C) 2008-2014 TrinityCore +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at your +* option) any later version. +* +* This program is distributed in the hope that it will be useful, but WITHOUT +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +* more details. +* +* You should have received a copy of the GNU General Public License along +* with this program. If not, see . +*/ + #include #include diff --git a/src/server/shared/Threading/DelayExecutor.h b/src/server/shared/Threading/DelayExecutor.h index 5eaaacdb98b..2a3721263fc 100644 --- a/src/server/shared/Threading/DelayExecutor.h +++ b/src/server/shared/Threading/DelayExecutor.h @@ -8,7 +8,6 @@ class DelayExecutor : protected ACE_Task_Base { public: - DelayExecutor(); virtual ~DelayExecutor(); @@ -25,7 +24,6 @@ class DelayExecutor : protected ACE_Task_Base virtual int svc(); private: - ACE_Activation_Queue queue_; ACE_Method_Request* pre_svc_hook_; ACE_Method_Request* post_svc_hook_; diff --git a/src/server/worldserver/Master.cpp b/src/server/worldserver/Master.cpp index 2a8fcdd431a..41060e37b38 100644 --- a/src/server/worldserver/Master.cpp +++ b/src/server/worldserver/Master.cpp @@ -22,8 +22,6 @@ #include -#include - #include "Common.h" #include "SystemConfig.h" #include "SignalHandler.h" @@ -46,6 +44,7 @@ #include "BigNumber.h" #include "OpenSSLCrypto.h" +#include #ifdef _WIN32 #include "ServiceWin32.h" @@ -58,27 +57,22 @@ extern int m_ServiceStatus; #define PROCESS_HIGH_PRIORITY -15 // [-20, 19], default is 0 #endif -/// Handle worldservers's termination signals -class WorldServerSignalHandler : public Trinity::SignalHandler +boost::asio::io_service _ioService; + +void SignalHandler(const boost::system::error_code& error, int signalNumber) { - public: - virtual void HandleSignal(int sigNum) + if (!error) + { + switch (signalNumber) { - switch (sigNum) - { - case SIGINT: - World::StopNow(RESTART_EXIT_CODE); - break; - case SIGTERM: -#ifdef _WIN32 - case SIGBREAK: - if (m_ServiceStatus != 1) -#endif - World::StopNow(SHUTDOWN_EXIT_CODE); - break; - } + case SIGINT: + case SIGTERM: + _ioService.stop(); + break; } -}; + } +} + void FreezeDetectorThread(uint32 delayTime) { @@ -153,23 +147,12 @@ int Master::Run() ///- Initialize the World sWorld->SetInitialWorldSettings(); - ///- Initialize the signal handlers - WorldServerSignalHandler signalINT, signalTERM; - #ifdef _WIN32 - WorldServerSignalHandler signalBREAK; - #endif /* _WIN32 */ - - ///- Register worldserver's signal handlers - ACE_Sig_Handler handle; - handle.register_handler(SIGINT, &signalINT); - handle.register_handler(SIGTERM, &signalTERM); -#ifdef _WIN32 - handle.register_handler(SIGBREAK, &signalBREAK); -#endif + // Set signal handlers + boost::asio::signal_set signals(_ioService, SIGINT, SIGTERM); + signals.async_wait(SignalHandler); ///- Launch WorldRunnable thread - - std::thread worldThread(WorldThread); + std::thread worldThread(WorldThread, std::ref(_ioService)); std::thread* cliThread = nullptr; @@ -286,6 +269,8 @@ int Master::Run() TC_LOG_INFO("server.worldserver", "%s (worldserver-daemon) ready...", _FULLVERSION); + _ioService.run(); + // when the main thread closes the singletons get unloaded // since worldrunnable uses them, it will crash if unloaded after master worldThread.join(); diff --git a/src/server/worldserver/Master.h b/src/server/worldserver/Master.h index 9ee94a44acb..d2a51b85f4b 100644 --- a/src/server/worldserver/Master.h +++ b/src/server/worldserver/Master.h @@ -29,6 +29,12 @@ class Master { public: + static Master* instance() + { + static Master* instance = new Master(); + return instance; + } + int Run(); private: @@ -38,7 +44,7 @@ class Master void ClearOnlineAccounts(); }; -#define sMaster ACE_Singleton::instance() +#define sMaster Master::instance() #endif diff --git a/src/server/worldserver/WorldThread/WorldRunnable.cpp b/src/server/worldserver/WorldThread/WorldRunnable.cpp index 7722492b5a8..85c3e7a74b9 100644 --- a/src/server/worldserver/WorldThread/WorldRunnable.cpp +++ b/src/server/worldserver/WorldThread/WorldRunnable.cpp @@ -42,7 +42,7 @@ extern int m_ServiceStatus; #endif /// Heartbeat for the World -void WorldThread() +void WorldThread(boost::asio::io_service& ioService) { uint32 realCurrTime = 0; uint32 realPrevTime = getMSTime(); @@ -84,6 +84,8 @@ void WorldThread() #endif } + ioService.stop(); + sScriptMgr->OnShutdown(); sWorld->KickAll(); // save and kick all players diff --git a/src/server/worldserver/WorldThread/WorldRunnable.h b/src/server/worldserver/WorldThread/WorldRunnable.h index 915bd5b580a..3e2c07b8842 100644 --- a/src/server/worldserver/WorldThread/WorldRunnable.h +++ b/src/server/worldserver/WorldThread/WorldRunnable.h @@ -23,7 +23,9 @@ #ifndef __WORLDRUNNABLE_H #define __WORLDRUNNABLE_H -void WorldThread(); +#include + +void WorldThread(boost::asio::io_service& ioService); #endif -- cgit v1.2.3 From b2657a809da7954f88d49bfce78d501382f1f7f7 Mon Sep 17 00:00:00 2001 From: Subv Date: Tue, 1 Jul 2014 20:40:56 -0500 Subject: Fixed the authserver compile --- src/server/shared/Database/DatabaseWorker.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/server/shared/Database') diff --git a/src/server/shared/Database/DatabaseWorker.h b/src/server/shared/Database/DatabaseWorker.h index 9b45318e39f..91aef2c7194 100644 --- a/src/server/shared/Database/DatabaseWorker.h +++ b/src/server/shared/Database/DatabaseWorker.h @@ -18,10 +18,10 @@ #ifndef _WORKERTHREAD_H #define _WORKERTHREAD_H -#include "Define.h" #include "ProducerConsumerQueue.h" class MySQLConnection; +class SQLOperation; class DatabaseWorker { -- cgit v1.2.3 From 87b72f41ca0a0bce6ef8843e3df53578c2e6667d Mon Sep 17 00:00:00 2001 From: Subv Date: Wed, 2 Jul 2014 21:56:40 -0500 Subject: Fixed login and some errors --- src/server/game/Server/WorldSession.cpp | 8 ++++---- src/server/shared/Database/AdhocStatement.cpp | 20 +++++++++----------- src/server/shared/Database/AdhocStatement.h | 6 +++--- src/server/shared/Database/DatabaseWorkerPool.h | 15 ++++++--------- src/server/shared/Database/PreparedStatement.cpp | 22 +++++++++++----------- src/server/shared/Database/PreparedStatement.h | 6 +++--- src/server/shared/Database/QueryHolder.h | 8 +++++--- src/server/shared/Threading/Callback.h | 4 ++-- src/server/worldserver/RemoteAccess/RASession.h | 2 -- 9 files changed, 43 insertions(+), 48 deletions(-) (limited to 'src/server/shared/Database') diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 7fbc398a4da..444c06e41b8 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -1105,7 +1105,7 @@ void WorldSession::ProcessQueryCallbacks() PreparedQueryResult result; //! HandleCharEnumOpcode - if (_charEnumCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready) + if (_charEnumCallback.valid() && _charEnumCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready) { result = _charEnumCallback.get(); HandleCharEnum(result); @@ -1118,7 +1118,7 @@ void WorldSession::ProcessQueryCallbacks() } //! HandlePlayerLoginOpcode - if (_charLoginCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready) + if (_charLoginCallback.valid() && _charLoginCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready) { SQLQueryHolder* param = _charLoginCallback.get(); HandlePlayerLogin((LoginQueryHolder*)param); @@ -1143,7 +1143,7 @@ void WorldSession::ProcessQueryCallbacks() } //- HandleCharAddIgnoreOpcode - if (_addIgnoreCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready) + if (_addIgnoreCallback.valid() && _addIgnoreCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready) { result = _addIgnoreCallback.get(); HandleAddIgnoreOpcodeCallBack(result); @@ -1159,7 +1159,7 @@ void WorldSession::ProcessQueryCallbacks() } //- HandleStablePet - if (_stablePetCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready) + if (_stablePetCallback.valid() && _stablePetCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready) { result = _stablePetCallback.get(); HandleStablePetCallback(result); diff --git a/src/server/shared/Database/AdhocStatement.cpp b/src/server/shared/Database/AdhocStatement.cpp index 65c41823ccb..7fae9173d20 100644 --- a/src/server/shared/Database/AdhocStatement.cpp +++ b/src/server/shared/Database/AdhocStatement.cpp @@ -19,22 +19,20 @@ #include "MySQLConnection.h" /*! Basic, ad-hoc queries. */ -BasicStatementTask::BasicStatementTask(const char* sql) : -m_has_result(false) -{ - m_sql = strdup(sql); -} - -BasicStatementTask::BasicStatementTask(const char* sql, QueryResultPromise& result) : -m_has_result(true), -m_result(std::move(result)) +BasicStatementTask::BasicStatementTask(const char* sql, bool async) : +m_result(nullptr) { m_sql = strdup(sql); + m_has_result = async; // If the operation is async, then there's a result + if (async) + m_result = new QueryResultPromise(); } BasicStatementTask::~BasicStatementTask() { free((void*)m_sql); + if (m_has_result && m_result != nullptr) + delete m_result; } bool BasicStatementTask::Execute() @@ -45,11 +43,11 @@ bool BasicStatementTask::Execute() if (!result || !result->GetRowCount() || !result->NextRow()) { delete result; - m_result.set_value(QueryResult(NULL)); + m_result->set_value(QueryResult(NULL)); return false; } - m_result.set_value(QueryResult(result)); + m_result->set_value(QueryResult(result)); return true; } diff --git a/src/server/shared/Database/AdhocStatement.h b/src/server/shared/Database/AdhocStatement.h index a67caaa160f..40c1dbb7098 100644 --- a/src/server/shared/Database/AdhocStatement.h +++ b/src/server/shared/Database/AdhocStatement.h @@ -28,16 +28,16 @@ typedef std::promise QueryResultPromise; class BasicStatementTask : public SQLOperation { public: - BasicStatementTask(const char* sql); - BasicStatementTask(const char* sql, QueryResultPromise& result); + BasicStatementTask(const char* sql, bool async = false); ~BasicStatementTask(); bool Execute() override; + QueryResultFuture GetFuture() { return m_result->get_future(); } private: const char* m_sql; //- Raw query to be executed bool m_has_result; - QueryResultPromise m_result; + QueryResultPromise* m_result; }; #endif \ No newline at end of file diff --git a/src/server/shared/Database/DatabaseWorkerPool.h b/src/server/shared/Database/DatabaseWorkerPool.h index 4b9e887f341..f0b540022da 100644 --- a/src/server/shared/Database/DatabaseWorkerPool.h +++ b/src/server/shared/Database/DatabaseWorkerPool.h @@ -296,10 +296,9 @@ class DatabaseWorkerPool //! The return value is then processed in ProcessQueryCallback methods. QueryResultFuture AsyncQuery(const char* sql) { - QueryResultPromise res; - BasicStatementTask* task = new BasicStatementTask(sql, res); + BasicStatementTask* task = new BasicStatementTask(sql, true); Enqueue(task); - return res.get_future(); //! Actual return value has no use yet + return task->GetFuture(); //! Actual return value has no use yet } //! Enqueues a query in string format -with variable args- that will set the value of the QueryResultFuture return object as soon as the query is executed. @@ -320,10 +319,9 @@ class DatabaseWorkerPool //! Statement must be prepared with CONNECTION_ASYNC flag. PreparedQueryResultFuture AsyncQuery(PreparedStatement* stmt) { - PreparedQueryResultPromise res; - PreparedStatementTask* task = new PreparedStatementTask(stmt, res); + PreparedStatementTask* task = new PreparedStatementTask(stmt, true); Enqueue(task); - return res.get_future(); + return task->GetFuture(); } //! Enqueues a vector of SQL operations (can be both adhoc and prepared) that will set the value of the QueryResultHolderFuture @@ -332,10 +330,9 @@ class DatabaseWorkerPool //! Any prepared statements added to this holder need to be prepared with the CONNECTION_ASYNC flag. QueryResultHolderFuture DelayQueryHolder(SQLQueryHolder* holder) { - QueryResultHolderPromise res; - SQLQueryHolderTask* task = new SQLQueryHolderTask(holder, res); + SQLQueryHolderTask* task = new SQLQueryHolderTask(holder); Enqueue(task); - return res.get_future(); //! Fool compiler, has no use yet + return task->GetFuture(); } /** diff --git a/src/server/shared/Database/PreparedStatement.cpp b/src/server/shared/Database/PreparedStatement.cpp index 4b2b55f25e5..fb1bfa687d0 100644 --- a/src/server/shared/Database/PreparedStatement.cpp +++ b/src/server/shared/Database/PreparedStatement.cpp @@ -445,19 +445,19 @@ std::string MySQLPreparedStatement::getQueryString(std::string const& sqlPattern } //- Execution -PreparedStatementTask::PreparedStatementTask(PreparedStatement* stmt) : -m_stmt(stmt), -m_has_result(false) { } - -PreparedStatementTask::PreparedStatementTask(PreparedStatement* stmt, PreparedQueryResultPromise& result) : -m_stmt(stmt), -m_has_result(true), -m_result(std::move(result)) { } - +PreparedStatementTask::PreparedStatementTask(PreparedStatement* stmt, bool async) : +m_stmt(stmt) +{ + m_has_result = async; // If it's async, then there's a result + if (async) + m_result = new PreparedQueryResultPromise(); +} PreparedStatementTask::~PreparedStatementTask() { delete m_stmt; + if (m_has_result && m_result != nullptr) + delete m_result; } bool PreparedStatementTask::Execute() @@ -468,10 +468,10 @@ bool PreparedStatementTask::Execute() if (!result || !result->GetRowCount()) { delete result; - m_result.set_value(PreparedQueryResult(NULL)); + m_result->set_value(PreparedQueryResult(NULL)); return false; } - m_result.set_value(PreparedQueryResult(result)); + m_result->set_value(PreparedQueryResult(result)); return true; } diff --git a/src/server/shared/Database/PreparedStatement.h b/src/server/shared/Database/PreparedStatement.h index d69ee52a3e7..16f7a9141d3 100644 --- a/src/server/shared/Database/PreparedStatement.h +++ b/src/server/shared/Database/PreparedStatement.h @@ -160,15 +160,15 @@ typedef std::promise PreparedQueryResultPromise; class PreparedStatementTask : public SQLOperation { public: - PreparedStatementTask(PreparedStatement* stmt); - PreparedStatementTask(PreparedStatement* stmt, PreparedQueryResultPromise& result); + PreparedStatementTask(PreparedStatement* stmt, bool async = false); ~PreparedStatementTask(); bool Execute(); + PreparedQueryResultFuture GetFuture() { return m_result->get_future(); } protected: PreparedStatement* m_stmt; bool m_has_result; - PreparedQueryResultPromise m_result; + PreparedQueryResultPromise* m_result; }; #endif diff --git a/src/server/shared/Database/QueryHolder.h b/src/server/shared/Database/QueryHolder.h index 5751675fe5f..37e23ecd653 100644 --- a/src/server/shared/Database/QueryHolder.h +++ b/src/server/shared/Database/QueryHolder.h @@ -45,13 +45,15 @@ typedef std::promise QueryResultHolderPromise; class SQLQueryHolderTask : public SQLOperation { private: - SQLQueryHolder * m_holder; + SQLQueryHolder* m_holder; QueryResultHolderPromise m_result; public: - SQLQueryHolderTask(SQLQueryHolder *holder, QueryResultHolderPromise& res) - : m_holder(holder), m_result(std::move(res)){ }; + SQLQueryHolderTask(SQLQueryHolder* holder) + : m_holder(holder) { }; + bool Execute(); + QueryResultHolderFuture GetFuture() { return m_result.get_future(); } }; diff --git a/src/server/shared/Threading/Callback.h b/src/server/shared/Threading/Callback.h index 5d9dc9a760d..80c865b5710 100644 --- a/src/server/shared/Threading/Callback.h +++ b/src/server/shared/Threading/Callback.h @@ -47,7 +47,7 @@ class QueryCallback int IsReady() { - return _result.wait_for(std::chrono::seconds(0)) == std::future_status::ready; + return _result.valid() && _result.wait_for(std::chrono::seconds(0)) == std::future_status::ready; } void GetResult(Result& res) @@ -130,7 +130,7 @@ class QueryCallback_2 int IsReady() { - return _result.wait_for(std::chrono::seconds(0)) == std::future_status::ready; + return _result.valid() && _result.wait_for(std::chrono::seconds(0)) == std::future_status::ready; } void GetResult(Result& res) diff --git a/src/server/worldserver/RemoteAccess/RASession.h b/src/server/worldserver/RemoteAccess/RASession.h index f3ef2a6a86a..d06ebfa31a7 100644 --- a/src/server/worldserver/RemoteAccess/RASession.h +++ b/src/server/worldserver/RemoteAccess/RASession.h @@ -46,8 +46,6 @@ public: private: int Send(const char* data); - void AsyncRead(); - void AsyncWrite(size_t length); std::string ReadString(); bool CheckAccessLevel(const std::string& user); bool CheckPassword(const std::string& user, const std::string& pass); -- cgit v1.2.3 From d1594998f80762fa58f64cf123f9bf9cb77036e4 Mon Sep 17 00:00:00 2001 From: leak Date: Tue, 8 Jul 2014 20:55:25 +0200 Subject: Replaced the LogWorker thread with Boost ASIO --- src/server/shared/Database/DatabaseWorker.h | 1 + src/server/shared/Logging/Log.cpp | 17 +++++---- src/server/shared/Logging/Log.h | 16 ++++++-- src/server/shared/Logging/LogWorker.cpp | 56 ---------------------------- src/server/shared/Logging/LogWorker.h | 46 ----------------------- src/server/shared/Networking/AsyncAcceptor.h | 4 +- src/server/worldserver/Main.cpp | 6 +++ 7 files changed, 31 insertions(+), 115 deletions(-) delete mode 100644 src/server/shared/Logging/LogWorker.cpp delete mode 100644 src/server/shared/Logging/LogWorker.h (limited to 'src/server/shared/Database') diff --git a/src/server/shared/Database/DatabaseWorker.h b/src/server/shared/Database/DatabaseWorker.h index 91aef2c7194..6f452c767f6 100644 --- a/src/server/shared/Database/DatabaseWorker.h +++ b/src/server/shared/Database/DatabaseWorker.h @@ -18,6 +18,7 @@ #ifndef _WORKERTHREAD_H #define _WORKERTHREAD_H +#include #include "ProducerConsumerQueue.h" class MySQLConnection; diff --git a/src/server/shared/Logging/Log.cpp b/src/server/shared/Logging/Log.cpp index 57d8797e61e..65cf930a634 100644 --- a/src/server/shared/Logging/Log.cpp +++ b/src/server/shared/Logging/Log.cpp @@ -29,7 +29,7 @@ #include #include -Log::Log() : worker(NULL) +Log::Log() : _ioService(nullptr), _strand(nullptr) { m_logsTimestamp = "_" + GetTimestampStr(); LoadFromConfig(); @@ -37,6 +37,7 @@ Log::Log() : worker(NULL) Log::~Log() { + delete _strand; Close(); } @@ -272,8 +273,13 @@ void Log::write(LogMessage* msg) const Logger const* logger = GetLoggerByType(msg->type); msg->text.append("\n"); - if (worker) - worker->Enqueue(new LogOperation(logger, msg)); + if (_ioService) + { + auto logOperation = std::shared_ptr(new LogOperation(logger, msg)); + + _ioService->post(_strand->wrap([logOperation](){ logOperation->call(); })); + + } else { logger->write(*msg); @@ -375,8 +381,6 @@ void Log::SetRealmId(uint32 id) void Log::Close() { - delete worker; - worker = NULL; loggers.clear(); for (AppenderMap::iterator it = appenders.begin(); it != appenders.end(); ++it) { @@ -390,9 +394,6 @@ void Log::LoadFromConfig() { Close(); - if (sConfigMgr->GetBoolDefault("Log.Async.Enable", false)) - worker = new LogWorker(); - AppenderId = 0; m_logsDir = sConfigMgr->GetStringDefault("LogsDir", ""); if (!m_logsDir.empty()) diff --git a/src/server/shared/Logging/Log.h b/src/server/shared/Logging/Log.h index 8d2fd33d886..e739c9eaf4e 100644 --- a/src/server/shared/Logging/Log.h +++ b/src/server/shared/Logging/Log.h @@ -22,8 +22,9 @@ #include "Define.h" #include "Appender.h" #include "Logger.h" -#include "LogWorker.h" #include +#include +#include #include #include @@ -39,9 +40,17 @@ class Log ~Log(); public: - static Log* instance() + + static Log* instance(boost::asio::io_service* ioService = nullptr) { static Log* instance = new Log(); + + if (ioService != nullptr) + { + instance->_ioService = ioService; + instance->_strand = new boost::asio::strand(*ioService); + } + return instance; } @@ -77,7 +86,8 @@ class Log std::string m_logsDir; std::string m_logsTimestamp; - LogWorker* worker; + boost::asio::io_service* _ioService; + boost::asio::strand* _strand; }; inline Logger const* Log::GetLoggerByType(std::string const& type) const diff --git a/src/server/shared/Logging/LogWorker.cpp b/src/server/shared/Logging/LogWorker.cpp deleted file mode 100644 index ab0f41bf105..00000000000 --- a/src/server/shared/Logging/LogWorker.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2008-2014 TrinityCore - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -#include "LogWorker.h" -#include - -LogWorker::LogWorker() -{ - _cancelationToken = false; - _workerThread = std::thread(&LogWorker::WorkerThread, this); -} - -LogWorker::~LogWorker() -{ - _cancelationToken = true; - - _queue.Cancel(); - - _workerThread.join(); -} - -void LogWorker::Enqueue(LogOperation* op) -{ - return _queue.Push(op); -} - -void LogWorker::WorkerThread() -{ - while (1) - { - LogOperation* operation = nullptr; - - _queue.WaitAndPop(operation); - - if (_cancelationToken) - return; - - operation->call(); - - delete operation; - } -} diff --git a/src/server/shared/Logging/LogWorker.h b/src/server/shared/Logging/LogWorker.h deleted file mode 100644 index b2680b12c34..00000000000 --- a/src/server/shared/Logging/LogWorker.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2008-2014 TrinityCore - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -#ifndef LOGWORKER_H -#define LOGWORKER_H - -#include -#include - -#include "LogOperation.h" -#include "ProducerConsumerQueue.h" - -class LogWorker -{ - public: - LogWorker(); - ~LogWorker(); - - void Enqueue(LogOperation *op); - - private: - ProducerConsumerQueue _queue; - - void WorkerThread(); - std::thread _workerThread; - - std::atomic_bool _cancelationToken; -}; - - - -#endif diff --git a/src/server/shared/Networking/AsyncAcceptor.h b/src/server/shared/Networking/AsyncAcceptor.h index 1b65282527a..789bd9c3a74 100644 --- a/src/server/shared/Networking/AsyncAcceptor.h +++ b/src/server/shared/Networking/AsyncAcceptor.h @@ -37,9 +37,9 @@ public: _socket(ioService), _acceptor(ioService, tcp::endpoint(boost::asio::ip::address::from_string(bindIp), port)) { - AsyncAccept(); + _acceptor.set_option(boost::asio::ip::tcp::no_delay(tcpNoDelay)); - _socket.set_option(boost::asio::ip::tcp::no_delay(tcpNoDelay)); + AsyncAccept(); }; private: diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp index 15a282b70ea..05ae31e8780 100644 --- a/src/server/worldserver/Main.cpp +++ b/src/server/worldserver/Main.cpp @@ -145,6 +145,12 @@ extern int main(int argc, char** argv) return 1; } + if (sConfigMgr->GetBoolDefault("Log.Async.Enable", false)) + { + // If logs are supposed to be handled async then we need to pass the io_service into the Log singleton + Log::instance(&_ioService); + } + TC_LOG_INFO("server.worldserver", "%s (worldserver-daemon)", _FULLVERSION); TC_LOG_INFO("server.worldserver", " to stop.\n"); TC_LOG_INFO("server.worldserver", " ______ __"); -- cgit v1.2.3 From 87f830ca89d4ab448a3dcf25f0475575cfed247b Mon Sep 17 00:00:00 2001 From: Subv Date: Sun, 13 Jul 2014 15:17:13 -0500 Subject: Fix a warning about abstract class not having a virtual destructor --- src/server/shared/Database/SQLOperation.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/server/shared/Database') diff --git a/src/server/shared/Database/SQLOperation.h b/src/server/shared/Database/SQLOperation.h index 64fc64e2c2e..4d6e349449d 100644 --- a/src/server/shared/Database/SQLOperation.h +++ b/src/server/shared/Database/SQLOperation.h @@ -57,6 +57,8 @@ class SQLOperation { public: SQLOperation(): m_conn(NULL) { } + virtual ~SQLOperation() { } + virtual int call() { Execute(); -- cgit v1.2.3 From 7532864264dd3b3b820c4b3c39ee900d5ff7cb0e Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 17 Jul 2014 15:42:57 +0200 Subject: Buildsystem/MSVC: Warning fixes C4800 'type' : forcing value to bool 'true' or 'false' (performance warning) C4127 conditional expression is constant --- src/server/collision/Maps/MapTree.cpp | 2 +- src/server/game/AI/CoreAI/UnitAI.cpp | 4 +- src/server/game/AI/CreatureAI.cpp | 6 +- src/server/game/AI/ScriptedAI/ScriptedEscortAI.h | 2 +- src/server/game/AI/ScriptedAI/ScriptedFollowerAI.h | 2 +- src/server/game/AI/SmartScripts/SmartScript.cpp | 38 ++++---- src/server/game/AI/SmartScripts/SmartScript.h | 2 +- .../game/Battlefield/Zones/BattlefieldWG.cpp | 2 +- src/server/game/Battlegrounds/Arena.cpp | 4 +- src/server/game/Battlegrounds/Battleground.h | 4 +- src/server/game/Battlegrounds/BattlegroundMgr.cpp | 6 +- .../game/Battlegrounds/Zones/BattlegroundRV.cpp | 2 +- src/server/game/Calendar/CalendarMgr.h | 4 +- src/server/game/Chat/Channels/Channel.h | 14 +-- src/server/game/Combat/UnitEvents.h | 2 +- src/server/game/Conditions/ConditionMgr.cpp | 14 +-- src/server/game/Conditions/DisableMgr.cpp | 12 +-- src/server/game/DungeonFinding/LFGMgr.cpp | 2 +- src/server/game/DungeonFinding/LFGMgr.h | 2 +- src/server/game/Entities/Creature/Creature.cpp | 2 +- src/server/game/Entities/Creature/Creature.h | 14 +-- src/server/game/Entities/GameObject/GameObject.h | 26 ++--- src/server/game/Entities/Item/ItemPrototype.h | 2 +- src/server/game/Entities/Object/Object.h | 12 +-- src/server/game/Entities/Pet/Pet.cpp | 2 +- src/server/game/Entities/Player/Player.cpp | 6 +- src/server/game/Entities/Player/Player.h | 12 +-- src/server/game/Entities/Player/SocialMgr.cpp | 2 +- src/server/game/Entities/Unit/Unit.cpp | 12 +-- src/server/game/Entities/Unit/Unit.h | 14 +-- src/server/game/Entities/Vehicle/VehicleDefines.h | 2 +- src/server/game/Globals/ObjectMgr.cpp | 2 +- src/server/game/Globals/ObjectMgr.h | 2 +- src/server/game/Groups/Group.cpp | 6 +- src/server/game/Groups/GroupMgr.cpp | 2 +- src/server/game/Guilds/Guild.cpp | 2 +- src/server/game/Handlers/BattleGroundHandler.cpp | 6 +- src/server/game/Handlers/CharacterHandler.cpp | 8 +- src/server/game/Handlers/GroupHandler.cpp | 2 +- src/server/game/Handlers/GuildHandler.cpp | 2 +- src/server/game/Handlers/NPCHandler.cpp | 4 +- src/server/game/Handlers/PetHandler.cpp | 6 +- src/server/game/Maps/Map.cpp | 8 +- src/server/game/Movement/PathGenerator.cpp | 4 +- src/server/game/Movement/Spline/MoveSplineFlag.h | 4 +- src/server/game/Quests/QuestDef.cpp | 4 +- src/server/game/Quests/QuestDef.h | 10 +- src/server/game/Reputation/ReputationMgr.cpp | 2 +- src/server/game/Scripting/MapScripts.cpp | 2 +- src/server/game/Spells/Auras/SpellAuras.cpp | 2 +- src/server/game/Spells/Auras/SpellAuras.h | 6 +- src/server/game/Spells/Spell.cpp | 12 +-- src/server/game/Spells/Spell.h | 6 +- src/server/game/Spells/SpellEffects.cpp | 2 +- src/server/game/Spells/SpellInfo.cpp | 14 +-- src/server/game/Spells/SpellScript.cpp | 2 +- src/server/game/Spells/SpellScript.h | 4 +- src/server/game/Tickets/TicketMgr.h | 2 +- src/server/game/Tools/CharacterDatabaseCleaner.cpp | 6 +- src/server/game/World/World.cpp | 4 +- src/server/scripts/Commands/cs_debug.cpp | 36 +++---- src/server/scripts/Commands/cs_lfg.cpp | 2 +- src/server/scripts/Commands/cs_misc.cpp | 2 +- .../instance_magisters_terrace.cpp | 4 +- .../SunwellPlateau/boss_kiljaeden.cpp | 2 +- .../ObsidianSanctum/obsidian_sanctum.cpp | 2 +- .../TrialOfTheChampion/boss_grand_champions.cpp | 2 +- .../HallsOfReflection/halls_of_reflection.cpp | 2 +- .../Northrend/Gundrak/boss_drakkari_colossus.cpp | 2 +- .../scripts/Northrend/Gundrak/boss_slad_ran.cpp | 2 +- .../boss_icecrown_gunship_battle.cpp | 9 +- .../IcecrownCitadel/boss_professor_putricide.cpp | 2 +- .../scripts/Northrend/Naxxramas/boss_gothik.cpp | 2 +- .../Ulduar/Ulduar/boss_flame_leviathan.cpp | 2 +- .../scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp | 2 +- .../Northrend/Ulduar/Ulduar/boss_razorscale.cpp | 2 +- .../scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp | 2 +- .../Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp | 2 +- .../Northrend/Ulduar/Ulduar/instance_ulduar.cpp | 2 +- .../UtgardeKeep/boss_ingvar_the_plunderer.cpp | 2 +- .../UtgardeKeep/UtgardeKeep/boss_keleseth.cpp | 2 +- src/server/scripts/Northrend/zone_storm_peaks.cpp | 2 +- src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp | 80 +++++++-------- src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp | 108 ++++++++++----------- src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp | 12 +-- src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp | 36 +++---- .../Outland/BlackTemple/illidari_council.cpp | 2 +- .../scripts/Outland/zone_blades_edge_mountains.cpp | 2 +- src/server/scripts/Spells/spell_dk.cpp | 2 +- src/server/scripts/Spells/spell_generic.cpp | 2 +- src/server/scripts/Spells/spell_hunter.cpp | 2 +- src/server/scripts/Spells/spell_item.cpp | 2 +- src/server/scripts/Spells/spell_mage.cpp | 6 +- src/server/scripts/Spells/spell_paladin.cpp | 2 +- src/server/scripts/Spells/spell_priest.cpp | 4 +- src/server/scripts/Spells/spell_quest.cpp | 5 +- src/server/scripts/Spells/spell_rogue.cpp | 6 +- src/server/scripts/Spells/spell_shaman.cpp | 2 +- src/server/scripts/Spells/spell_warrior.cpp | 4 +- src/server/shared/Database/DatabaseWorker.cpp | 2 +- src/server/shared/Database/QueryResult.cpp | 23 ++--- src/server/shared/Debugging/Errors.h | 16 ++- .../shared/Debugging/WheatyExceptionReport.cpp | 2 +- src/server/worldserver/RemoteAccess/RASession.cpp | 8 +- 104 files changed, 390 insertions(+), 391 deletions(-) (limited to 'src/server/shared/Database') diff --git a/src/server/collision/Maps/MapTree.cpp b/src/server/collision/Maps/MapTree.cpp index d592d795125..6b82e06aff7 100644 --- a/src/server/collision/Maps/MapTree.cpp +++ b/src/server/collision/Maps/MapTree.cpp @@ -295,7 +295,7 @@ namespace VMAP success = readChunk(rf, chunk, "GOBJ", 4); } - iIsTiled = bool(tiled); + iIsTiled = tiled != '\0'; // global model spawns // only non-tiled maps have them, and if so exactly one (so far at least...) diff --git a/src/server/game/AI/CoreAI/UnitAI.cpp b/src/server/game/AI/CoreAI/UnitAI.cpp index cb32740e068..90bd3e8627a 100644 --- a/src/server/game/AI/CoreAI/UnitAI.cpp +++ b/src/server/game/AI/CoreAI/UnitAI.cpp @@ -141,7 +141,7 @@ void UnitAI::DoCast(uint32 spellId) { if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId)) { - bool playerOnly = spellInfo->AttributesEx3 & SPELL_ATTR3_ONLY_TARGET_PLAYERS; + bool playerOnly = (spellInfo->AttributesEx3 & SPELL_ATTR3_ONLY_TARGET_PLAYERS) != 0; target = SelectTarget(SELECT_TARGET_RANDOM, 0, spellInfo->GetMaxRange(false), playerOnly); } break; @@ -156,7 +156,7 @@ void UnitAI::DoCast(uint32 spellId) { if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId)) { - bool playerOnly = spellInfo->AttributesEx3 & SPELL_ATTR3_ONLY_TARGET_PLAYERS; + bool playerOnly = (spellInfo->AttributesEx3 & SPELL_ATTR3_ONLY_TARGET_PLAYERS) != 0; float range = spellInfo->GetMaxRange(false); DefaultTargetSelector targetSelector(me, range, playerOnly, -(int32)spellId); diff --git a/src/server/game/AI/CreatureAI.cpp b/src/server/game/AI/CreatureAI.cpp index ac9de00cd10..7a79bb722a0 100644 --- a/src/server/game/AI/CreatureAI.cpp +++ b/src/server/game/AI/CreatureAI.cpp @@ -204,7 +204,8 @@ bool CreatureAI::UpdateVictimWithGaze() if (Unit* victim = me->SelectVictim()) AttackStart(victim); - return me->GetVictim(); + + return me->GetVictim() != nullptr; } bool CreatureAI::UpdateVictim() @@ -216,7 +217,8 @@ bool CreatureAI::UpdateVictim() { if (Unit* victim = me->SelectVictim()) AttackStart(victim); - return me->GetVictim(); + + return me->GetVictim() != nullptr; } else if (me->getThreatManager().isThreatListEmpty()) { diff --git a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h index 4aa00d74e4e..177810bbbfd 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h +++ b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h @@ -93,7 +93,7 @@ struct npc_escortAI : public ScriptedAI void SetRun(bool on = true); void SetEscortPaused(bool on); - bool HasEscortState(uint32 escortState) { return (m_uiEscortState & escortState); } + bool HasEscortState(uint32 escortState) { return (m_uiEscortState & escortState) != 0; } virtual bool IsEscorted() { return (m_uiEscortState & STATE_ESCORT_ESCORTING); } void SetMaxPlayerDistance(float newMax) { MaxPlayerDistance = newMax; } diff --git a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.h b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.h index df435fa5c9a..af7508441b9 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.h +++ b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.h @@ -60,7 +60,7 @@ class FollowerAI : public ScriptedAI void SetFollowPaused(bool bPaused); //if special event require follow mode to hold/resume during the follow void SetFollowComplete(bool bWithEndEvent = false); - bool HasFollowState(uint32 uiFollowState) { return (m_uiFollowState & uiFollowState); } + bool HasFollowState(uint32 uiFollowState) { return (m_uiFollowState & uiFollowState) != 0; } protected: Player* GetLeaderForFollower(); diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 114a48c60ca..02298684584 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -522,10 +522,10 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u CAST_AI(SmartAI, me->AI())->SetCombatMove(_allowMove); } - me->CastSpell((*itr)->ToUnit(), e.action.cast.spell, (e.action.cast.flags & SMARTCAST_TRIGGERED)); + me->CastSpell((*itr)->ToUnit(), e.action.cast.spell, (e.action.cast.flags & SMARTCAST_TRIGGERED) != 0); } else if (go) - go->CastSpell((*itr)->ToUnit(), e.action.cast.spell, (e.action.cast.flags & SMARTCAST_TRIGGERED)); + go->CastSpell((*itr)->ToUnit(), e.action.cast.spell, (e.action.cast.flags & SMARTCAST_TRIGGERED) != 0); TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_CAST:: %s: %u casts spell %u on target %u with castflags %u", GetLogNameForGuid(me ? me->GetGUID() : go->GetGUID()), me ? me->GetGUIDLow() : go->GetGUIDLow(), e.action.cast.spell, (*itr)->GetGUIDLow(), e.action.cast.flags); @@ -557,7 +557,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (e.action.cast.flags & SMARTCAST_INTERRUPT_PREVIOUS) tempLastInvoker->InterruptNonMeleeSpells(false); - tempLastInvoker->CastSpell((*itr)->ToUnit(), e.action.cast.spell, (e.action.cast.flags & SMARTCAST_TRIGGERED)); + tempLastInvoker->CastSpell((*itr)->ToUnit(), e.action.cast.spell, (e.action.cast.flags & SMARTCAST_TRIGGERED) != 0); TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_INVOKER_CAST: Invoker %u casts spell %u on target %u with castflags %u", tempLastInvoker->GetGUIDLow(), e.action.cast.spell, (*itr)->GetGUIDLow(), e.action.cast.flags); } @@ -707,7 +707,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (!IsSmart()) break; - CAST_AI(SmartAI, me->AI())->SetAutoAttack(e.action.autoAttack.attack); + CAST_AI(SmartAI, me->AI())->SetAutoAttack(e.action.autoAttack.attack != 0); TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_AUTO_ATTACK: Creature: %u bool on = %u", me->GetGUIDLow(), e.action.autoAttack.attack); break; @@ -717,7 +717,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (!IsSmart()) break; - bool move = e.action.combatMove.move; + bool move = e.action.combatMove.move != 0; CAST_AI(SmartAI, me->AI())->SetCombatMove(move); TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_ALLOW_COMBAT_MOVEMENT: Creature %u bool on = %u", me->GetGUIDLow(), e.action.combatMove.move); @@ -1138,13 +1138,13 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u case SMART_ACTION_SET_VISIBILITY: { if (me) - me->SetVisible(e.action.visibility.state); + me->SetVisible(e.action.visibility.state != 0); break; } case SMART_ACTION_SET_ACTIVE: { if (WorldObject* baseObj = GetBaseObject()) - baseObj->setActive(e.action.active.state); + baseObj->setActive(e.action.active.state != 0); break; } @@ -1320,7 +1320,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (!IsSmart()) break; - CAST_AI(SmartAI, me->AI())->SetFly(e.action.setFly.fly); + CAST_AI(SmartAI, me->AI())->SetFly(e.action.setFly.fly != 0); break; } case SMART_ACTION_SET_RUN: @@ -1328,7 +1328,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (!IsSmart()) break; - CAST_AI(SmartAI, me->AI())->SetRun(e.action.setRun.run); + CAST_AI(SmartAI, me->AI())->SetRun(e.action.setRun.run != 0); break; } case SMART_ACTION_SET_SWIM: @@ -1336,7 +1336,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (!IsSmart()) break; - CAST_AI(SmartAI, me->AI())->SetSwim(e.action.setSwim.swim); + CAST_AI(SmartAI, me->AI())->SetSwim(e.action.setSwim.swim != 0); break; } case SMART_ACTION_WP_START: @@ -1344,9 +1344,9 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (!IsSmart()) break; - bool run = e.action.wpStart.run; + bool run = e.action.wpStart.run != 0; uint32 entry = e.action.wpStart.pathID; - bool repeat = e.action.wpStart.repeat; + bool repeat = e.action.wpStart.repeat != 0; ObjectList* targets = GetTargets(e, unit); StoreTargetList(targets, SMART_ESCORT_TARGETS); me->SetReactState((ReactStates)e.action.wpStart.reactState); @@ -1374,7 +1374,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u uint32 DespawnTime = e.action.wpStop.despawnTime; uint32 quest = e.action.wpStop.quest; - bool fail = e.action.wpStop.fail; + bool fail = e.action.wpStop.fail != 0; CAST_AI(SmartAI, me->AI())->StopPath(DespawnTime, quest, fail); break; } @@ -1729,7 +1729,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u interruptedSpell = true; } - unit->CastSpell((*it)->ToUnit(), e.action.cast.spell, (e.action.cast.flags & SMARTCAST_TRIGGERED)); + unit->CastSpell((*it)->ToUnit(), e.action.cast.spell, (e.action.cast.flags & SMARTCAST_TRIGGERED) != 0); } else TC_LOG_DEBUG("scripts.ai", "Spell %u not cast because it has flag SMARTCAST_AURA_NOT_PRESENT and the target (Guid: " UI64FMTD " Entry: %u Type: %u) already has the aura", e.action.cast.spell, (*it)->GetGUID(), (*it)->GetEntry(), uint32((*it)->GetTypeId())); @@ -1899,7 +1899,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) if (IsUnit(*itr)) - (*itr)->ToUnit()->InterruptNonMeleeSpells(e.action.interruptSpellCasting.withDelayed, e.action.interruptSpellCasting.spell_id, e.action.interruptSpellCasting.withInstant); + (*itr)->ToUnit()->InterruptNonMeleeSpells(e.action.interruptSpellCasting.withDelayed != 0, e.action.interruptSpellCasting.spell_id, e.action.interruptSpellCasting.withInstant != 0); delete targets; break; @@ -2090,7 +2090,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) if (IsCreature(*itr)) - (*itr)->ToCreature()->setRegeneratingHealth(e.action.setHealthRegen.regenHealth); + (*itr)->ToCreature()->setRegeneratingHealth(e.action.setHealthRegen.regenHealth != 0); delete targets; break; @@ -2103,7 +2103,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) if (IsCreature(*itr)) - (*itr)->ToCreature()->SetControlled(e.action.setRoot.root, UNIT_STATE_ROOT); + (*itr)->ToCreature()->SetControlled(e.action.setRoot.root != 0, UNIT_STATE_ROOT); delete targets; break; @@ -2612,7 +2612,7 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder const& e, Unit* invoker /* case SMART_TARGET_CLOSEST_ENEMY: { if (me) - if (Unit* target = me->SelectNearestTarget(e.target.closestAttackable.maxDist, e.target.closestAttackable.playerOnly)) + if (Unit* target = me->SelectNearestTarget(e.target.closestAttackable.maxDist, e.target.closestAttackable.playerOnly != 0)) l->push_back(target); break; @@ -2620,7 +2620,7 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder const& e, Unit* invoker /* case SMART_TARGET_CLOSEST_FRIENDLY: { if (me) - if (Unit* target = DoFindClosestFriendlyInRange(e.target.closestFriendly.maxDist, e.target.closestFriendly.playerOnly)) + if (Unit* target = DoFindClosestFriendlyInRange(e.target.closestFriendly.maxDist, e.target.closestFriendly.playerOnly != 0)) l->push_back(target); break; diff --git a/src/server/game/AI/SmartScripts/SmartScript.h b/src/server/game/AI/SmartScripts/SmartScript.h index b83222dc263..0931756a026 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.h +++ b/src/server/game/AI/SmartScripts/SmartScript.h @@ -216,7 +216,7 @@ class SmartScript } void DecPhase(int32 p = 1) { mEventPhase -= (mEventPhase < (uint32)p ? (uint32)p - mEventPhase : (uint32)p); } - bool IsInPhase(uint32 p) const { return (1 << (mEventPhase - 1)) & p; } + bool IsInPhase(uint32 p) const { return ((1 << (mEventPhase - 1)) & p) != 0; } void SetPhase(uint32 p = 0) { mEventPhase = p; } SmartAIEventList mEvents; diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp index 3e603f4bb28..e05c918f501 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp @@ -84,7 +84,7 @@ bool BattlefieldWG::SetupBattlefield() sWorld->setWorldState(ClockWorldState[0], uint64(m_NoWarBattleTime)); } - m_isActive = bool(sWorld->getWorldState(BATTLEFIELD_WG_WORLD_STATE_ACTIVE)); + m_isActive = sWorld->getWorldState(BATTLEFIELD_WG_WORLD_STATE_ACTIVE) != 0; m_DefenderTeam = TeamId(sWorld->getWorldState(BATTLEFIELD_WG_WORLD_STATE_DEFENDER)); m_Timer = sWorld->getWorldState(ClockWorldState[0]); diff --git a/src/server/game/Battlegrounds/Arena.cpp b/src/server/game/Battlegrounds/Arena.cpp index deb04085ea4..cdc6fc3cac0 100644 --- a/src/server/game/Battlegrounds/Arena.cpp +++ b/src/server/game/Battlegrounds/Arena.cpp @@ -108,7 +108,7 @@ void Arena::RemovePlayerAtLeave(uint64 guid, bool transport, bool sendPacket) // left a rated match while the encounter was in progress, consider as loser if (winnerArenaTeam && loserArenaTeam && winnerArenaTeam != loserArenaTeam) { - if (Player* player = _GetPlayer(itr->first, itr->second.OfflineRemoveTime, "Arena::RemovePlayerAtLeave")) + if (Player* player = _GetPlayer(itr->first, itr->second.OfflineRemoveTime != 0, "Arena::RemovePlayerAtLeave")) loserArenaTeam->MemberLost(player, GetArenaMatchmakerRating(GetOtherTeam(team))); else loserArenaTeam->OfflineMemberLost(guid, GetArenaMatchmakerRating(GetOtherTeam(team))); @@ -210,7 +210,7 @@ void Arena::EndBattleground(uint32 winner) continue; } - Player* player = _GetPlayer(i.first, i.second.OfflineRemoveTime, "Arena::EndBattleground"); + Player* player = _GetPlayer(i.first, i.second.OfflineRemoveTime != 0, "Arena::EndBattleground"); if (!player) continue; diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h index 481e0e18382..c2e5b03e3ae 100644 --- a/src/server/game/Battlegrounds/Battleground.h +++ b/src/server/game/Battlegrounds/Battleground.h @@ -476,8 +476,8 @@ class Battleground void PlayerAddedToBGCheckIfBGIsRunning(Player* player); Player* _GetPlayer(uint64 guid, bool offlineRemove, const char* context) const; - Player* _GetPlayer(BattlegroundPlayerMap::iterator itr, const char* context) { return _GetPlayer(itr->first, itr->second.OfflineRemoveTime, context); } - Player* _GetPlayer(BattlegroundPlayerMap::const_iterator itr, const char* context) const { return _GetPlayer(itr->first, itr->second.OfflineRemoveTime, context); } + Player* _GetPlayer(BattlegroundPlayerMap::iterator itr, const char* context) { return _GetPlayer(itr->first, itr->second.OfflineRemoveTime != 0, context); } + Player* _GetPlayer(BattlegroundPlayerMap::const_iterator itr, const char* context) const { return _GetPlayer(itr->first, itr->second.OfflineRemoveTime != 0, context); } Player* _GetPlayerForTeam(uint32 teamId, BattlegroundPlayerMap::const_iterator itr, const char* context) const; void _ProcessOfflineQueue(); diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index b5b0d04a069..82ea0901875 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -824,12 +824,8 @@ void BattlegroundMgr::ToggleArenaTesting() void BattlegroundMgr::SetHolidayWeekends(uint32 mask) { for (uint32 bgtype = 1; bgtype < MAX_BATTLEGROUND_TYPE_ID; ++bgtype) - { if (Battleground* bg = GetBattlegroundTemplate(BattlegroundTypeId(bgtype))) - { - bg->SetHoliday(mask & (1 << bgtype)); - } - } + bg->SetHoliday((mask & (1 << bgtype)) != 0); } void BattlegroundMgr::ScheduleQueueUpdate(uint32 arenaMatchmakerRating, uint8 arenaType, BattlegroundQueueTypeId bgQueueTypeId, BattlegroundTypeId bgTypeId, BattlegroundBracketId bracket_id) diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp index 9609009d610..284b05a8960 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp @@ -158,7 +158,7 @@ void BattlegroundRV::TogglePillarCollision() { if (i >= BG_RV_OBJECT_PILAR_COLLISION_1) { - GOState state = (bool(go->GetGOInfo()->door.startOpen) == _pillarCollision) ? GO_STATE_ACTIVE : GO_STATE_READY; + GOState state = ((go->GetGOInfo()->door.startOpen != 0) == _pillarCollision) ? GO_STATE_ACTIVE : GO_STATE_READY; go->SetGoState(state); } diff --git a/src/server/game/Calendar/CalendarMgr.h b/src/server/game/Calendar/CalendarMgr.h index 9c7882fe4b7..6eecd2a4e8b 100644 --- a/src/server/game/Calendar/CalendarMgr.h +++ b/src/server/game/Calendar/CalendarMgr.h @@ -243,8 +243,8 @@ struct CalendarEvent void SetTimeZoneTime(time_t timezoneTime) { _timezoneTime = timezoneTime; } time_t GetTimeZoneTime() const { return _timezoneTime; } - bool IsGuildEvent() const { return _flags & CALENDAR_FLAG_GUILD_EVENT; } - bool IsGuildAnnouncement() const { return _flags & CALENDAR_FLAG_WITHOUT_INVITES; } + bool IsGuildEvent() const { return (_flags & CALENDAR_FLAG_GUILD_EVENT) != 0; } + bool IsGuildAnnouncement() const { return (_flags & CALENDAR_FLAG_WITHOUT_INVITES) != 0; } std::string BuildCalendarMailSubject(uint64 remover) const; std::string BuildCalendarMailBody() const; diff --git a/src/server/game/Chat/Channels/Channel.h b/src/server/game/Chat/Channels/Channel.h index 115e340762e..877c1e826c9 100644 --- a/src/server/game/Chat/Channels/Channel.h +++ b/src/server/game/Chat/Channels/Channel.h @@ -125,21 +125,21 @@ class Channel uint64 player; uint8 flags; - bool HasFlag(uint8 flag) const { return flags & flag; } - void SetFlag(uint8 flag) { if (!HasFlag(flag)) flags |= flag; } - bool IsOwner() const { return flags & MEMBER_FLAG_OWNER; } + bool HasFlag(uint8 flag) const { return (flags & flag) != 0; } + void SetFlag(uint8 flag) { flags |= flag; } + bool IsOwner() const { return (flags & MEMBER_FLAG_OWNER) != 0; } void SetOwner(bool state) { if (state) flags |= MEMBER_FLAG_OWNER; else flags &= ~MEMBER_FLAG_OWNER; } - bool IsModerator() const { return flags & MEMBER_FLAG_MODERATOR; } + bool IsModerator() const { return (flags & MEMBER_FLAG_MODERATOR) != 0; } void SetModerator(bool state) { if (state) flags |= MEMBER_FLAG_MODERATOR; else flags &= ~MEMBER_FLAG_MODERATOR; } - bool IsMuted() const { return flags & MEMBER_FLAG_MUTED; } + bool IsMuted() const { return (flags & MEMBER_FLAG_MUTED) != 0; } void SetMuted(bool state) { if (state) flags |= MEMBER_FLAG_MUTED; @@ -153,13 +153,13 @@ class Channel uint32 GetChannelId() const { return _channelId; } bool IsConstant() const { return _channelId != 0; } bool IsAnnounce() const { return _announce; } - bool IsLFG() const { return GetFlags() & CHANNEL_FLAG_LFG; } + bool IsLFG() const { return (GetFlags() & CHANNEL_FLAG_LFG) != 0; } std::string const& GetPassword() const { return _password; } void SetPassword(std::string const& npassword) { _password = npassword; } void SetAnnounce(bool nannounce) { _announce = nannounce; } uint32 GetNumPlayers() const { return playersStore.size(); } uint8 GetFlags() const { return _flags; } - bool HasFlag(uint8 flag) const { return _flags & flag; } + bool HasFlag(uint8 flag) const { return (_flags & flag) != 0; } void JoinChannel(Player* player, std::string const& pass); void LeaveChannel(Player* player, bool send = true); diff --git a/src/server/game/Combat/UnitEvents.h b/src/server/game/Combat/UnitEvents.h index 50d4c3ad322..3377097a12e 100644 --- a/src/server/game/Combat/UnitEvents.h +++ b/src/server/game/Combat/UnitEvents.h @@ -74,7 +74,7 @@ class UnitBaseEvent public: UnitBaseEvent(uint32 pType) { iType = pType; } uint32 getType() const { return iType; } - bool matchesTypeMask(uint32 pMask) const { return iType & pMask; } + bool matchesTypeMask(uint32 pMask) const { return (iType & pMask) != 0; } void setType(uint32 pType) { iType = pType; } }; diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index bb1a722ec42..c77b34a39a3 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -78,7 +78,7 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) if (Player* player = object->ToPlayer()) { if (FactionEntry const* faction = sFactionStore.LookupEntry(ConditionValue1)) - condMeets = (ConditionValue2 & (1 << player->GetReputationMgr().GetRank(faction))); + condMeets = (ConditionValue2 & (1 << player->GetReputationMgr().GetRank(faction))) != 0; } break; } @@ -97,13 +97,13 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) case CONDITION_CLASS: { if (Unit* unit = object->ToUnit()) - condMeets = unit->getClassMask() & ConditionValue1; + condMeets = (unit->getClassMask() & ConditionValue1) != 0; break; } case CONDITION_RACE: { if (Unit* unit = object->ToUnit()) - condMeets = unit->getRaceMask() & ConditionValue1; + condMeets = (unit->getRaceMask() & ConditionValue1) != 0; break; } case CONDITION_GENDER: @@ -262,7 +262,7 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) Unit* toUnit = toObject->ToUnit(); Unit* unit = object->ToUnit(); if (toUnit && unit) - condMeets = (1 << unit->GetReactionTo(toUnit)) & ConditionValue2; + condMeets = ((1 << unit->GetReactionTo(toUnit)) & ConditionValue2) != 0; } break; } @@ -297,7 +297,7 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) } case CONDITION_PHASEMASK: { - condMeets = object->GetPhaseMask() & ConditionValue1; + condMeets = (object->GetPhaseMask() & ConditionValue1) != 0; break; } case CONDITION_TITLE: @@ -308,7 +308,7 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) } case CONDITION_SPAWNMASK: { - condMeets = ((1 << object->GetMap()->GetSpawnMode()) & ConditionValue1); + condMeets = ((1 << object->GetMap()->GetSpawnMode()) & ConditionValue1) != 0; break; } case CONDITION_UNIT_STATE: @@ -806,7 +806,7 @@ void ConditionMgr::LoadConditions(bool isReload) cond->ConditionValue1 = fields[7].GetUInt32(); cond->ConditionValue2 = fields[8].GetUInt32(); cond->ConditionValue3 = fields[9].GetUInt32(); - cond->NegativeCondition = fields[10].GetUInt8(); + cond->NegativeCondition = fields[10].GetBool(); cond->ErrorType = fields[11].GetUInt32(); cond->ErrorTextId = fields[12].GetUInt32(); cond->ScriptId = sObjectMgr->GetScriptId(fields[13].GetCString()); diff --git a/src/server/game/Conditions/DisableMgr.cpp b/src/server/game/Conditions/DisableMgr.cpp index b29959cac50..3f325be1e83 100644 --- a/src/server/game/Conditions/DisableMgr.cpp +++ b/src/server/game/Conditions/DisableMgr.cpp @@ -339,7 +339,7 @@ bool IsDisabledFor(DisableType type, uint32 entry, Unit const* unit, uint8 flags else if (spellFlags & SPELL_DISABLE_DEPRECATED_SPELL) // call not from spellcast return true; else if (flags & SPELL_DISABLE_LOS) - return spellFlags & SPELL_DISABLE_LOS; + return (spellFlags & SPELL_DISABLE_LOS) != 0; break; } @@ -355,13 +355,13 @@ bool IsDisabledFor(DisableType type, uint32 entry, Unit const* unit, uint8 flags switch (targetDifficulty) { case DUNGEON_DIFFICULTY_NORMAL: - return disabledModes & DUNGEON_STATUSFLAG_NORMAL; + return (disabledModes & DUNGEON_STATUSFLAG_NORMAL) != 0; case DUNGEON_DIFFICULTY_HEROIC: - return disabledModes & DUNGEON_STATUSFLAG_HEROIC; + return (disabledModes & DUNGEON_STATUSFLAG_HEROIC) != 0; case RAID_DIFFICULTY_10MAN_HEROIC: - return disabledModes & RAID_STATUSFLAG_10MAN_HEROIC; + return (disabledModes & RAID_STATUSFLAG_10MAN_HEROIC) != 0; case RAID_DIFFICULTY_25MAN_HEROIC: - return disabledModes & RAID_STATUSFLAG_25MAN_HEROIC; + return (disabledModes & RAID_STATUSFLAG_25MAN_HEROIC) != 0; } } else if (mapEntry->map_type == MAP_COMMON) @@ -381,7 +381,7 @@ bool IsDisabledFor(DisableType type, uint32 entry, Unit const* unit, uint8 flags case DISABLE_TYPE_MMAP: return true; case DISABLE_TYPE_VMAP: - return flags & itr->second.flags; + return (flags & itr->second.flags) != 0; } return false; diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index a24b3e3878a..076ac7982ec 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -1869,7 +1869,7 @@ void LFGMgr::Clean() bool LFGMgr::isOptionEnabled(uint32 option) { - return m_options & option; + return (m_options & option) != 0; } uint32 LFGMgr::GetOptions() diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h index 03ac5254057..3b38c23232c 100644 --- a/src/server/game/DungeonFinding/LFGMgr.h +++ b/src/server/game/DungeonFinding/LFGMgr.h @@ -270,7 +270,7 @@ struct LFGDungeonData LFGDungeonData(LFGDungeonEntry const* dbc): id(dbc->ID), name(dbc->name[0]), map(dbc->map), type(dbc->type), expansion(dbc->expansion), group(dbc->grouptype), minlevel(dbc->minlevel), maxlevel(dbc->maxlevel), difficulty(Difficulty(dbc->difficulty)), - seasonal(dbc->flags & LFG_FLAG_SEASONAL), x(0.0f), y(0.0f), z(0.0f), o(0.0f) + seasonal((dbc->flags & LFG_FLAG_SEASONAL) != 0), x(0.0f), y(0.0f), z(0.0f), o(0.0f) { } uint32 id; diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 341225741ea..52f3a87e7bb 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -1647,7 +1647,7 @@ bool Creature::isWorldBoss() const if (IsPet()) return false; - return GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_BOSS; + return (GetCreatureTemplate()->type_flags & CREATURE_TYPEFLAGS_BOSS) != 0; } SpellInfo const* Creature::reachWithSpellAttack(Unit* victim) diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index ca536e44e43..8ba5fdcb6fb 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -449,12 +449,12 @@ class Creature : public Unit, public GridObject, public MapObject void SetCorpseDelay(uint32 delay) { m_corpseDelay = delay; } uint32 GetCorpseDelay() const { return m_corpseDelay; } bool IsRacialLeader() const { return GetCreatureTemplate()->RacialLeader; } - bool IsCivilian() const { return GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_CIVILIAN; } - bool IsTrigger() const { return GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_TRIGGER; } - bool IsGuard() const { return GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_GUARD; } - bool CanWalk() const { return GetCreatureTemplate()->InhabitType & INHABIT_GROUND; } - bool CanSwim() const { return GetCreatureTemplate()->InhabitType & INHABIT_WATER || IsPet(); } - bool CanFly() const { return GetCreatureTemplate()->InhabitType & INHABIT_AIR; } + bool IsCivilian() const { return (GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_CIVILIAN) != 0; } + bool IsTrigger() const { return (GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_TRIGGER) != 0; } + bool IsGuard() const { return (GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_GUARD) != 0; } + bool CanWalk() const { return (GetCreatureTemplate()->InhabitType & INHABIT_GROUND) != 0; } + bool CanSwim() const { return (GetCreatureTemplate()->InhabitType & INHABIT_WATER) != 0 || IsPet(); } + bool CanFly() const { return (GetCreatureTemplate()->InhabitType & INHABIT_AIR) != 0; } void SetReactState(ReactStates st) { m_reactState = st; } ReactStates GetReactState() { return m_reactState; } @@ -564,7 +564,7 @@ class Creature : public Unit, public GridObject, public MapObject void AllLootRemovedFromCorpse(); uint16 GetLootMode() { return m_LootMode; } - bool HasLootMode(uint16 lootMode) { return m_LootMode & lootMode; } + bool HasLootMode(uint16 lootMode) { return (m_LootMode & lootMode) != 0; } void SetLootMode(uint16 lootMode) { m_LootMode = lootMode; } void AddLootMode(uint16 lootMode) { m_LootMode |= lootMode; } void RemoveLootMode(uint16 lootMode) { m_LootMode &= ~lootMode; } diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 549de28bb12..f5074e202e9 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -406,8 +406,8 @@ struct GameObjectTemplate { switch (type) { - case GAMEOBJECT_TYPE_CHEST: return chest.consumable; - case GAMEOBJECT_TYPE_GOOBER: return goober.consumable; + case GAMEOBJECT_TYPE_CHEST: return chest.consumable != 0; + case GAMEOBJECT_TYPE_GOOBER: return goober.consumable != 0; default: return false; } } @@ -416,10 +416,10 @@ struct GameObjectTemplate { switch (type) { - case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.allowMounted; - case GAMEOBJECT_TYPE_TEXT: return text.allowMounted; - case GAMEOBJECT_TYPE_GOOBER: return goober.allowMounted; - case GAMEOBJECT_TYPE_SPELLCASTER: return spellcaster.allowMounted; + case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.allowMounted != 0; + case GAMEOBJECT_TYPE_TEXT: return text.allowMounted != 0; + case GAMEOBJECT_TYPE_GOOBER: return goober.allowMounted != 0; + case GAMEOBJECT_TYPE_SPELLCASTER: return spellcaster.allowMounted != 0; default: return false; } } @@ -447,12 +447,12 @@ struct GameObjectTemplate { switch (type) { - case GAMEOBJECT_TYPE_DOOR: return door.noDamageImmune; - case GAMEOBJECT_TYPE_BUTTON: return button.noDamageImmune; - case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.noDamageImmune; - case GAMEOBJECT_TYPE_GOOBER: return goober.noDamageImmune; - case GAMEOBJECT_TYPE_FLAGSTAND: return flagstand.noDamageImmune; - case GAMEOBJECT_TYPE_FLAGDROP: return flagdrop.noDamageImmune; + case GAMEOBJECT_TYPE_DOOR: return door.noDamageImmune != 0; + case GAMEOBJECT_TYPE_BUTTON: return button.noDamageImmune != 0; + case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.noDamageImmune != 0; + case GAMEOBJECT_TYPE_GOOBER: return goober.noDamageImmune != 0; + case GAMEOBJECT_TYPE_FLAGSTAND: return flagstand.noDamageImmune != 0; + case GAMEOBJECT_TYPE_FLAGDROP: return flagdrop.noDamageImmune != 0; default: return true; } } @@ -734,7 +734,7 @@ class GameObject : public WorldObject, public GridObject, public Map void SetLootState(LootState s, Unit* unit = NULL); uint16 GetLootMode() { return m_LootMode; } - bool HasLootMode(uint16 lootMode) { return m_LootMode & lootMode; } + bool HasLootMode(uint16 lootMode) { return (m_LootMode & lootMode) != 0; } void SetLootMode(uint16 lootMode) { m_LootMode = lootMode; } void AddLootMode(uint16 lootMode) { m_LootMode |= lootMode; } void RemoveLootMode(uint16 lootMode) { m_LootMode &= ~lootMode; } diff --git a/src/server/game/Entities/Item/ItemPrototype.h b/src/server/game/Entities/Item/ItemPrototype.h index bdf956f8921..7e17fd6ae4d 100644 --- a/src/server/game/Entities/Item/ItemPrototype.h +++ b/src/server/game/Entities/Item/ItemPrototype.h @@ -684,7 +684,7 @@ struct ItemTemplate return false; } - bool IsCurrencyToken() const { return BagFamily & BAG_FAMILY_MASK_CURRENCY_TOKENS; } + bool IsCurrencyToken() const { return (BagFamily & BAG_FAMILY_MASK_CURRENCY_TOKENS) != 0; } uint32 GetMaxStackSize() const { diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index be35c91fbf4..b82ca1cb0b2 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -140,7 +140,7 @@ class Object virtual void SetObjectScale(float scale) { SetFloatValue(OBJECT_FIELD_SCALE_X, scale); } TypeID GetTypeId() const { return m_objectTypeId; } - bool isType(uint16 mask) const { return (mask & m_objectType); } + bool isType(uint16 mask) const { return (mask & m_objectType) != 0; } virtual void BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) const; void SendUpdateToPlayer(Player* player); @@ -468,11 +468,11 @@ struct MovementInfo void SetMovementFlags(uint32 flag) { flags = flag; } void AddMovementFlag(uint32 flag) { flags |= flag; } void RemoveMovementFlag(uint32 flag) { flags &= ~flag; } - bool HasMovementFlag(uint32 flag) const { return flags & flag; } + bool HasMovementFlag(uint32 flag) const { return (flags & flag) != 0; } uint16 GetExtraMovementFlags() const { return flags2; } void AddExtraMovementFlag(uint16 flag) { flags2 |= flag; } - bool HasExtraMovementFlag(uint16 flag) const { return flags2 & flag; } + bool HasExtraMovementFlag(uint16 flag) const { return (flags2 & flag) != 0; } void SetFallTime(uint32 time) { fallTime = time; } @@ -604,7 +604,7 @@ class WorldObject : public Object, public WorldLocation virtual void SetPhaseMask(uint32 newPhaseMask, bool update); uint32 GetPhaseMask() const { return m_phaseMask; } bool InSamePhase(WorldObject const* obj) const; - bool InSamePhase(uint32 phasemask) const { return (GetPhaseMask() & phasemask); } + bool InSamePhase(uint32 phasemask) const { return (GetPhaseMask() & phasemask) != 0; } uint32 GetZoneId() const; uint32 GetAreaId() const; @@ -717,9 +717,9 @@ class WorldObject : public Object, public WorldLocation //relocation and visibility system functions void AddToNotify(uint16 f) { m_notifyflags |= f;} - bool isNeedNotify(uint16 f) const { return m_notifyflags & f;} + bool isNeedNotify(uint16 f) const { return (m_notifyflags & f) != 0; } uint16 GetNotifyFlags() const { return m_notifyflags; } - bool NotifyExecuted(uint16 f) const { return m_executed_notifies & f;} + bool NotifyExecuted(uint16 f) const { return (m_executed_notifies & f) != 0; } void SetNotified(uint16 f) { m_executed_notifies |= f;} void ResetAllNotifies() { m_notifyflags = 0; m_executed_notifies = 0; } diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index a6844f667d1..876f35a58ce 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -1087,7 +1087,7 @@ bool Pet::HaveInDiet(ItemTemplate const* item) const uint32 diet = cFamily->petFoodMask; uint32 FoodMask = 1 << (item->FoodType-1); - return diet & FoodMask; + return (diet & FoodMask) != 0; } uint32 Pet::GetCurrentFoodBenefitLevel(uint32 itemlevel) const diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 7894d6cbcab..2e60e4065a5 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -4154,7 +4154,7 @@ void Player::RemoveSpell(uint32 spell_id, bool disabled, bool learn_low_rank) bool Player::Has310Flyer(bool checkAllSpells, uint32 excludeSpellId) { if (!checkAllSpells) - return m_ExtraFlags & PLAYER_EXTRA_HAS_310_FLYER; + return (m_ExtraFlags & PLAYER_EXTRA_HAS_310_FLYER) != 0; else { SetHas310Flyer(false); @@ -24151,7 +24151,7 @@ uint32 Player::GetCorpseReclaimDelay(bool pvp) const void Player::UpdateCorpseReclaimDelay() { - bool pvp = m_ExtraFlags & PLAYER_EXTRA_PVP_DEATH; + bool pvp = (m_ExtraFlags & PLAYER_EXTRA_PVP_DEATH) != 0; if ((pvp && !sWorld->getBoolConfig(CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVP)) || (!pvp && !sWorld->getBoolConfig(CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVE))) @@ -24180,7 +24180,7 @@ int32 Player::CalculateCorpseReclaimDelay(bool load) if (load && !corpse) return -1; - bool pvp = corpse ? corpse->GetType() == CORPSE_RESURRECTABLE_PVP : m_ExtraFlags & PLAYER_EXTRA_PVP_DEATH; + bool pvp = corpse ? corpse->GetType() == CORPSE_RESURRECTABLE_PVP : (m_ExtraFlags & PLAYER_EXTRA_PVP_DEATH) != 0; uint32 delay; diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index d815b37f98f..3f349189770 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1138,13 +1138,13 @@ class Player : public Unit, public GridObject void CleanupAfterTaxiFlight(); void ContinueTaxiFlight(); // mount_id can be used in scripting calls - bool isAcceptWhispers() const { return m_ExtraFlags & PLAYER_EXTRA_ACCEPT_WHISPERS; } + bool isAcceptWhispers() const { return (m_ExtraFlags & PLAYER_EXTRA_ACCEPT_WHISPERS) != 0; } void SetAcceptWhispers(bool on) { if (on) m_ExtraFlags |= PLAYER_EXTRA_ACCEPT_WHISPERS; else m_ExtraFlags &= ~PLAYER_EXTRA_ACCEPT_WHISPERS; } - bool IsGameMaster() const { return m_ExtraFlags & PLAYER_EXTRA_GM_ON; } + bool IsGameMaster() const { return (m_ExtraFlags & PLAYER_EXTRA_GM_ON) != 0; } void SetGameMaster(bool on); - bool isGMChat() const { return m_ExtraFlags & PLAYER_EXTRA_GM_CHAT; } + bool isGMChat() const { return (m_ExtraFlags & PLAYER_EXTRA_GM_CHAT) != 0; } void SetGMChat(bool on) { if (on) m_ExtraFlags |= PLAYER_EXTRA_GM_CHAT; else m_ExtraFlags &= ~PLAYER_EXTRA_GM_CHAT; } - bool isTaxiCheater() const { return m_ExtraFlags & PLAYER_EXTRA_TAXICHEAT; } + bool isTaxiCheater() const { return (m_ExtraFlags & PLAYER_EXTRA_TAXICHEAT) != 0; } void SetTaxiCheater(bool on) { if (on) m_ExtraFlags |= PLAYER_EXTRA_TAXICHEAT; else m_ExtraFlags &= ~PLAYER_EXTRA_TAXICHEAT; } bool isGMVisible() const { return !(m_ExtraFlags & PLAYER_EXTRA_GM_INVISIBLE); } void SetGMVisible(bool on); @@ -1158,7 +1158,7 @@ class Player : public Unit, public GridObject void InitStatsForLevel(bool reapplyMods = false); // .cheat command related - bool GetCommandStatus(uint32 command) const { return _activeCheats & command; } + bool GetCommandStatus(uint32 command) const { return (_activeCheats & command) != 0; } void SetCommandStatusOn(uint32 command) { _activeCheats |= command; } void SetCommandStatusOff(uint32 command) { _activeCheats &= ~command; } @@ -2161,7 +2161,7 @@ class Player : public Unit, public GridObject uint8 m_forced_speed_changes[MAX_MOVE_TYPE]; - bool HasAtLoginFlag(AtLoginFlags f) const { return m_atLoginFlags & f; } + bool HasAtLoginFlag(AtLoginFlags f) const { return (m_atLoginFlags & f) != 0; } void SetAtLoginFlag(AtLoginFlags f) { m_atLoginFlags |= f; } void RemoveAtLoginFlag(AtLoginFlags flags, bool persist = false); diff --git a/src/server/game/Entities/Player/SocialMgr.cpp b/src/server/game/Entities/Player/SocialMgr.cpp index 25315a30da1..f2c2ada5666 100644 --- a/src/server/game/Entities/Player/SocialMgr.cpp +++ b/src/server/game/Entities/Player/SocialMgr.cpp @@ -187,7 +187,7 @@ bool PlayerSocial::HasIgnore(uint32 ignore_guid) { PlayerSocialMap::const_iterator itr = m_playerSocialMap.find(ignore_guid); if (itr != m_playerSocialMap.end()) - return itr->second.Flags & SOCIAL_FLAG_IGNORED; + return (itr->second.Flags & SOCIAL_FLAG_IGNORED) != 0; return false; } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index de71619c282..d475a0bd6ea 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -364,7 +364,7 @@ void Unit::Update(uint32 p_time) bool Unit::haveOffhandWeapon() const { if (Player const* player = ToPlayer()) - return player->GetWeaponForAttack(OFF_ATTACK, true); + return player->GetWeaponForAttack(OFF_ATTACK, true) != nullptr; return CanDualWield(); } @@ -2352,7 +2352,7 @@ SpellMissInfo Unit::MeleeSpellHitResult(Unit* victim, SpellInfo const* spellInfo bool canDodge = true; bool canParry = true; - bool canBlock = spellInfo->AttributesEx3 & SPELL_ATTR3_BLOCKABLE_SPELL; + bool canBlock = (spellInfo->AttributesEx3 & SPELL_ATTR3_BLOCKABLE_SPELL) != 0; // Same spells cannot be parry/dodge if (spellInfo->Attributes & SPELL_ATTR0_IMPOSSIBLE_DODGE_PARRY_BLOCK) @@ -3778,7 +3778,7 @@ void Unit::RemoveAurasDueToSpellBySteal(uint32 spellId, uint64 casterGUID, Unit* } } - bool stealCharge = aura->GetSpellInfo()->AttributesEx7 & SPELL_ATTR7_DISPEL_CHARGES; + bool stealCharge = (aura->GetSpellInfo()->AttributesEx7 & SPELL_ATTR7_DISPEL_CHARGES) != 0; // Cast duration to unsigned to prevent permanent aura's such as Righteous Fury being permanently added to caster uint32 dur = std::min(2u * MINUTE * IN_MILLISECONDS, uint32(aura->GetDuration())); @@ -4298,7 +4298,7 @@ void Unit::GetDispellableAuraList(Unit* caster, uint32 dispelMask, DispelCharges // The charges / stack amounts don't count towards the total number of auras that can be dispelled. // Ie: A dispel on a target with 5 stacks of Winters Chill and a Polymorph has 1 / (1 + 1) -> 50% chance to dispell // Polymorph instead of 1 / (5 + 1) -> 16%. - bool dispel_charges = aura->GetSpellInfo()->AttributesEx7 & SPELL_ATTR7_DISPEL_CHARGES; + bool dispel_charges = (aura->GetSpellInfo()->AttributesEx7 & SPELL_ATTR7_DISPEL_CHARGES) != 0; uint8 charges = dispel_charges ? aura->GetCharges() : aura->GetStackAmount(); if (charges > 0) dispelList.push_back(std::make_pair(aura, charges)); @@ -7534,7 +7534,7 @@ bool Unit::HandleAuraProc(Unit* victim, uint32 damage, Aura* triggeredByAura, Sp CastSpell(this, 28682, true); - return (procEx & PROC_EX_CRITICAL_HIT); + return (procEx & PROC_EX_CRITICAL_HIT) != 0; } // Empowered Fire case 31656: @@ -15214,7 +15214,7 @@ void Unit::Kill(Unit* victim, bool durabilityLoss) if (group) { - group->BroadcastPacket(&data, group->GetMemberGroup(player->GetGUID())); + group->BroadcastPacket(&data, group->GetMemberGroup(player->GetGUID()) != 0); if (creature) { diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 535d75af204..e87eb957de8 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1343,18 +1343,18 @@ class Unit : public WorldObject void SendMeleeAttackStart(Unit* victim); void AddUnitState(uint32 f) { m_state |= f; } - bool HasUnitState(const uint32 f) const { return (m_state & f); } + bool HasUnitState(const uint32 f) const { return (m_state & f) != 0; } void ClearUnitState(uint32 f) { m_state &= ~f; } bool CanFreeMove() const; uint32 HasUnitTypeMask(uint32 mask) const { return mask & m_unitTypeMask; } void AddUnitTypeMask(uint32 mask) { m_unitTypeMask |= mask; } - bool IsSummon() const { return m_unitTypeMask & UNIT_MASK_SUMMON; } - bool IsGuardian() const { return m_unitTypeMask & UNIT_MASK_GUARDIAN; } - bool IsPet() const { return m_unitTypeMask & UNIT_MASK_PET; } - bool IsHunterPet() const{ return m_unitTypeMask & UNIT_MASK_HUNTER_PET; } - bool IsTotem() const { return m_unitTypeMask & UNIT_MASK_TOTEM; } - bool IsVehicle() const { return m_unitTypeMask & UNIT_MASK_VEHICLE; } + bool IsSummon() const { return (m_unitTypeMask & UNIT_MASK_SUMMON) != 0; } + bool IsGuardian() const { return (m_unitTypeMask & UNIT_MASK_GUARDIAN) != 0; } + bool IsPet() const { return (m_unitTypeMask & UNIT_MASK_PET) != 0; } + bool IsHunterPet() const{ return (m_unitTypeMask & UNIT_MASK_HUNTER_PET) != 0; } + bool IsTotem() const { return (m_unitTypeMask & UNIT_MASK_TOTEM) != 0; } + bool IsVehicle() const { return (m_unitTypeMask & UNIT_MASK_VEHICLE) != 0; } uint8 getLevel() const { return uint8(GetUInt32Value(UNIT_FIELD_LEVEL)); } uint8 getLevelForTarget(WorldObject const* /*target*/) const { return getLevel(); } diff --git a/src/server/game/Entities/Vehicle/VehicleDefines.h b/src/server/game/Entities/Vehicle/VehicleDefines.h index 4acd1fe209a..fdc5c94282b 100644 --- a/src/server/game/Entities/Vehicle/VehicleDefines.h +++ b/src/server/game/Entities/Vehicle/VehicleDefines.h @@ -83,7 +83,7 @@ struct VehicleAccessory VehicleAccessory(uint32 entry, int8 seatId, bool isMinion, uint8 summonType, uint32 summonTime) : AccessoryEntry(entry), IsMinion(isMinion), SummonTime(summonTime), SeatId(seatId), SummonedType(summonType) { } uint32 AccessoryEntry; - uint32 IsMinion; + bool IsMinion; uint32 SummonTime; int8 SeatId; uint8 SummonedType; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 4853c9b3ba5..b7f2cd3dae4 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -6964,7 +6964,7 @@ void ObjectMgr::LoadReputationOnKill() repOnKill.IsTeamAward2 = fields[6].GetBool(); repOnKill.ReputationMaxCap2 = fields[7].GetUInt8(); repOnKill.RepValue2 = fields[8].GetInt32(); - repOnKill.TeamDependent = fields[9].GetUInt8(); + repOnKill.TeamDependent = fields[9].GetBool(); if (!GetCreatureTemplate(creature_id)) { diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 3cf0c103452..1a7fd311ba0 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -1297,7 +1297,7 @@ class ObjectMgr void LoadFactionChangeSpells(); void LoadFactionChangeTitles(); - bool IsTransportMap(uint32 mapId) const { return _transportMaps.count(mapId); } + bool IsTransportMap(uint32 mapId) const { return _transportMaps.count(mapId) != 0; } private: // first free id for selected id type diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 00106d971ec..2e7633091f3 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -492,7 +492,7 @@ bool Group::RemoveMember(uint64 guid, const RemoveMethod& method /*= GROUP_REMOV // LFG group vote kick handled in scripts if (isLFGGroup() && method == GROUP_REMOVEMETHOD_KICK) - return m_memberSlots.size(); + return !m_memberSlots.empty(); // remove member and change leader (if need) only if strong more 2 members _before_ member remove (BG/BF allow 1 member group) if (GetMembersCount() > ((isBGGroup() || isLFGGroup() || isBFGroup()) ? 1u : 2u)) @@ -2170,12 +2170,12 @@ bool Group::IsFull() const bool Group::isLFGGroup() const { - return m_groupType & GROUPTYPE_LFG; + return (m_groupType & GROUPTYPE_LFG) != 0; } bool Group::isRaidGroup() const { - return m_groupType & GROUPTYPE_RAID; + return (m_groupType & GROUPTYPE_RAID) != 0; } bool Group::isBGGroup() const diff --git a/src/server/game/Groups/GroupMgr.cpp b/src/server/game/Groups/GroupMgr.cpp index 39735f5dce3..23b6998d688 100644 --- a/src/server/game/Groups/GroupMgr.cpp +++ b/src/server/game/Groups/GroupMgr.cpp @@ -226,7 +226,7 @@ void GroupMgr::LoadGroups() diff = 0; // default for both difficaly types } - InstanceSave* save = sInstanceSaveMgr->AddInstanceSave(mapEntry->MapID, fields[2].GetUInt32(), Difficulty(diff), time_t(fields[5].GetUInt32()), (bool)fields[6].GetUInt64(), true); + InstanceSave* save = sInstanceSaveMgr->AddInstanceSave(mapEntry->MapID, fields[2].GetUInt32(), Difficulty(diff), time_t(fields[5].GetUInt32()), fields[6].GetUInt64() != 0, true); group->BindToInstance(save, fields[3].GetBool(), true); ++count; } diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index db0a196dec6..57e9a84d611 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -2744,7 +2744,7 @@ bool Guild::_DoItemsMove(MoveItemData* pSrc, MoveItemData* pDest, bool sendError Item* pDestItem = pDest->GetItem(); bool swap = (pDestItem != NULL); - Item* pSrcItem = pSrc->GetItem(splitedAmount); + Item* pSrcItem = pSrc->GetItem(splitedAmount != 0); // 1. Can store source item in destination if (!pDest->CanStore(pSrcItem, swap, sendError)) return false; diff --git a/src/server/game/Handlers/BattleGroundHandler.cpp b/src/server/game/Handlers/BattleGroundHandler.cpp index 7def6b0f467..95e4dd3b5e0 100644 --- a/src/server/game/Handlers/BattleGroundHandler.cpp +++ b/src/server/game/Handlers/BattleGroundHandler.cpp @@ -666,7 +666,7 @@ void WorldSession::HandleBattlemasterJoinArena(WorldPacket& recvData) return; if (grp->GetLeaderGUID() != _player->GetGUID()) return; - err = grp->CanJoinBattlegroundQueue(bg, bgQueueTypeId, arenatype, arenatype, (bool)isRated, arenaslot); + err = grp->CanJoinBattlegroundQueue(bg, bgQueueTypeId, arenatype, arenatype, isRated != 0, arenaslot); } uint32 ateamId = 0; @@ -706,7 +706,7 @@ void WorldSession::HandleBattlemasterJoinArena(WorldPacket& recvData) else bg->SetRated(false); - GroupQueueInfo* ginfo = bgQueue.AddGroup(_player, grp, bgTypeId, bracketEntry, arenatype, isRated, false, arenaRating, matchmakerRating, ateamId); + GroupQueueInfo* ginfo = bgQueue.AddGroup(_player, grp, bgTypeId, bracketEntry, arenatype, isRated != 0, false, arenaRating, matchmakerRating, ateamId); avgTime = bgQueue.GetAverageQueueWaitTime(ginfo, bracketEntry->GetBracketId()); } @@ -738,7 +738,7 @@ void WorldSession::HandleBattlemasterJoinArena(WorldPacket& recvData) } else { - GroupQueueInfo* ginfo = bgQueue.AddGroup(_player, NULL, bgTypeId, bracketEntry, arenatype, isRated, false, arenaRating, matchmakerRating, ateamId); + GroupQueueInfo* ginfo = bgQueue.AddGroup(_player, NULL, bgTypeId, bracketEntry, arenatype, isRated != 0, false, arenaRating, matchmakerRating, ateamId); uint32 avgTime = bgQueue.GetAverageQueueWaitTime(ginfo, bracketEntry->GetBracketId()); uint32 queueSlot = _player->AddBattlegroundQueueId(bgQueueTypeId); diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 6c4c657ba2c..4d52eab61d6 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -287,10 +287,10 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket& recvData) switch (team) { case ALLIANCE: - disabled = mask & (1 << 0); + disabled = (mask & (1 << 0)) != 0; break; case HORDE: - disabled = mask & (1 << 1); + disabled = (mask & (1 << 1)) != 0; break; } @@ -1055,7 +1055,7 @@ void WorldSession::HandleSetFactionAtWar(WorldPacket& recvData) recvData >> repListID; recvData >> flag; - GetPlayer()->GetReputationMgr().SetAtWar(repListID, flag); + GetPlayer()->GetReputationMgr().SetAtWar(repListID, flag != 0); } //I think this function is never used :/ I dunno, but i guess this opcode not exists @@ -1108,7 +1108,7 @@ void WorldSession::HandleSetFactionInactiveOpcode(WorldPacket& recvData) uint8 inactive; recvData >> replistid >> inactive; - _player->GetReputationMgr().SetInactive(replistid, inactive); + _player->GetReputationMgr().SetInactive(replistid, inactive != 0); } void WorldSession::HandleShowingHelmOpcode(WorldPacket& recvData) diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp index 97867e2f352..5b35da297c9 100644 --- a/src/server/game/Handlers/GroupHandler.cpp +++ b/src/server/game/Handlers/GroupHandler.cpp @@ -1068,5 +1068,5 @@ void WorldSession::HandleOptOutOfLootOpcode(WorldPacket& recvData) return; } - GetPlayer()->SetPassOnGroupLoot(passOnLoot); + GetPlayer()->SetPassOnGroupLoot(passOnLoot != 0); } diff --git a/src/server/game/Handlers/GuildHandler.cpp b/src/server/game/Handlers/GuildHandler.cpp index 9df633a4c5e..b652192bfd7 100644 --- a/src/server/game/Handlers/GuildHandler.cpp +++ b/src/server/game/Handlers/GuildHandler.cpp @@ -463,7 +463,7 @@ void WorldSession::HandleGuildBankSwapItems(WorldPacket& recvData) if (!Player::IsInventoryPos(playerBag, playerSlotId) && !(playerBag == NULL_BAG && playerSlotId == NULL_SLOT)) GetPlayer()->SendEquipError(EQUIP_ERR_NONE, NULL); else - guild->SwapItemsWithInventory(GetPlayer(), toChar, tabId, slotId, playerBag, playerSlotId, splitedAmount); + guild->SwapItemsWithInventory(GetPlayer(), toChar != 0, tabId, slotId, playerBag, playerSlotId, splitedAmount); } } diff --git a/src/server/game/Handlers/NPCHandler.cpp b/src/server/game/Handlers/NPCHandler.cpp index 4f65bcee4e5..1311cda1ef9 100644 --- a/src/server/game/Handlers/NPCHandler.cpp +++ b/src/server/game/Handlers/NPCHandler.cpp @@ -888,12 +888,12 @@ void WorldSession::HandleRepairItemOpcode(WorldPacket& recvData) Item* item = _player->GetItemByGuid(itemGUID); if (item) - _player->DurabilityRepair(item->GetPos(), true, discountMod, guildBank); + _player->DurabilityRepair(item->GetPos(), true, discountMod, guildBank != 0); } else { TC_LOG_DEBUG("network", "ITEM: Repair all items, npcGUID = %u", GUID_LOPART(npcGUID)); - _player->DurabilityRepairAll(true, discountMod, guildBank); + _player->DurabilityRepairAll(true, discountMod, guildBank != 0); } } diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index 3cc445ff81b..9346e982bd2 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -735,11 +735,11 @@ void WorldSession::HandlePetSpellAutocastOpcode(WorldPacket& recvPacket) } if (pet->IsPet()) - ((Pet*)pet)->ToggleAutocast(spellInfo, state); + ((Pet*)pet)->ToggleAutocast(spellInfo, state != 0); else - pet->GetCharmInfo()->ToggleCreatureAutocast(spellInfo, state); + pet->GetCharmInfo()->ToggleCreatureAutocast(spellInfo, state != 0); - charmInfo->SetSpellAutocast(spellInfo, state); + charmInfo->SetSpellAutocast(spellInfo, state != 0); } void WorldSession::HandlePetCastSpellOpcode(WorldPacket& recvPacket) diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index bfb38a31248..fbc33418e47 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -2195,13 +2195,13 @@ inline bool IsOutdoorWMO(uint32 mogpFlags, int32 /*adtId*/, int32 /*rootId*/, in return false; } - outdoor = mogpFlags&0x8; + outdoor = (mogpFlags & 0x8) != 0; if (wmoEntry) { if (wmoEntry->Flags & 4) return true; - if ((wmoEntry->Flags & 2)!=0) + if (wmoEntry->Flags & 2) outdoor = false; } return outdoor; @@ -2442,12 +2442,12 @@ bool Map::IsInWater(float x, float y, float pZ, LiquidData* data) const { LiquidData liquid_status; LiquidData* liquid_ptr = data ? data : &liquid_status; - return getLiquidStatus(x, y, pZ, MAP_ALL_LIQUIDS, liquid_ptr) & (LIQUID_MAP_IN_WATER | LIQUID_MAP_UNDER_WATER); + return (getLiquidStatus(x, y, pZ, MAP_ALL_LIQUIDS, liquid_ptr) & (LIQUID_MAP_IN_WATER | LIQUID_MAP_UNDER_WATER)) != 0; } bool Map::IsUnderWater(float x, float y, float z) const { - return getLiquidStatus(x, y, z, MAP_LIQUID_TYPE_WATER|MAP_LIQUID_TYPE_OCEAN) & LIQUID_MAP_UNDER_WATER; + return (getLiquidStatus(x, y, z, MAP_LIQUID_TYPE_WATER | MAP_LIQUID_TYPE_OCEAN) & LIQUID_MAP_UNDER_WATER) != 0; } bool Map::CheckGridIntegrity(Creature* c, bool moved) const diff --git a/src/server/game/Movement/PathGenerator.cpp b/src/server/game/Movement/PathGenerator.cpp index f2e1bb518d4..cbf88b68028 100644 --- a/src/server/game/Movement/PathGenerator.cpp +++ b/src/server/game/Movement/PathGenerator.cpp @@ -793,8 +793,8 @@ dtStatus PathGenerator::FindSmoothPath(float const* startPos, float const* endPo if (!GetSteerTarget(iterPos, targetPos, SMOOTH_PATH_SLOP, polys, npolys, steerPos, steerPosFlag, steerPosRef)) break; - bool endOfPath = (steerPosFlag & DT_STRAIGHTPATH_END); - bool offMeshConnection = (steerPosFlag & DT_STRAIGHTPATH_OFFMESH_CONNECTION); + bool endOfPath = (steerPosFlag & DT_STRAIGHTPATH_END) != 0; + bool offMeshConnection = (steerPosFlag & DT_STRAIGHTPATH_OFFMESH_CONNECTION) != 0; // Find movement delta. float delta[VERTEX_SIZE]; diff --git a/src/server/game/Movement/Spline/MoveSplineFlag.h b/src/server/game/Movement/Spline/MoveSplineFlag.h index 2cac9034c84..62fe808b6f5 100644 --- a/src/server/game/Movement/Spline/MoveSplineFlag.h +++ b/src/server/game/Movement/Spline/MoveSplineFlag.h @@ -83,9 +83,9 @@ namespace Movement // Constant interface - bool isSmooth() const { return raw() & Mask_CatmullRom; } + bool isSmooth() const { return (raw() & Mask_CatmullRom) != 0; } bool isLinear() const { return !isSmooth(); } - bool isFacing() const { return raw() & Mask_Final_Facing; } + bool isFacing() const { return (raw() & Mask_Final_Facing) != 0; } uint8 getAnimationId() const { return animId; } bool hasAllFlags(uint32 f) const { return (raw() & f) == f; } diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp index 099275ba8dc..a26b14af4b7 100644 --- a/src/server/game/Quests/QuestDef.cpp +++ b/src/server/game/Quests/QuestDef.cpp @@ -213,12 +213,12 @@ uint32 Quest::GetRewMoneyMaxLevel() const bool Quest::IsAutoAccept() const { - return sWorld->getBoolConfig(CONFIG_QUEST_IGNORE_AUTO_ACCEPT) ? false : (Flags & QUEST_FLAGS_AUTO_ACCEPT); + return !sWorld->getBoolConfig(CONFIG_QUEST_IGNORE_AUTO_ACCEPT) && HasFlag(QUEST_FLAGS_AUTO_ACCEPT); } bool Quest::IsAutoComplete() const { - return sWorld->getBoolConfig(CONFIG_QUEST_IGNORE_AUTO_COMPLETE) ? false : (Method == 0 || HasFlag(QUEST_FLAGS_AUTOCOMPLETE)); + return !sWorld->getBoolConfig(CONFIG_QUEST_IGNORE_AUTO_COMPLETE) && (Method == 0 || HasFlag(QUEST_FLAGS_AUTOCOMPLETE)); } bool Quest::IsRaidQuest(Difficulty difficulty) const diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h index 995396c37f5..350ef104ed4 100644 --- a/src/server/game/Quests/QuestDef.h +++ b/src/server/game/Quests/QuestDef.h @@ -262,14 +262,14 @@ class Quest bool IsAutoAccept() const; bool IsAutoComplete() const; uint32 GetFlags() const { return Flags; } - bool IsDaily() const { return Flags & QUEST_FLAGS_DAILY; } - bool IsWeekly() const { return Flags & QUEST_FLAGS_WEEKLY; } - bool IsMonthly() const { return SpecialFlags & QUEST_SPECIAL_FLAGS_MONTHLY; } + bool IsDaily() const { return (Flags & QUEST_FLAGS_DAILY) != 0; } + bool IsWeekly() const { return (Flags & QUEST_FLAGS_WEEKLY) != 0; } + bool IsMonthly() const { return (SpecialFlags & QUEST_SPECIAL_FLAGS_MONTHLY) != 0; } bool IsSeasonal() const { return (ZoneOrSort == -QUEST_SORT_SEASONAL || ZoneOrSort == -QUEST_SORT_SPECIAL || ZoneOrSort == -QUEST_SORT_LUNAR_FESTIVAL || ZoneOrSort == -QUEST_SORT_MIDSUMMER || ZoneOrSort == -QUEST_SORT_BREWFEST || ZoneOrSort == -QUEST_SORT_LOVE_IS_IN_THE_AIR || ZoneOrSort == -QUEST_SORT_NOBLEGARDEN) && !IsRepeatable(); } - bool IsDailyOrWeekly() const { return Flags & (QUEST_FLAGS_DAILY | QUEST_FLAGS_WEEKLY); } + bool IsDailyOrWeekly() const { return (Flags & (QUEST_FLAGS_DAILY | QUEST_FLAGS_WEEKLY)) != 0; } bool IsRaidQuest(Difficulty difficulty) const; bool IsAllowedInRaid(Difficulty difficulty) const; - bool IsDFQuest() const { return SpecialFlags & QUEST_SPECIAL_FLAGS_DF_QUEST; } + bool IsDFQuest() const { return (SpecialFlags & QUEST_SPECIAL_FLAGS_DF_QUEST) != 0; } uint32 CalculateHonorGain(uint8 level) const; // multiple values diff --git a/src/server/game/Reputation/ReputationMgr.cpp b/src/server/game/Reputation/ReputationMgr.cpp index 46b73e74068..f19d6d754cf 100644 --- a/src/server/game/Reputation/ReputationMgr.cpp +++ b/src/server/game/Reputation/ReputationMgr.cpp @@ -59,7 +59,7 @@ bool ReputationMgr::IsAtWar(FactionEntry const* factionEntry) const return false; if (FactionState const* factionState = GetState(factionEntry)) - return (factionState->Flags & FACTION_FLAG_AT_WAR); + return (factionState->Flags & FACTION_FLAG_AT_WAR) != 0; return false; } diff --git a/src/server/game/Scripting/MapScripts.cpp b/src/server/game/Scripting/MapScripts.cpp index 58ad725d570..7c82b806cf8 100644 --- a/src/server/game/Scripting/MapScripts.cpp +++ b/src/server/game/Scripting/MapScripts.cpp @@ -806,7 +806,7 @@ void Map::ScriptsProcess() if (!sWaypointMgr->GetPath(step.script->LoadPath.PathID)) TC_LOG_ERROR("scripts", "%s source object has an invalid path (%u), skipping.", step.script->GetDebugInfo().c_str(), step.script->LoadPath.PathID); else - unit->GetMotionMaster()->MovePath(step.script->LoadPath.PathID, step.script->LoadPath.IsRepeatable); + unit->GetMotionMaster()->MovePath(step.script->LoadPath.PathID, step.script->LoadPath.IsRepeatable != 0); } break; diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 75dbd457b91..851d992d857 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -1036,7 +1036,7 @@ void Aura::SetLoadedState(int32 maxduration, int32 duration, int32 charges, uint if (m_effects[i]) { m_effects[i]->SetAmount(amount[i]); - m_effects[i]->SetCanBeRecalculated(recalculateMask & (1<SetCanBeRecalculated((recalculateMask & (1 << i)) != 0); m_effects[i]->CalculatePeriodic(caster, false, true); m_effects[i]->CalculateSpellMod(); m_effects[i]->RecalculateAmount(caster); diff --git a/src/server/game/Spells/Auras/SpellAuras.h b/src/server/game/Spells/Auras/SpellAuras.h index 8c426ea2175..19c77c2ac7e 100644 --- a/src/server/game/Spells/Auras/SpellAuras.h +++ b/src/server/game/Spells/Auras/SpellAuras.h @@ -67,9 +67,9 @@ class AuraApplication uint8 GetSlot() const { return _slot; } uint8 GetFlags() const { return _flags; } uint8 GetEffectMask() const { return _flags & (AFLAG_EFF_INDEX_0 | AFLAG_EFF_INDEX_1 | AFLAG_EFF_INDEX_2); } - bool HasEffect(uint8 effect) const { ASSERT(effect < MAX_SPELL_EFFECTS); return _flags & (1<GetDiminishing(m_diminishGroup); @@ -5516,7 +5516,7 @@ SpellCastResult Spell::CheckCasterAuras() const mechanic_immune = IMMUNE_TO_MOVEMENT_IMPAIRMENT_AND_LOSS_CONTROL_MASK; } - bool usableInStun = m_spellInfo->AttributesEx5 & SPELL_ATTR5_USABLE_WHILE_STUNNED; + bool usableInStun = (m_spellInfo->AttributesEx5 & SPELL_ATTR5_USABLE_WHILE_STUNNED) != 0; // Glyph of Pain Suppression // there is no other way to handle it @@ -6472,7 +6472,7 @@ bool Spell::CheckEffectTarget(Unit const* target, uint32 eff) const bool Spell::IsNextMeleeSwingSpell() const { - return m_spellInfo->Attributes & SPELL_ATTR0_ON_NEXT_SWING; + return (m_spellInfo->Attributes & SPELL_ATTR0_ON_NEXT_SWING) != 0; } bool Spell::IsAutoActionResetSpell() const @@ -6651,7 +6651,7 @@ void Spell::HandleLaunchPhase() if (m_applyMultiplierMask & (1 << i)) multiplier[i] = m_spellInfo->Effects[i].CalcDamageMultiplier(m_originalCaster, this); - bool usesAmmo = m_spellInfo->AttributesCu & SPELL_ATTR0_CU_DIRECT_DAMAGE; + bool usesAmmo = (m_spellInfo->AttributesCu & SPELL_ATTR0_CU_DIRECT_DAMAGE) != 0; Unit::AuraEffectList const& Auras = m_caster->GetAuraEffectsByType(SPELL_AURA_ABILITY_CONSUME_NO_AMMO); for (Unit::AuraEffectList::const_iterator j = Auras.begin(); j != Auras.end(); ++j) { diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 584c20fdfb3..9c4891b95f4 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -150,8 +150,8 @@ class SpellCastTargets void ModDst(SpellDestination const& spellDest); void RemoveDst(); - bool HasSrc() const { return GetTargetMask() & TARGET_FLAG_SOURCE_LOCATION; } - bool HasDst() const { return GetTargetMask() & TARGET_FLAG_DEST_LOCATION; } + bool HasSrc() const { return (GetTargetMask() & TARGET_FLAG_SOURCE_LOCATION) != 0; } + bool HasDst() const { return (GetTargetMask() & TARGET_FLAG_DEST_LOCATION) != 0; } bool HasTraj() const { return m_speed != 0; } float GetElevation() const { return m_elevation; } @@ -466,7 +466,7 @@ class Spell void SetAutoRepeat(bool rep) { m_autoRepeat = rep; } void ReSetTimer() { m_timer = m_casttime > 0 ? m_casttime : 0; } bool IsNextMeleeSwingSpell() const; - bool IsTriggered() const { return _triggeredCastFlags & TRIGGERED_FULL_MASK; } + bool IsTriggered() const { return (_triggeredCastFlags & TRIGGERED_FULL_MASK) != 0; } bool IsChannelActive() const { return m_caster->GetUInt32Value(UNIT_CHANNEL_SPELL) != 0; } bool IsAutoActionResetSpell() const; diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 4c0d5770cea..66fca8303dc 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -5341,7 +5341,7 @@ void Spell::EffectStealBeneficialBuff(SpellEffIndex effIndex) // The charges / stack amounts don't count towards the total number of auras that can be dispelled. // Ie: A dispel on a target with 5 stacks of Winters Chill and a Polymorph has 1 / (1 + 1) -> 50% chance to dispell // Polymorph instead of 1 / (5 + 1) -> 16%. - bool dispel_charges = aura->GetSpellInfo()->AttributesEx7 & SPELL_ATTR7_DISPEL_CHARGES; + bool dispel_charges = (aura->GetSpellInfo()->AttributesEx7 & SPELL_ATTR7_DISPEL_CHARGES) != 0; uint8 charges = dispel_charges ? aura->GetCharges() : aura->GetStackAmount(); if (charges > 0) steal_list.push_back(std::make_pair(aura, charges)); diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 8034002a470..8d3b37cc1d5 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -1007,7 +1007,7 @@ bool SpellInfo::IsTargetingArea() const bool SpellInfo::NeedsExplicitUnitTarget() const { - return GetExplicitTargetMask() & TARGET_FLAG_UNIT_MASK; + return (GetExplicitTargetMask() & TARGET_FLAG_UNIT_MASK) != 0; } bool SpellInfo::NeedsToBeTriggeredByCaster(SpellInfo const* triggeringSpell) const @@ -1048,7 +1048,7 @@ bool SpellInfo::NeedsToBeTriggeredByCaster(SpellInfo const* triggeringSpell) con bool SpellInfo::IsPassive() const { - return Attributes & SPELL_ATTR0_PASSIVE; + return (Attributes & SPELL_ATTR0_PASSIVE) != 0; } bool SpellInfo::IsAutocastable() const @@ -1116,12 +1116,12 @@ bool SpellInfo::IsCooldownStartedOnEvent() const bool SpellInfo::IsDeathPersistent() const { - return AttributesEx3 & SPELL_ATTR3_DEATH_PERSISTENT; + return (AttributesEx3 & SPELL_ATTR3_DEATH_PERSISTENT) != 0; } bool SpellInfo::IsRequiringDeadTarget() const { - return AttributesEx3 & SPELL_ATTR3_ONLY_TARGET_GHOSTS; + return (AttributesEx3 & SPELL_ATTR3_ONLY_TARGET_GHOSTS) != 0; } bool SpellInfo::IsAllowingDeadTarget() const @@ -1155,12 +1155,12 @@ bool SpellInfo::IsPositiveEffect(uint8 effIndex) const bool SpellInfo::IsChanneled() const { - return (AttributesEx & (SPELL_ATTR1_CHANNELED_1 | SPELL_ATTR1_CHANNELED_2)); + return (AttributesEx & (SPELL_ATTR1_CHANNELED_1 | SPELL_ATTR1_CHANNELED_2)) != 0; } bool SpellInfo::NeedsComboPoints() const { - return (AttributesEx & (SPELL_ATTR1_REQ_COMBO_POINTS1 | SPELL_ATTR1_REQ_COMBO_POINTS2)); + return (AttributesEx & (SPELL_ATTR1_REQ_COMBO_POINTS1 | SPELL_ATTR1_REQ_COMBO_POINTS2)) != 0; } bool SpellInfo::IsBreakingStealth() const @@ -1176,7 +1176,7 @@ bool SpellInfo::IsRangedWeaponSpell() const bool SpellInfo::IsAutoRepeatRangedSpell() const { - return AttributesEx2 & SPELL_ATTR2_AUTOREPEAT_FLAG; + return (AttributesEx2 & SPELL_ATTR2_AUTOREPEAT_FLAG) != 0; } bool SpellInfo::IsAffectedBySpellMods() const diff --git a/src/server/game/Spells/SpellScript.cpp b/src/server/game/Spells/SpellScript.cpp index c0bcd477e5b..7132e0583e8 100644 --- a/src/server/game/Spells/SpellScript.cpp +++ b/src/server/game/Spells/SpellScript.cpp @@ -87,7 +87,7 @@ uint8 _SpellScript::EffectHook::GetAffectedEffectsMask(SpellInfo const* spellEnt bool _SpellScript::EffectHook::IsEffectAffected(SpellInfo const* spellEntry, uint8 effIndex) { - return GetAffectedEffectsMask(spellEntry) & 1<GetAchievementCriteria(criteria); + return sAchievementMgr->GetAchievementCriteria(criteria) != nullptr; } void CharacterDatabaseCleaner::CleanCharacterAchievementProgress() @@ -118,7 +118,7 @@ void CharacterDatabaseCleaner::CleanCharacterAchievementProgress() bool CharacterDatabaseCleaner::SkillCheck(uint32 skill) { - return sSkillLineStore.LookupEntry(skill); + return sSkillLineStore.LookupEntry(skill) != nullptr; } void CharacterDatabaseCleaner::CleanCharacterSkills() @@ -142,7 +142,7 @@ bool CharacterDatabaseCleaner::TalentCheck(uint32 talent_id) if (!talentInfo) return false; - return sTalentTabStore.LookupEntry(talentInfo->TalentTab); + return sTalentTabStore.LookupEntry(talentInfo->TalentTab) != nullptr; } void CharacterDatabaseCleaner::CleanCharacterTalent() diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 631c4e61d5f..807e1684c47 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -957,7 +957,7 @@ void World::LoadConfigSettings(bool reload) m_int_configs[CONFIG_CHATFLOOD_MESSAGE_DELAY] = sConfigMgr->GetIntDefault("ChatFlood.MessageDelay", 1); m_int_configs[CONFIG_CHATFLOOD_MUTE_TIME] = sConfigMgr->GetIntDefault("ChatFlood.MuteTime", 10); - m_bool_configs[CONFIG_EVENT_ANNOUNCE] = sConfigMgr->GetIntDefault("Event.Announce", false); + m_bool_configs[CONFIG_EVENT_ANNOUNCE] = sConfigMgr->GetBoolDefault("Event.Announce", false); m_float_configs[CONFIG_CREATURE_FAMILY_FLEE_ASSISTANCE_RADIUS] = sConfigMgr->GetFloatDefault("CreatureFamilyFleeAssistanceRadius", 30.0f); m_float_configs[CONFIG_CREATURE_FAMILY_ASSISTANCE_RADIUS] = sConfigMgr->GetFloatDefault("CreatureFamilyAssistanceRadius", 10.0f); @@ -1316,7 +1316,7 @@ void World::SetInitialWorldSettings() ///- Update the realm entry in the database with the realm type from the config file //No SQL injection as values are treated as integers - + // not send custom type REALM_FFA_PVP to realm list uint32 server_type = IsFFAPvPRealm() ? uint32(REALM_TYPE_PVP) : getIntConfig(CONFIG_GAME_TYPE); uint32 realm_zone = getIntConfig(CONFIG_REALM_ZONE); diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index d0050a0d4fd..1dc0cdef330 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -909,7 +909,7 @@ public: handler->GetSession()->GetPlayer()->GetClosePoint(x, y, z, handler->GetSession()->GetPlayer()->GetObjectSize()); if (!i) - return handler->GetSession()->GetPlayer()->SummonCreature(entry, x, y, z, o); + return handler->GetSession()->GetPlayer()->SummonCreature(entry, x, y, z, o) != nullptr; uint32 id = (uint32)atoi(i); @@ -1108,28 +1108,28 @@ public: uint64 guid = target->GetGUID(); - uint32 opcode = (uint32)atoi(x); - if (opcode >= target->GetValuesCount()) + uint32 field = (uint32)atoi(x); + if (field >= target->GetValuesCount()) { - handler->PSendSysMessage(LANG_TOO_BIG_INDEX, opcode, GUID_LOPART(guid), target->GetValuesCount()); + handler->PSendSysMessage(LANG_TOO_BIG_INDEX, field, GUID_LOPART(guid), target->GetValuesCount()); return false; } bool isInt32 = true; if (z) - isInt32 = (bool)atoi(z); + isInt32 = atoi(z) != 0; if (isInt32) { uint32 value = (uint32)atoi(y); - target->SetUInt32Value(opcode, value); - handler->PSendSysMessage(LANG_SET_UINT_FIELD, GUID_LOPART(guid), opcode, value); + target->SetUInt32Value(field, value); + handler->PSendSysMessage(LANG_SET_UINT_FIELD, GUID_LOPART(guid), field, value); } else { float value = (float)atof(y); - target->SetFloatValue(opcode, value); - handler->PSendSysMessage(LANG_SET_FLOAT_FIELD, GUID_LOPART(guid), opcode, value); + target->SetFloatValue(field, value); + handler->PSendSysMessage(LANG_SET_FLOAT_FIELD, GUID_LOPART(guid), field, value); } return true; @@ -1165,7 +1165,7 @@ public: bool isInt32 = true; if (z) - isInt32 = (bool)atoi(z); + isInt32 = atoi(z) != 0; if (isInt32) { @@ -1316,15 +1316,15 @@ public: MOVEMENTFLAG_WALKING | MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_SPLINE_ENABLED; - bool unhandledFlag = (moveFlags ^ target->GetUnitMovementFlags()) & ~FlagsWithHandlers; + bool unhandledFlag = ((moveFlags ^ target->GetUnitMovementFlags()) & ~FlagsWithHandlers) != 0; - target->SetWalk(moveFlags & MOVEMENTFLAG_WALKING); - target->SetDisableGravity(moveFlags & MOVEMENTFLAG_DISABLE_GRAVITY); - target->SetSwim(moveFlags & MOVEMENTFLAG_SWIMMING); - target->SetCanFly(moveFlags & MOVEMENTFLAG_CAN_FLY); - target->SetWaterWalking(moveFlags & MOVEMENTFLAG_WATERWALKING); - target->SetFeatherFall(moveFlags & MOVEMENTFLAG_FALLING_SLOW); - target->SetHover(moveFlags & MOVEMENTFLAG_HOVER); + target->SetWalk((moveFlags & MOVEMENTFLAG_WALKING) != 0); + target->SetDisableGravity((moveFlags & MOVEMENTFLAG_DISABLE_GRAVITY) != 0); + target->SetSwim((moveFlags & MOVEMENTFLAG_SWIMMING) != 0); + target->SetCanFly((moveFlags & MOVEMENTFLAG_CAN_FLY) != 0); + target->SetWaterWalking((moveFlags & MOVEMENTFLAG_WATERWALKING) != 0); + target->SetFeatherFall((moveFlags & MOVEMENTFLAG_FALLING_SLOW) != 0); + target->SetHover((moveFlags & MOVEMENTFLAG_HOVER) != 0); if (moveFlags & (MOVEMENTFLAG_DISABLE_GRAVITY | MOVEMENTFLAG_CAN_FLY)) moveFlags &= ~MOVEMENTFLAG_FALLING; diff --git a/src/server/scripts/Commands/cs_lfg.cpp b/src/server/scripts/Commands/cs_lfg.cpp index 2bb2ff24aae..2f6afd29e9f 100644 --- a/src/server/scripts/Commands/cs_lfg.cpp +++ b/src/server/scripts/Commands/cs_lfg.cpp @@ -118,7 +118,7 @@ public: static bool HandleLfgQueueInfoCommand(ChatHandler* handler, char const* args) { - handler->SendSysMessage(sLFGMgr->DumpQueueInfo(*args).c_str()); + handler->SendSysMessage(sLFGMgr->DumpQueueInfo(atoi(args) != 0).c_str()); return true; } diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 76d5e0ebdaf..179dc6cd629 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -1341,7 +1341,7 @@ public: return false; } - bool targetHasSkill = target->GetSkillValue(skill); + bool targetHasSkill = target->GetSkillValue(skill) != 0; // If our target does not yet have the skill they are trying to add to them, the chosen level also becomes // the max level of the new profession. diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp index 1f8ccfbd5d8..950d3c3d8f6 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp @@ -84,8 +84,8 @@ class instance_magisters_terrace : public InstanceMapScript DelrissaDeathCount = 0; break; case DATA_KAELTHAS_STATUES: - HandleGameObject(KaelStatue[0], data); - HandleGameObject(KaelStatue[1], data); + HandleGameObject(KaelStatue[0], data != 0); + HandleGameObject(KaelStatue[1], data != 0); break; default: break; diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp index 565d40a802e..849b7014d3a 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp @@ -1171,7 +1171,7 @@ public: c = 0; mx = ShieldOrbLocations[0][0]; my = ShieldOrbLocations[0][1]; - bClockwise = urand(0, 1); + bClockwise = roll_chance_i(50); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp index 2caa16fc19d..e332e7959ce 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp @@ -192,7 +192,7 @@ struct dummy_dragonAI : public ScriptedAI void SetData(uint32 type, uint32 value) override { if (type == DATA_CAN_LOOT) - _canLoot = value; + _canLoot = value != 0; } void MovementInform(uint32 type, uint32 pointId) override diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp index 2e24398d49a..7dd935e86f0 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp @@ -674,7 +674,7 @@ public: if (uiHealingWaveTimer <= uiDiff) { - bool bChance = urand(0, 1); + bool bChance = roll_chance_i(50); if (!bChance) { diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp index 4303026ba64..b40cfe881dc 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp @@ -1316,7 +1316,7 @@ class npc_the_lich_king_escape_hor : public CreatureScript { if (Unit* victim = me->SelectVictim()) AttackStart(victim); - return me->GetVictim(); + return me->GetVictim() != nullptr; } else if (me->getThreatManager().getThreatList().size() < 2 && me->HasAura(SPELL_REMORSELESS_WINTER)) { diff --git a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp index b02a319abdc..68929d2aa01 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp @@ -205,7 +205,7 @@ class boss_drakkari_colossus : public CreatureScript void SetData(uint32 type, uint32 data) override { if (type == DATA_INTRO_DONE) - introDone = data; + introDone = data != 0; } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp index a8e539b02fd..98c8481b5ae 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp @@ -201,7 +201,7 @@ public: bool WasWrapped(uint64 guid) { - return lWrappedPlayers.count(guid); + return lWrappedPlayers.count(guid) != 0; } }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp index c0c909e4878..a0f6039d703 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp @@ -626,7 +626,8 @@ protected: { if (Unit* victim = me->SelectVictim()) AttackStart(victim); - return me->GetVictim(); + + return me->GetVictim() != nullptr; } else if (me->getThreatManager().isThreatListEmpty()) { @@ -1872,7 +1873,7 @@ class spell_igb_rocket_pack_useable : public SpellScriptLoader bool Load() { - return GetOwner()->GetInstanceScript(); + return GetOwner()->GetInstanceScript() != nullptr; } bool CheckAreaTarget(Unit* target) @@ -2328,7 +2329,7 @@ class spell_igb_gunship_fall_teleport : public SpellScriptLoader bool Load() { - return GetCaster()->GetInstanceScript(); + return GetCaster()->GetInstanceScript() != nullptr; } void SelectTransport(WorldObject*& target) @@ -2417,7 +2418,7 @@ class spell_igb_teleport_players_on_victory : public SpellScriptLoader bool Load() override { - return GetCaster()->GetInstanceScript(); + return GetCaster()->GetInstanceScript() != nullptr; } void FilterTargets(std::list& targets) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index 3bf8fd8d305..f60a7ba278b 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -558,7 +558,7 @@ class boss_professor_putricide : public CreatureScript void SetData(uint32 id, uint32 data) override { if (id == DATA_EXPERIMENT_STAGE) - _experimentState = bool(data); + _experimentState = data != 0; } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp index d973ce867f2..554c7957d2a 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp @@ -522,7 +522,7 @@ class npc_gothik_minion : public CreatureScript void DoAction(int32 param) override { - gateClose = param; + gateClose = param != 0; } void DamageTaken(Unit* attacker, uint32 &damage) override diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp index 52cda5148cf..071cf5bf14a 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp @@ -1368,7 +1368,7 @@ class achievement_unbroken : public AchievementCriteriaScript { if (target) if (InstanceScript* instance = target->GetInstanceScript()) - return instance->GetData(DATA_UNBROKEN); + return instance->GetData(DATA_UNBROKEN) != 0; return false; } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp index 6be3586de28..28a87b37f5b 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp @@ -477,7 +477,7 @@ class achievement_ignis_shattered : public AchievementCriteriaScript bool OnCheck(Player* /*source*/, Unit* target) override { if (target && target->IsAIEnabled) - return target->GetAI()->GetData(DATA_SHATTERED); + return target->GetAI()->GetData(DATA_SHATTERED) != 0; return false; } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp index e0d46ad21ba..ed909d459ca 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp @@ -918,7 +918,7 @@ class npc_darkrune_guardian : public CreatureScript void SetData(uint32 type, uint32 value) override { if (type == DATA_IRON_DWARF_MEDIUM_RARE) - killedByBreath = value; + killedByBreath = value != 0; } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp index 87192f39a5c..8520e317ba3 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp @@ -1066,7 +1066,7 @@ class achievement_heartbreaker : public AchievementCriteriaScript if (!target || !target->GetAI()) return false; - return target->GetAI()->GetData(DATA_HARD_MODE); + return target->GetAI()->GetData(DATA_HARD_MODE) != 0; } }; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp index 9ce5733ab0b..4abf46be448 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp @@ -1137,7 +1137,7 @@ class npc_ominous_cloud : public CreatureScript void DoAction(int32 action) override { Movement::MoveSplineInit init(me); - FillCirclePath(YoggSaronSpawnPos, me->GetDistance2d(YoggSaronSpawnPos.GetPositionX(), YoggSaronSpawnPos.GetPositionY()), me->GetPositionZ(), init.Path(), action); + FillCirclePath(YoggSaronSpawnPos, me->GetDistance2d(YoggSaronSpawnPos.GetPositionX(), YoggSaronSpawnPos.GetPositionY()), me->GetPositionZ(), init.Path(), action != 0); init.SetWalk(true); init.SetCyclic(); init.Launch(); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp index 6437a76ee95..6aa753eac98 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp @@ -773,7 +773,7 @@ class instance_ulduar : public InstanceMapScript } break; case DATA_UNBROKEN: - Unbroken = bool(data); + Unbroken = data != 0; break; case DATA_ILLUSION: illusion = data; diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp index 67bf6214374..7a1566df71d 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp @@ -433,7 +433,7 @@ class spell_ingvar_woe_strike : public SpellScriptLoader bool CheckProc(ProcEventInfo& eventInfo) { - return eventInfo.GetHealInfo()->GetHeal(); + return eventInfo.GetHealInfo()->GetHeal() != 0; } void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp index 890c39fa775..eb60444f9c2 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp @@ -157,7 +157,7 @@ class boss_keleseth : public CreatureScript void SetData(uint32 data, uint32 value) override { if (data == DATA_ON_THE_ROCKS) - onTheRocks = value; + onTheRocks = value != 0; } uint32 GetData(uint32 data) const override diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp index a7faf776721..cfee2e0f187 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -814,7 +814,7 @@ class spell_close_rift : public SpellScriptLoader bool Validate(SpellInfo const* /*spell*/) override { - return sSpellMgr->GetSpellInfo(SPELL_DESPAWN_RIFT); + return sSpellMgr->GetSpellInfo(SPELL_DESPAWN_RIFT) != nullptr; } void HandlePeriodic(AuraEffect const* /* aurEff */) diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp index e3246a5f55f..687eb3f388d 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp @@ -111,20 +111,20 @@ void OPvPCapturePointEP_EWT::SendChangePhase() void OPvPCapturePointEP_EWT::FillInitialWorldStates(WorldPacket &data) { - data << EP_EWT_A << uint32(bool(m_TowerState & EP_TS_A)); - data << EP_EWT_H << uint32(bool(m_TowerState & EP_TS_H)); - data << EP_EWT_N_A << uint32(bool(m_TowerState & EP_TS_N_A)); - data << EP_EWT_N_H << uint32(bool(m_TowerState & EP_TS_N_H)); - data << EP_EWT_N << uint32(bool(m_TowerState & EP_TS_N)); + data << EP_EWT_A << uint32((m_TowerState & EP_TS_A) != 0); + data << EP_EWT_H << uint32((m_TowerState & EP_TS_H) != 0); + data << EP_EWT_N_A << uint32((m_TowerState & EP_TS_N_A) != 0); + data << EP_EWT_N_H << uint32((m_TowerState & EP_TS_N_H) != 0); + data << EP_EWT_N << uint32((m_TowerState & EP_TS_N) != 0); } void OPvPCapturePointEP_EWT::UpdateTowerState() { - m_PvP->SendUpdateWorldState(EP_EWT_A, bool(m_TowerState & EP_TS_A)); - m_PvP->SendUpdateWorldState(EP_EWT_H, bool(m_TowerState & EP_TS_H)); - m_PvP->SendUpdateWorldState(EP_EWT_N_A, bool(m_TowerState & EP_TS_N_A)); - m_PvP->SendUpdateWorldState(EP_EWT_N_H, bool(m_TowerState & EP_TS_N_H)); - m_PvP->SendUpdateWorldState(EP_EWT_N, bool(m_TowerState & EP_TS_N)); + m_PvP->SendUpdateWorldState(EP_EWT_A, (m_TowerState & EP_TS_A) != 0); + m_PvP->SendUpdateWorldState(EP_EWT_H, (m_TowerState & EP_TS_H) != 0); + m_PvP->SendUpdateWorldState(EP_EWT_N_A, (m_TowerState & EP_TS_N_A) != 0); + m_PvP->SendUpdateWorldState(EP_EWT_N_H, (m_TowerState & EP_TS_N_H) != 0); + m_PvP->SendUpdateWorldState(EP_EWT_N, (m_TowerState & EP_TS_N) != 0); } bool OPvPCapturePointEP_EWT::HandlePlayerEnter(Player* player) @@ -259,20 +259,20 @@ void OPvPCapturePointEP_NPT::SendChangePhase() void OPvPCapturePointEP_NPT::FillInitialWorldStates(WorldPacket &data) { - data << EP_NPT_A << uint32(bool(m_TowerState & EP_TS_A)); - data << EP_NPT_H << uint32(bool(m_TowerState & EP_TS_H)); - data << EP_NPT_N_A << uint32(bool(m_TowerState & EP_TS_N_A)); - data << EP_NPT_N_H << uint32(bool(m_TowerState & EP_TS_N_H)); - data << EP_NPT_N << uint32(bool(m_TowerState & EP_TS_N)); + data << EP_NPT_A << uint32((m_TowerState & EP_TS_A) != 0); + data << EP_NPT_H << uint32((m_TowerState & EP_TS_H) != 0); + data << EP_NPT_N_A << uint32((m_TowerState & EP_TS_N_A) != 0); + data << EP_NPT_N_H << uint32((m_TowerState & EP_TS_N_H) != 0); + data << EP_NPT_N << uint32((m_TowerState & EP_TS_N) != 0); } void OPvPCapturePointEP_NPT::UpdateTowerState() { - m_PvP->SendUpdateWorldState(EP_NPT_A, bool(m_TowerState & EP_TS_A)); - m_PvP->SendUpdateWorldState(EP_NPT_H, bool(m_TowerState & EP_TS_H)); - m_PvP->SendUpdateWorldState(EP_NPT_N_A, bool(m_TowerState & EP_TS_N_A)); - m_PvP->SendUpdateWorldState(EP_NPT_N_H, bool(m_TowerState & EP_TS_N_H)); - m_PvP->SendUpdateWorldState(EP_NPT_N, bool(m_TowerState & EP_TS_N)); + m_PvP->SendUpdateWorldState(EP_NPT_A, (m_TowerState & EP_TS_A) != 0); + m_PvP->SendUpdateWorldState(EP_NPT_H, (m_TowerState & EP_TS_H) != 0); + m_PvP->SendUpdateWorldState(EP_NPT_N_A, (m_TowerState & EP_TS_N_A) != 0); + m_PvP->SendUpdateWorldState(EP_NPT_N_H, (m_TowerState & EP_TS_N_H) != 0); + m_PvP->SendUpdateWorldState(EP_NPT_N, (m_TowerState & EP_TS_N) != 0); } bool OPvPCapturePointEP_NPT::HandlePlayerEnter(Player* player) @@ -391,20 +391,20 @@ void OPvPCapturePointEP_CGT::SendChangePhase() void OPvPCapturePointEP_CGT::FillInitialWorldStates(WorldPacket &data) { - data << EP_CGT_A << uint32(bool(m_TowerState & EP_TS_A)); - data << EP_CGT_H << uint32(bool(m_TowerState & EP_TS_H)); - data << EP_CGT_N_A << uint32(bool(m_TowerState & EP_TS_N_A)); - data << EP_CGT_N_H << uint32(bool(m_TowerState & EP_TS_N_H)); - data << EP_CGT_N << uint32(bool(m_TowerState & EP_TS_N)); + data << EP_CGT_A << uint32((m_TowerState & EP_TS_A) != 0); + data << EP_CGT_H << uint32((m_TowerState & EP_TS_H) != 0); + data << EP_CGT_N_A << uint32((m_TowerState & EP_TS_N_A) != 0); + data << EP_CGT_N_H << uint32((m_TowerState & EP_TS_N_H) != 0); + data << EP_CGT_N << uint32((m_TowerState & EP_TS_N) != 0); } void OPvPCapturePointEP_CGT::UpdateTowerState() { - m_PvP->SendUpdateWorldState(EP_CGT_A, bool(m_TowerState & EP_TS_A)); - m_PvP->SendUpdateWorldState(EP_CGT_H, bool(m_TowerState & EP_TS_H)); - m_PvP->SendUpdateWorldState(EP_CGT_N_A, bool(m_TowerState & EP_TS_N_A)); - m_PvP->SendUpdateWorldState(EP_CGT_N_H, bool(m_TowerState & EP_TS_N_H)); - m_PvP->SendUpdateWorldState(EP_CGT_N, bool(m_TowerState & EP_TS_N)); + m_PvP->SendUpdateWorldState(EP_CGT_A, (m_TowerState & EP_TS_A) != 0); + m_PvP->SendUpdateWorldState(EP_CGT_H, (m_TowerState & EP_TS_H) != 0); + m_PvP->SendUpdateWorldState(EP_CGT_N_A, (m_TowerState & EP_TS_N_A) != 0); + m_PvP->SendUpdateWorldState(EP_CGT_N_H, (m_TowerState & EP_TS_N_H) != 0); + m_PvP->SendUpdateWorldState(EP_CGT_N, (m_TowerState & EP_TS_N) != 0); } bool OPvPCapturePointEP_CGT::HandlePlayerEnter(Player* player) @@ -530,20 +530,20 @@ void OPvPCapturePointEP_PWT::SendChangePhase() void OPvPCapturePointEP_PWT::FillInitialWorldStates(WorldPacket &data) { - data << EP_PWT_A << uint32(bool(m_TowerState & EP_TS_A)); - data << EP_PWT_H << uint32(bool(m_TowerState & EP_TS_H)); - data << EP_PWT_N_A << uint32(bool(m_TowerState & EP_TS_N_A)); - data << EP_PWT_N_H << uint32(bool(m_TowerState & EP_TS_N_H)); - data << EP_PWT_N << uint32(bool(m_TowerState & EP_TS_N)); + data << EP_PWT_A << uint32((m_TowerState & EP_TS_A) != 0); + data << EP_PWT_H << uint32((m_TowerState & EP_TS_H) != 0); + data << EP_PWT_N_A << uint32((m_TowerState & EP_TS_N_A) != 0); + data << EP_PWT_N_H << uint32((m_TowerState & EP_TS_N_H) != 0); + data << EP_PWT_N << uint32((m_TowerState & EP_TS_N) != 0); } void OPvPCapturePointEP_PWT::UpdateTowerState() { - m_PvP->SendUpdateWorldState(EP_PWT_A, bool(m_TowerState & EP_TS_A)); - m_PvP->SendUpdateWorldState(EP_PWT_H, bool(m_TowerState & EP_TS_H)); - m_PvP->SendUpdateWorldState(EP_PWT_N_A, bool(m_TowerState & EP_TS_N_A)); - m_PvP->SendUpdateWorldState(EP_PWT_N_H, bool(m_TowerState & EP_TS_N_H)); - m_PvP->SendUpdateWorldState(EP_PWT_N, bool(m_TowerState & EP_TS_N)); + m_PvP->SendUpdateWorldState(EP_PWT_A, (m_TowerState & EP_TS_A) != 0); + m_PvP->SendUpdateWorldState(EP_PWT_H, (m_TowerState & EP_TS_H) != 0); + m_PvP->SendUpdateWorldState(EP_PWT_N_A, (m_TowerState & EP_TS_N_A) != 0); + m_PvP->SendUpdateWorldState(EP_PWT_N_H, (m_TowerState & EP_TS_N_H) != 0); + m_PvP->SendUpdateWorldState(EP_PWT_N, (m_TowerState & EP_TS_N) != 0); } bool OPvPCapturePointEP_PWT::HandlePlayerEnter(Player* player) diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp index 08253022ec4..9008b0867d7 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp @@ -265,31 +265,31 @@ void OPvPCapturePointNA::FillInitialWorldStates(WorldPacket &data) data << NA_UI_TOWER_SLIDER_POS << uint32(50); data << NA_UI_TOWER_SLIDER_N << uint32(100); - data << NA_MAP_WYVERN_NORTH_NEU_H << uint32(bool(m_WyvernStateNorth & WYVERN_NEU_HORDE)); - data << NA_MAP_WYVERN_NORTH_NEU_A << uint32(bool(m_WyvernStateNorth & WYVERN_NEU_ALLIANCE)); - data << NA_MAP_WYVERN_NORTH_H << uint32(bool(m_WyvernStateNorth & WYVERN_HORDE)); - data << NA_MAP_WYVERN_NORTH_A << uint32(bool(m_WyvernStateNorth & WYVERN_ALLIANCE)); - - data << NA_MAP_WYVERN_SOUTH_NEU_H << uint32(bool(m_WyvernStateSouth & WYVERN_NEU_HORDE)); - data << NA_MAP_WYVERN_SOUTH_NEU_A << uint32(bool(m_WyvernStateSouth & WYVERN_NEU_ALLIANCE)); - data << NA_MAP_WYVERN_SOUTH_H << uint32(bool(m_WyvernStateSouth & WYVERN_HORDE)); - data << NA_MAP_WYVERN_SOUTH_A << uint32(bool(m_WyvernStateSouth & WYVERN_ALLIANCE)); - - data << NA_MAP_WYVERN_WEST_NEU_H << uint32(bool(m_WyvernStateWest & WYVERN_NEU_HORDE)); - data << NA_MAP_WYVERN_WEST_NEU_A << uint32(bool(m_WyvernStateWest & WYVERN_NEU_ALLIANCE)); - data << NA_MAP_WYVERN_WEST_H << uint32(bool(m_WyvernStateWest & WYVERN_HORDE)); - data << NA_MAP_WYVERN_WEST_A << uint32(bool(m_WyvernStateWest & WYVERN_ALLIANCE)); - - data << NA_MAP_WYVERN_EAST_NEU_H << uint32(bool(m_WyvernStateEast & WYVERN_NEU_HORDE)); - data << NA_MAP_WYVERN_EAST_NEU_A << uint32(bool(m_WyvernStateEast & WYVERN_NEU_ALLIANCE)); - data << NA_MAP_WYVERN_EAST_H << uint32(bool(m_WyvernStateEast & WYVERN_HORDE)); - data << NA_MAP_WYVERN_EAST_A << uint32(bool(m_WyvernStateEast & WYVERN_ALLIANCE)); - - data << NA_MAP_HALAA_NEUTRAL << uint32(bool(m_HalaaState & HALAA_N)); - data << NA_MAP_HALAA_NEU_A << uint32(bool(m_HalaaState & HALAA_N_A)); - data << NA_MAP_HALAA_NEU_H << uint32(bool(m_HalaaState & HALAA_N_H)); - data << NA_MAP_HALAA_HORDE << uint32(bool(m_HalaaState & HALAA_H)); - data << NA_MAP_HALAA_ALLIANCE << uint32(bool(m_HalaaState & HALAA_A)); + data << NA_MAP_WYVERN_NORTH_NEU_H << uint32((m_WyvernStateNorth & WYVERN_NEU_HORDE) != 0); + data << NA_MAP_WYVERN_NORTH_NEU_A << uint32((m_WyvernStateNorth & WYVERN_NEU_ALLIANCE) != 0); + data << NA_MAP_WYVERN_NORTH_H << uint32((m_WyvernStateNorth & WYVERN_HORDE) != 0); + data << NA_MAP_WYVERN_NORTH_A << uint32((m_WyvernStateNorth & WYVERN_ALLIANCE) != 0); + + data << NA_MAP_WYVERN_SOUTH_NEU_H << uint32((m_WyvernStateSouth & WYVERN_NEU_HORDE) != 0); + data << NA_MAP_WYVERN_SOUTH_NEU_A << uint32((m_WyvernStateSouth & WYVERN_NEU_ALLIANCE) != 0); + data << NA_MAP_WYVERN_SOUTH_H << uint32((m_WyvernStateSouth & WYVERN_HORDE) != 0); + data << NA_MAP_WYVERN_SOUTH_A << uint32((m_WyvernStateSouth & WYVERN_ALLIANCE) != 0); + + data << NA_MAP_WYVERN_WEST_NEU_H << uint32((m_WyvernStateWest & WYVERN_NEU_HORDE) != 0); + data << NA_MAP_WYVERN_WEST_NEU_A << uint32((m_WyvernStateWest & WYVERN_NEU_ALLIANCE) != 0); + data << NA_MAP_WYVERN_WEST_H << uint32((m_WyvernStateWest & WYVERN_HORDE) != 0); + data << NA_MAP_WYVERN_WEST_A << uint32((m_WyvernStateWest & WYVERN_ALLIANCE) != 0); + + data << NA_MAP_WYVERN_EAST_NEU_H << uint32((m_WyvernStateEast & WYVERN_NEU_HORDE) != 0); + data << NA_MAP_WYVERN_EAST_NEU_A << uint32((m_WyvernStateEast & WYVERN_NEU_ALLIANCE) != 0); + data << NA_MAP_WYVERN_EAST_H << uint32((m_WyvernStateEast & WYVERN_HORDE) != 0); + data << NA_MAP_WYVERN_EAST_A << uint32((m_WyvernStateEast & WYVERN_ALLIANCE) != 0); + + data << NA_MAP_HALAA_NEUTRAL << uint32((m_HalaaState & HALAA_N) != 0); + data << NA_MAP_HALAA_NEU_A << uint32((m_HalaaState & HALAA_N_A) != 0); + data << NA_MAP_HALAA_NEU_H << uint32((m_HalaaState & HALAA_N_H) != 0); + data << NA_MAP_HALAA_HORDE << uint32((m_HalaaState & HALAA_H) != 0); + data << NA_MAP_HALAA_ALLIANCE << uint32((m_HalaaState & HALAA_A) != 0); } void OutdoorPvPNA::SendRemoveWorldStates(Player* player) @@ -620,41 +620,41 @@ void OPvPCapturePointNA::SendChangePhase() void OPvPCapturePointNA::UpdateHalaaWorldState() { - m_PvP->SendUpdateWorldState(NA_MAP_HALAA_NEUTRAL, uint32(bool(m_HalaaState & HALAA_N))); - m_PvP->SendUpdateWorldState(NA_MAP_HALAA_NEU_A, uint32(bool(m_HalaaState & HALAA_N_A))); - m_PvP->SendUpdateWorldState(NA_MAP_HALAA_NEU_H, uint32(bool(m_HalaaState & HALAA_N_H))); - m_PvP->SendUpdateWorldState(NA_MAP_HALAA_HORDE, uint32(bool(m_HalaaState & HALAA_H))); - m_PvP->SendUpdateWorldState(NA_MAP_HALAA_ALLIANCE, uint32(bool(m_HalaaState & HALAA_A))); + m_PvP->SendUpdateWorldState(NA_MAP_HALAA_NEUTRAL, uint32((m_HalaaState & HALAA_N) != 0)); + m_PvP->SendUpdateWorldState(NA_MAP_HALAA_NEU_A, uint32((m_HalaaState & HALAA_N_A) != 0)); + m_PvP->SendUpdateWorldState(NA_MAP_HALAA_NEU_H, uint32((m_HalaaState & HALAA_N_H) != 0)); + m_PvP->SendUpdateWorldState(NA_MAP_HALAA_HORDE, uint32((m_HalaaState & HALAA_H) != 0)); + m_PvP->SendUpdateWorldState(NA_MAP_HALAA_ALLIANCE, uint32((m_HalaaState & HALAA_A) != 0)); } void OPvPCapturePointNA::UpdateWyvernRoostWorldState(uint32 roost) { switch (roost) { - case NA_ROOST_S: - m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_NEU_H, uint32(bool(m_WyvernStateSouth & WYVERN_NEU_HORDE))); - m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_NEU_A, uint32(bool(m_WyvernStateSouth & WYVERN_NEU_ALLIANCE))); - m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_H, uint32(bool(m_WyvernStateSouth & WYVERN_HORDE))); - m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_A, uint32(bool(m_WyvernStateSouth & WYVERN_ALLIANCE))); - break; - case NA_ROOST_N: - m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_NEU_H, uint32(bool(m_WyvernStateNorth & WYVERN_NEU_HORDE))); - m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_NEU_A, uint32(bool(m_WyvernStateNorth & WYVERN_NEU_ALLIANCE))); - m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_H, uint32(bool(m_WyvernStateNorth & WYVERN_HORDE))); - m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_A, uint32(bool(m_WyvernStateNorth & WYVERN_ALLIANCE))); - break; - case NA_ROOST_W: - m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_WEST_NEU_H, uint32(bool(m_WyvernStateWest & WYVERN_NEU_HORDE))); - m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_WEST_NEU_A, uint32(bool(m_WyvernStateWest & WYVERN_NEU_ALLIANCE))); - m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_WEST_H, uint32(bool(m_WyvernStateWest & WYVERN_HORDE))); - m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_WEST_A, uint32(bool(m_WyvernStateWest & WYVERN_ALLIANCE))); - break; - case NA_ROOST_E: - m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_EAST_NEU_H, uint32(bool(m_WyvernStateEast & WYVERN_NEU_HORDE))); - m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_EAST_NEU_A, uint32(bool(m_WyvernStateEast & WYVERN_NEU_ALLIANCE))); - m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_EAST_H, uint32(bool(m_WyvernStateEast & WYVERN_HORDE))); - m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_EAST_A, uint32(bool(m_WyvernStateEast & WYVERN_ALLIANCE))); - break; + case NA_ROOST_S: + m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_NEU_H, uint32((m_WyvernStateSouth & WYVERN_NEU_HORDE) != 0)); + m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_NEU_A, uint32((m_WyvernStateSouth & WYVERN_NEU_ALLIANCE) != 0)); + m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_H, uint32((m_WyvernStateSouth & WYVERN_HORDE) != 0)); + m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_A, uint32((m_WyvernStateSouth & WYVERN_ALLIANCE) != 0)); + break; + case NA_ROOST_N: + m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_NEU_H, uint32((m_WyvernStateNorth & WYVERN_NEU_HORDE) != 0)); + m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_NEU_A, uint32((m_WyvernStateNorth & WYVERN_NEU_ALLIANCE) != 0)); + m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_H, uint32((m_WyvernStateNorth & WYVERN_HORDE) != 0)); + m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_A, uint32((m_WyvernStateNorth & WYVERN_ALLIANCE) != 0)); + break; + case NA_ROOST_W: + m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_WEST_NEU_H, uint32((m_WyvernStateWest & WYVERN_NEU_HORDE) != 0)); + m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_WEST_NEU_A, uint32((m_WyvernStateWest & WYVERN_NEU_ALLIANCE) != 0)); + m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_WEST_H, uint32((m_WyvernStateWest & WYVERN_HORDE) != 0)); + m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_WEST_A, uint32((m_WyvernStateWest & WYVERN_ALLIANCE) != 0)); + break; + case NA_ROOST_E: + m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_EAST_NEU_H, uint32((m_WyvernStateEast & WYVERN_NEU_HORDE) != 0)); + m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_EAST_NEU_A, uint32((m_WyvernStateEast & WYVERN_NEU_ALLIANCE) != 0)); + m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_EAST_H, uint32((m_WyvernStateEast & WYVERN_HORDE) != 0)); + m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_EAST_A, uint32((m_WyvernStateEast & WYVERN_ALLIANCE) != 0)); + break; } } diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp index f9590634008..c8c707a1958 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp @@ -49,9 +49,9 @@ OPvPCapturePointTF::OPvPCapturePointTF(OutdoorPvP* pvp, OutdoorPvPTF_TowerType t void OPvPCapturePointTF::FillInitialWorldStates(WorldPacket &data) { - data << uint32(TFTowerWorldStates[m_TowerType].n) << uint32(bool(m_TowerState & TF_TOWERSTATE_N)); - data << uint32(TFTowerWorldStates[m_TowerType].h) << uint32(bool(m_TowerState & TF_TOWERSTATE_H)); - data << uint32(TFTowerWorldStates[m_TowerType].a) << uint32(bool(m_TowerState & TF_TOWERSTATE_A)); + data << uint32(TFTowerWorldStates[m_TowerType].n) << uint32((m_TowerState & TF_TOWERSTATE_N) != 0); + data << uint32(TFTowerWorldStates[m_TowerType].h) << uint32((m_TowerState & TF_TOWERSTATE_H) != 0); + data << uint32(TFTowerWorldStates[m_TowerType].a) << uint32((m_TowerState & TF_TOWERSTATE_A) != 0); } void OutdoorPvPTF::FillInitialWorldStates(WorldPacket &data) @@ -106,9 +106,9 @@ void OutdoorPvPTF::SendRemoveWorldStates(Player* player) void OPvPCapturePointTF::UpdateTowerState() { - m_PvP->SendUpdateWorldState(uint32(TFTowerWorldStates[m_TowerType].n), uint32(bool(m_TowerState & TF_TOWERSTATE_N))); - m_PvP->SendUpdateWorldState(uint32(TFTowerWorldStates[m_TowerType].h), uint32(bool(m_TowerState & TF_TOWERSTATE_H))); - m_PvP->SendUpdateWorldState(uint32(TFTowerWorldStates[m_TowerType].a), uint32(bool(m_TowerState & TF_TOWERSTATE_A))); + m_PvP->SendUpdateWorldState(uint32(TFTowerWorldStates[m_TowerType].n), uint32((m_TowerState & TF_TOWERSTATE_N) != 0)); + m_PvP->SendUpdateWorldState(uint32(TFTowerWorldStates[m_TowerType].h), uint32((m_TowerState & TF_TOWERSTATE_H) != 0)); + m_PvP->SendUpdateWorldState(uint32(TFTowerWorldStates[m_TowerType].a), uint32((m_TowerState & TF_TOWERSTATE_A) != 0)); } bool OPvPCapturePointTF::HandlePlayerEnter(Player* player) diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp index c4b811859ef..d54a4f7d4d7 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp @@ -34,22 +34,22 @@ OPvPCapturePointZM_Beacon::OPvPCapturePointZM_Beacon(OutdoorPvP* pvp, ZM_BeaconT void OPvPCapturePointZM_Beacon::FillInitialWorldStates(WorldPacket &data) { - data << uint32(ZMBeaconInfo[m_TowerType].ui_tower_n) << uint32(bool(m_TowerState & ZM_TOWERSTATE_N)); - data << uint32(ZMBeaconInfo[m_TowerType].map_tower_n) << uint32(bool(m_TowerState & ZM_TOWERSTATE_N)); - data << uint32(ZMBeaconInfo[m_TowerType].ui_tower_a) << uint32(bool(m_TowerState & ZM_TOWERSTATE_A)); - data << uint32(ZMBeaconInfo[m_TowerType].map_tower_a) << uint32(bool(m_TowerState & ZM_TOWERSTATE_A)); - data << uint32(ZMBeaconInfo[m_TowerType].ui_tower_h) << uint32(bool(m_TowerState & ZM_TOWERSTATE_H)); - data << uint32(ZMBeaconInfo[m_TowerType].map_tower_h) << uint32(bool(m_TowerState & ZM_TOWERSTATE_H)); + data << uint32(ZMBeaconInfo[m_TowerType].ui_tower_n) << uint32((m_TowerState & ZM_TOWERSTATE_N) != 0); + data << uint32(ZMBeaconInfo[m_TowerType].map_tower_n) << uint32((m_TowerState & ZM_TOWERSTATE_N) != 0); + data << uint32(ZMBeaconInfo[m_TowerType].ui_tower_a) << uint32((m_TowerState & ZM_TOWERSTATE_A) != 0); + data << uint32(ZMBeaconInfo[m_TowerType].map_tower_a) << uint32((m_TowerState & ZM_TOWERSTATE_A) != 0); + data << uint32(ZMBeaconInfo[m_TowerType].ui_tower_h) << uint32((m_TowerState & ZM_TOWERSTATE_H) != 0); + data << uint32(ZMBeaconInfo[m_TowerType].map_tower_h) << uint32((m_TowerState & ZM_TOWERSTATE_H) != 0); } void OPvPCapturePointZM_Beacon::UpdateTowerState() { - m_PvP->SendUpdateWorldState(uint32(ZMBeaconInfo[m_TowerType].ui_tower_n), uint32(bool(m_TowerState & ZM_TOWERSTATE_N))); - m_PvP->SendUpdateWorldState(uint32(ZMBeaconInfo[m_TowerType].map_tower_n), uint32(bool(m_TowerState & ZM_TOWERSTATE_N))); - m_PvP->SendUpdateWorldState(uint32(ZMBeaconInfo[m_TowerType].ui_tower_a), uint32(bool(m_TowerState & ZM_TOWERSTATE_A))); - m_PvP->SendUpdateWorldState(uint32(ZMBeaconInfo[m_TowerType].map_tower_a), uint32(bool(m_TowerState & ZM_TOWERSTATE_A))); - m_PvP->SendUpdateWorldState(uint32(ZMBeaconInfo[m_TowerType].ui_tower_h), uint32(bool(m_TowerState & ZM_TOWERSTATE_H))); - m_PvP->SendUpdateWorldState(uint32(ZMBeaconInfo[m_TowerType].map_tower_h), uint32(bool(m_TowerState & ZM_TOWERSTATE_H))); + m_PvP->SendUpdateWorldState(uint32(ZMBeaconInfo[m_TowerType].ui_tower_n), uint32((m_TowerState & ZM_TOWERSTATE_N) != 0)); + m_PvP->SendUpdateWorldState(uint32(ZMBeaconInfo[m_TowerType].map_tower_n), uint32((m_TowerState & ZM_TOWERSTATE_N) != 0)); + m_PvP->SendUpdateWorldState(uint32(ZMBeaconInfo[m_TowerType].ui_tower_a), uint32((m_TowerState & ZM_TOWERSTATE_A) != 0)); + m_PvP->SendUpdateWorldState(uint32(ZMBeaconInfo[m_TowerType].map_tower_a), uint32((m_TowerState & ZM_TOWERSTATE_A) != 0)); + m_PvP->SendUpdateWorldState(uint32(ZMBeaconInfo[m_TowerType].ui_tower_h), uint32((m_TowerState & ZM_TOWERSTATE_H) != 0)); + m_PvP->SendUpdateWorldState(uint32(ZMBeaconInfo[m_TowerType].map_tower_h), uint32((m_TowerState & ZM_TOWERSTATE_H) != 0)); } bool OPvPCapturePointZM_Beacon::HandlePlayerEnter(Player* player) @@ -264,9 +264,9 @@ OPvPCapturePointZM_GraveYard::OPvPCapturePointZM_GraveYard(OutdoorPvP* pvp) void OPvPCapturePointZM_GraveYard::UpdateTowerState() { - m_PvP->SendUpdateWorldState(ZM_MAP_GRAVEYARD_N, uint32(bool(m_GraveYardState & ZM_GRAVEYARD_N))); - m_PvP->SendUpdateWorldState(ZM_MAP_GRAVEYARD_H, uint32(bool(m_GraveYardState & ZM_GRAVEYARD_H))); - m_PvP->SendUpdateWorldState(ZM_MAP_GRAVEYARD_A, uint32(bool(m_GraveYardState & ZM_GRAVEYARD_A))); + m_PvP->SendUpdateWorldState(ZM_MAP_GRAVEYARD_N, uint32((m_GraveYardState & ZM_GRAVEYARD_N) != 0)); + m_PvP->SendUpdateWorldState(ZM_MAP_GRAVEYARD_H, uint32((m_GraveYardState & ZM_GRAVEYARD_H) != 0)); + m_PvP->SendUpdateWorldState(ZM_MAP_GRAVEYARD_A, uint32((m_GraveYardState & ZM_GRAVEYARD_A) != 0)); m_PvP->SendUpdateWorldState(ZM_MAP_ALLIANCE_FLAG_READY, uint32(m_BothControllingFaction == ALLIANCE)); m_PvP->SendUpdateWorldState(ZM_MAP_ALLIANCE_FLAG_NOT_READY, uint32(m_BothControllingFaction != ALLIANCE)); @@ -276,9 +276,9 @@ void OPvPCapturePointZM_GraveYard::UpdateTowerState() void OPvPCapturePointZM_GraveYard::FillInitialWorldStates(WorldPacket &data) { - data << ZM_MAP_GRAVEYARD_N << uint32(bool(m_GraveYardState & ZM_GRAVEYARD_N)); - data << ZM_MAP_GRAVEYARD_H << uint32(bool(m_GraveYardState & ZM_GRAVEYARD_H)); - data << ZM_MAP_GRAVEYARD_A << uint32(bool(m_GraveYardState & ZM_GRAVEYARD_A)); + data << ZM_MAP_GRAVEYARD_N << uint32((m_GraveYardState & ZM_GRAVEYARD_N) != 0); + data << ZM_MAP_GRAVEYARD_H << uint32((m_GraveYardState & ZM_GRAVEYARD_H) != 0); + data << ZM_MAP_GRAVEYARD_A << uint32((m_GraveYardState & ZM_GRAVEYARD_A) != 0); data << ZM_MAP_ALLIANCE_FLAG_READY << uint32(m_BothControllingFaction == ALLIANCE); data << ZM_MAP_ALLIANCE_FLAG_NOT_READY << uint32(m_BothControllingFaction != ALLIANCE); diff --git a/src/server/scripts/Outland/BlackTemple/illidari_council.cpp b/src/server/scripts/Outland/BlackTemple/illidari_council.cpp index 8fd9a421a49..49762275169 100644 --- a/src/server/scripts/Outland/BlackTemple/illidari_council.cpp +++ b/src/server/scripts/Outland/BlackTemple/illidari_council.cpp @@ -880,7 +880,7 @@ public: bool Validate(SpellInfo const* /*spellInfo*/) override { - return sSpellMgr->GetSpellInfo(SPELL_REFLECTIVE_SHIELD_T); + return sSpellMgr->GetSpellInfo(SPELL_REFLECTIVE_SHIELD_T) != nullptr; } void Trigger(AuraEffect* aurEff, DamageInfo & dmgInfo, uint32 & absorbAmount) diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp index d21b92d3e92..ebcddafe309 100644 --- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp +++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp @@ -731,7 +731,7 @@ class npc_simon_bunny : public CreatureScript { me->SetCanFly(true); - large = (bool)id; + large = id != 0; playerGUID = guid; StartGame(); } diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp index 245ec7e88cf..84608ba42f1 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -296,7 +296,7 @@ class spell_dk_blood_gorged : public SpellScriptLoader bool CheckProc(ProcEventInfo& /*eventInfo*/) { _procTarget = GetTarget()->GetOwner(); - return _procTarget; + return _procTarget != nullptr; } void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index a8a73310592..43f33f996ad 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -3028,7 +3028,7 @@ class spell_gen_replenishment : public SpellScriptLoader bool Load() override { - return GetUnitOwner()->GetPower(POWER_MANA); + return GetUnitOwner()->getPowerType() == POWER_MANA; } void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp index c3f994135aa..22968d70ff1 100644 --- a/src/server/scripts/Spells/spell_hunter.cpp +++ b/src/server/scripts/Spells/spell_hunter.cpp @@ -486,7 +486,7 @@ class spell_hun_misdirection : public SpellScriptLoader bool CheckProc(ProcEventInfo& /*eventInfo*/) { - return GetTarget()->GetRedirectThreatTarget(); + return GetTarget()->GetRedirectThreatTarget() != nullptr; } void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index 7139c9ecfba..e61021fd914 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -166,7 +166,7 @@ class spell_item_blessing_of_ancient_kings : public SpellScriptLoader bool CheckProc(ProcEventInfo& eventInfo) { - return eventInfo.GetProcTarget(); + return eventInfo.GetProcTarget() != nullptr; } void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index edb9cd04b44..a19a24d47e9 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -128,7 +128,7 @@ class spell_mage_burnout : public SpellScriptLoader bool CheckProc(ProcEventInfo& eventInfo) { - return eventInfo.GetDamageInfo()->GetSpellInfo(); // eventInfo.GetSpellInfo() + return eventInfo.GetDamageInfo()->GetSpellInfo() != nullptr; } void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) @@ -381,7 +381,7 @@ class spell_mage_ignite : public SpellScriptLoader bool CheckProc(ProcEventInfo& eventInfo) { - return eventInfo.GetProcTarget(); + return eventInfo.GetProcTarget() != nullptr; } void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) @@ -505,7 +505,7 @@ class spell_mage_master_of_elements : public SpellScriptLoader bool CheckProc(ProcEventInfo& eventInfo) { - return eventInfo.GetDamageInfo()->GetSpellInfo(); // eventInfo.GetSpellInfo() + return eventInfo.GetDamageInfo()->GetSpellInfo() != nullptr; } void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp index 53af04c2e98..2d32341757f 100644 --- a/src/server/scripts/Spells/spell_paladin.cpp +++ b/src/server/scripts/Spells/spell_paladin.cpp @@ -1250,7 +1250,7 @@ class spell_pal_seal_of_righteousness : public SpellScriptLoader bool CheckProc(ProcEventInfo& eventInfo) { - return eventInfo.GetProcTarget(); + return eventInfo.GetProcTarget() != nullptr; } void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 76781e0fdc2..7076c1142c7 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -149,7 +149,7 @@ class spell_pri_divine_aegis : public SpellScriptLoader bool CheckProc(ProcEventInfo& eventInfo) { - return eventInfo.GetProcTarget(); + return eventInfo.GetProcTarget() != nullptr; } void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) @@ -467,7 +467,7 @@ class spell_pri_mana_leech : public SpellScriptLoader bool CheckProc(ProcEventInfo& /*eventInfo*/) { _procTarget = GetTarget()->GetOwner(); - return _procTarget; + return _procTarget != nullptr; } void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index f895381574e..316ce973319 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -1810,12 +1810,11 @@ class spell_q13011_bear_flank_master : public SpellScriptLoader void HandleScript(SpellEffIndex /*effIndex*/) { - bool failed = RAND(0, 1); // 50% chance - Creature* creature = GetCaster()->ToCreature(); if (Player* player = GetHitPlayer()) { - if (failed) + if (roll_chance_i(50)) { + Creature* creature = GetCaster()->ToCreature(); player->CastSpell(creature, SPELL_BEAR_FLANK_FAIL); creature->AI()->Talk(0, player); } diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index bf413aef6a3..42c1f268715 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -68,7 +68,7 @@ class spell_rog_blade_flurry : public SpellScriptLoader bool CheckProc(ProcEventInfo& eventInfo) { _procTarget = eventInfo.GetActor()->SelectNearbyTarget(eventInfo.GetProcTarget()); - return _procTarget; + return _procTarget != nullptr; } void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) @@ -119,7 +119,7 @@ class spell_rog_cheat_death : public SpellScriptLoader bool Load() override { absorbChance = GetSpellInfo()->Effects[EFFECT_0].CalcValue(); - return GetUnitOwner()->ToPlayer(); + return GetUnitOwner()->GetTypeId() == TYPEID_PLAYER; } void CalculateAmount(AuraEffect const* /*aurEff*/, int32 & amount, bool & /*canBeRecalculated*/) @@ -637,7 +637,7 @@ class spell_rog_tricks_of_the_trade : public SpellScriptLoader bool CheckProc(ProcEventInfo& /*eventInfo*/) { _redirectTarget = GetTarget()->GetRedirectThreatTarget(); - return _redirectTarget; + return _redirectTarget != nullptr; } void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo& /*eventInfo*/) diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index a1c2d0e1d1c..9b30c073aad 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -743,7 +743,7 @@ class spell_sha_item_mana_surge : public SpellScriptLoader bool CheckProc(ProcEventInfo& eventInfo) { - return eventInfo.GetDamageInfo()->GetSpellInfo(); + return eventInfo.GetDamageInfo()->GetSpellInfo() != nullptr; } void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index 40d939c6394..ac61577da5d 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -697,7 +697,7 @@ class spell_warr_sweeping_strikes : public SpellScriptLoader bool CheckProc(ProcEventInfo& eventInfo) { _procTarget = eventInfo.GetActor()->SelectNearbyTarget(eventInfo.GetProcTarget()); - return _procTarget; + return _procTarget != nullptr; } void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) @@ -801,7 +801,7 @@ class spell_warr_vigilance : public SpellScriptLoader bool CheckProc(ProcEventInfo& /*eventInfo*/) { _procTarget = GetCaster(); - return _procTarget; + return _procTarget != nullptr; } void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) diff --git a/src/server/shared/Database/DatabaseWorker.cpp b/src/server/shared/Database/DatabaseWorker.cpp index 3944c008652..ca48ebdd811 100644 --- a/src/server/shared/Database/DatabaseWorker.cpp +++ b/src/server/shared/Database/DatabaseWorker.cpp @@ -44,7 +44,7 @@ void DatabaseWorker::WorkerThread() if (!_queue) return; - while (1) + for (;;) { SQLOperation* operation = nullptr; diff --git a/src/server/shared/Database/QueryResult.cpp b/src/server/shared/Database/QueryResult.cpp index 58ac8d37270..06b09d43168 100644 --- a/src/server/shared/Database/QueryResult.cpp +++ b/src/server/shared/Database/QueryResult.cpp @@ -105,10 +105,10 @@ m_length(NULL) for (uint64 fIndex = 0; fIndex < m_fieldCount; ++fIndex) { if (!*m_rBind[fIndex].is_null) - m_rows[uint32(m_rowPosition)][fIndex].SetByteValue( m_rBind[fIndex].buffer, + m_rows[uint32(m_rowPosition)][fIndex].SetByteValue(m_rBind[fIndex].buffer, m_rBind[fIndex].buffer_length, m_rBind[fIndex].buffer_type, - *m_rBind[fIndex].length ); + *m_rBind[fIndex].length); else switch (m_rBind[fIndex].buffer_type) { @@ -118,16 +118,16 @@ m_length(NULL) case MYSQL_TYPE_BLOB: case MYSQL_TYPE_STRING: case MYSQL_TYPE_VAR_STRING: - m_rows[uint32(m_rowPosition)][fIndex].SetByteValue( "", + m_rows[uint32(m_rowPosition)][fIndex].SetByteValue("", m_rBind[fIndex].buffer_length, m_rBind[fIndex].buffer_type, - *m_rBind[fIndex].length ); + *m_rBind[fIndex].length); break; default: - m_rows[uint32(m_rowPosition)][fIndex].SetByteValue( 0, + m_rows[uint32(m_rowPosition)][fIndex].SetByteValue(0, m_rBind[fIndex].buffer_length, m_rBind[fIndex].buffer_type, - *m_rBind[fIndex].length ); + *m_rBind[fIndex].length); } } m_rowPosition++; @@ -186,15 +186,8 @@ bool PreparedResultSet::_NextRow() if (m_rowPosition >= m_rowCount) return false; - int retval = mysql_stmt_fetch( m_stmt ); - - if (!retval || retval == MYSQL_DATA_TRUNCATED) - retval = true; - - if (retval == MYSQL_NO_DATA) - retval = false; - - return retval; + int retval = mysql_stmt_fetch(m_stmt); + return retval == 0 || retval == MYSQL_DATA_TRUNCATED; } void ResultSet::CleanUp() diff --git a/src/server/shared/Debugging/Errors.h b/src/server/shared/Debugging/Errors.h index 7d521fefca0..218acfa453e 100644 --- a/src/server/shared/Debugging/Errors.h +++ b/src/server/shared/Debugging/Errors.h @@ -34,10 +34,18 @@ namespace Trinity } // namespace Trinity -#define WPAssert(cond) do { if (!(cond)) Trinity::Assert(__FILE__, __LINE__, __FUNCTION__, #cond); } while (0) -#define WPFatal(cond, msg) do { if (!(cond)) Trinity::Fatal(__FILE__, __LINE__, __FUNCTION__, (msg)); } while (0) -#define WPError(cond, msg) do { if (!(cond)) Trinity::Error(__FILE__, __LINE__, __FUNCTION__, (msg)); } while (0) -#define WPWarning(cond, msg) do { if (!(cond)) Trinity::Warning(__FILE__, __LINE__, __FUNCTION__, (msg)); } while (0) +#if COMPILER == COMPILER_MICROSOFT +#define ASSERT_BEGIN __pragma(warning(push)) __pragma(warning(disable: 4127)) +#define ASSERT_END __pragma(warning(pop)) +#else +#define ASSERT_BEGIN +#define ASSERT_END +#endif + +#define WPAssert(cond) ASSERT_BEGIN do { if (!(cond)) Trinity::Assert(__FILE__, __LINE__, __FUNCTION__, #cond); } while(0) ASSERT_END +#define WPFatal(cond, msg) ASSERT_BEGIN do { if (!(cond)) Trinity::Fatal(__FILE__, __LINE__, __FUNCTION__, (msg)); } while(0) ASSERT_END +#define WPError(cond, msg) ASSERT_BEGIN do { if (!(cond)) Trinity::Error(__FILE__, __LINE__, __FUNCTION__, (msg)); } while(0) ASSERT_END +#define WPWarning(cond, msg) ASSERT_BEGIN do { if (!(cond)) Trinity::Warning(__FILE__, __LINE__, __FUNCTION__, (msg)); } while(0) ASSERT_END #define ASSERT WPAssert diff --git a/src/server/shared/Debugging/WheatyExceptionReport.cpp b/src/server/shared/Debugging/WheatyExceptionReport.cpp index 350a258f455..2eb456ddd02 100644 --- a/src/server/shared/Debugging/WheatyExceptionReport.cpp +++ b/src/server/shared/Debugging/WheatyExceptionReport.cpp @@ -677,7 +677,7 @@ bool bWriteVariables, HANDLE pThreadHandle) dwMachineType = IMAGE_FILE_MACHINE_AMD64; #endif - while (1) + for (;;) { // Get the next stack frame if (! StackWalk64(dwMachineType, diff --git a/src/server/worldserver/RemoteAccess/RASession.cpp b/src/server/worldserver/RemoteAccess/RASession.cpp index 898491274dc..846a4eb39e3 100644 --- a/src/server/worldserver/RemoteAccess/RASession.cpp +++ b/src/server/worldserver/RemoteAccess/RASession.cpp @@ -69,14 +69,14 @@ void RASession::Start() _socket.close(); return; } - + TC_LOG_INFO("commands.ra", "User %s (IP: %s) authenticated correctly to RA", username.c_str(), GetRemoteIpAddress().c_str()); // Authentication successful, send the motd Send(std::string(std::string(sWorld->GetMotd()) + "\r\n").c_str()); // Read commands - while (true) + for (;;) { Send("TC>"); std::string command = ReadString(); @@ -113,7 +113,7 @@ std::string RASession::ReadString() if (*line.rbegin() == '\r') line.erase(line.length() - 1); - + return line; } @@ -202,7 +202,7 @@ bool RASession::ProcessCommand(std::string& command) // Wait for the command to finish _commandExecuting->get_future().wait(); - + return false; } -- cgit v1.2.3