From da3d3116c29bdf0491250313fc3fba2223f750a2 Mon Sep 17 00:00:00 2001 From: H0zen Date: Wed, 7 Jun 2017 16:05:18 +0300 Subject: [PATCH] Various fixes (#21) * Various fixes. - Fix PCH build on *nix - Silenced some compiler warnings * Another small fixes. - Mails sent by various GM commands are now not returnable / respondable - Fix server startup issue due to incorrect map magic version. --- dep | 2 +- src/game/CMakeLists.txt | 14 +++++--------- src/game/ChatCommands/Level1.cpp | 4 ++-- src/game/ChatCommands/Level3.cpp | 15 ++++++--------- .../MotionGenerators/FleeingMovementGenerator.cpp | 2 +- src/game/Object/Creature.h | 4 ++-- src/game/Object/CreatureAI.h | 2 +- src/game/Object/CreatureEventAI.h | 4 ++-- src/game/Object/Pet.h | 8 ++++---- src/game/Object/Player.h | 6 +++--- src/game/Object/TemporarySummon.h | 2 +- src/game/Object/Unit.cpp | 8 ++++---- src/game/Server/WorldSocket.h | 2 +- src/game/Warden/Warden.h | 2 +- src/game/WorldHandlers/GridMap.cpp | 2 +- src/game/WorldHandlers/Transports.h | 3 +-- src/game/pchdef.cpp | 2 +- src/game/pchdef.h | 5 +++++ src/mangosd/WorldThread.h | 2 +- src/shared/Database/DatabaseMysql.h | 2 +- src/tools/Extractor_projects | 2 +- 21 files changed, 45 insertions(+), 48 deletions(-) diff --git a/dep b/dep index c8074b24..0430cca2 160000 --- a/dep +++ b/dep @@ -1 +1 @@ -Subproject commit c8074b24b465289e3980ca2812732df09fc6a0b0 +Subproject commit 0430cca23a4e55efb6159a25ff47edb0ff496687 diff --git a/src/game/CMakeLists.txt b/src/game/CMakeLists.txt index 73970414..5333ea75 100644 --- a/src/game/CMakeLists.txt +++ b/src/game/CMakeLists.txt @@ -139,12 +139,13 @@ set(LIBRARY_SRCS pchdef.h ) -if(PCH) - include_directories(${CMAKE_CURRENT_BINARY_DIR}) -endif() - add_library(${LIBRARY_NAME} STATIC ${LIBRARY_SRCS}) +# Generate precompiled header +if(PCH) + ADD_CXX_PCH(${LIBRARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/pchdef.h ${CMAKE_CURRENT_SOURCE_DIR}/pchdef.cpp) +endif() + target_link_libraries(${LIBRARY_NAME} shared detour) if(UNIX) @@ -158,11 +159,6 @@ if(NOT ACE_USE_EXTERNAL) add_dependencies(${LIBRARY_NAME} ace) endif() -# Generate precompiled header -if(PCH) - ADD_CXX_PCH(${LIBRARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/pchdef.h ${CMAKE_CURRENT_SOURCE_DIR}/pchdef.cpp) -endif() - if(PLAYERBOTS) include_directories( ${CMAKE_SOURCE_DIR}/src/modules/Bots/playerbot diff --git a/src/game/ChatCommands/Level1.cpp b/src/game/ChatCommands/Level1.cpp index bbb467d4..1b88c70f 100644 --- a/src/game/ChatCommands/Level1.cpp +++ b/src/game/ChatCommands/Level1.cpp @@ -1672,8 +1672,8 @@ bool ChatHandler::HandleSendMailCommand(char* args) if (!HandleSendMailHelper(draft, args)) { return false; } - // from console show nonexistent sender - MailSender sender(MAIL_NORMAL, m_session ? m_session->GetPlayer()->GetObjectGuid().GetCounter() : 0, MAIL_STATIONERY_GM); + // GM mail + MailSender sender(MAIL_NORMAL, 0, MAIL_STATIONERY_GM); draft.SendMailTo(MailReceiver(target, target_guid), sender); diff --git a/src/game/ChatCommands/Level3.cpp b/src/game/ChatCommands/Level3.cpp index 0448d946..119f98cc 100644 --- a/src/game/ChatCommands/Level3.cpp +++ b/src/game/ChatCommands/Level3.cpp @@ -6293,8 +6293,8 @@ bool ChatHandler::HandleSendMassMailCommand(char* args) return false; } - // from console show nonexistent sender - MailSender sender(MAIL_NORMAL, m_session ? m_session->GetPlayer()->GetObjectGuid().GetCounter() : 0, MAIL_STATIONERY_GM); + // GM mail + MailSender sender(MAIL_NORMAL, 0, MAIL_STATIONERY_GM); sMassMailMgr.AddMassMailTask(draft, sender, raceMask); @@ -6398,8 +6398,7 @@ bool ChatHandler::HandleSendItemsCommand(char* args) if (!HandleSendItemsHelper(draft, args)) { return false; } - // from console show nonexistent sender - MailSender sender(MAIL_NORMAL, m_session ? m_session->GetPlayer()->GetObjectGuid().GetCounter() : 0, MAIL_STATIONERY_GM); + MailSender sender(MAIL_NORMAL, 0, MAIL_STATIONERY_GM); draft.SendMailTo(MailReceiver(receiver, receiver_guid), sender); @@ -6429,8 +6428,7 @@ bool ChatHandler::HandleSendMassItemsCommand(char* args) return false; } - // from console show nonexistent sender - MailSender sender(MAIL_NORMAL, m_session ? m_session->GetPlayer()->GetObjectGuid().GetCounter() : 0, MAIL_STATIONERY_GM); + MailSender sender(MAIL_NORMAL, 0, MAIL_STATIONERY_GM); sMassMailMgr.AddMassMailTask(draft, sender, raceMask); @@ -6479,8 +6477,7 @@ bool ChatHandler::HandleSendMoneyCommand(char* args) if (!HandleSendMoneyHelper(draft, args)) { return false; } - // from console show nonexistent sender - MailSender sender(MAIL_NORMAL, m_session ? m_session->GetPlayer()->GetObjectGuid().GetCounter() : 0, MAIL_STATIONERY_GM); + MailSender sender(MAIL_NORMAL, 0, MAIL_STATIONERY_GM); draft.SendMailTo(MailReceiver(receiver, receiver_guid), sender); @@ -6510,7 +6507,7 @@ bool ChatHandler::HandleSendMassMoneyCommand(char* args) } // from console show nonexistent sender - MailSender sender(MAIL_NORMAL, m_session ? m_session->GetPlayer()->GetObjectGuid().GetCounter() : 0, MAIL_STATIONERY_GM); + MailSender sender(MAIL_NORMAL, 0, MAIL_STATIONERY_GM); sMassMailMgr.AddMassMailTask(draft, sender, raceMask); diff --git a/src/game/MotionGenerators/FleeingMovementGenerator.cpp b/src/game/MotionGenerators/FleeingMovementGenerator.cpp index beb61c79..e0a75ff0 100644 --- a/src/game/MotionGenerators/FleeingMovementGenerator.cpp +++ b/src/game/MotionGenerators/FleeingMovementGenerator.cpp @@ -174,7 +174,7 @@ void FleeingMovementGenerator::Reset(T& owner) template bool FleeingMovementGenerator::Update(T& owner, const uint32& time_diff) { - if (!&owner || !owner.IsAlive()) + if (!owner.IsAlive()) { return false; } // ignore in case other no reaction state diff --git a/src/game/Object/Creature.h b/src/game/Object/Creature.h index 45990190..d1b220a8 100644 --- a/src/game/Object/Creature.h +++ b/src/game/Object/Creature.h @@ -535,9 +535,9 @@ class Creature : public Unit bool IsGuard() const { return GetCreatureInfo()->ExtraFlags & CREATURE_EXTRA_FLAG_GUARD; } bool CanWalk() const { return GetCreatureInfo()->InhabitType & INHABIT_GROUND; } - bool CanSwim() const { return GetCreatureInfo()->InhabitType & INHABIT_WATER; } + virtual bool CanSwim() const override { return GetCreatureInfo()->InhabitType & INHABIT_WATER; } bool IsSwimming() const { return (m_movementInfo.HasMovementFlag((MovementFlags)(MOVEFLAG_SWIMMING))); } - bool CanFly() const { return (GetCreatureInfo()->InhabitType & INHABIT_AIR) || m_movementInfo.HasMovementFlag((MovementFlags)(MOVEFLAG_LEVITATING | MOVEFLAG_CAN_FLY)); } + virtual bool CanFly() const override { return (GetCreatureInfo()->InhabitType & INHABIT_AIR) || m_movementInfo.HasMovementFlag((MovementFlags)(MOVEFLAG_LEVITATING | MOVEFLAG_CAN_FLY)); } bool IsFlying() const { return (m_movementInfo.HasMovementFlag((MovementFlags)(MOVEFLAG_FLYING|MOVEFLAG_LEVITATING))); } bool IsTrainerOf(Player* player, bool msg) const; bool CanInteractWithBattleMaster(Player* player, bool msg) const; diff --git a/src/game/Object/CreatureAI.h b/src/game/Object/CreatureAI.h index b6c1c9ef..ee8422a6 100644 --- a/src/game/Object/CreatureAI.h +++ b/src/game/Object/CreatureAI.h @@ -381,7 +381,7 @@ struct CreatureAIFactory : public SelectableAI CreatureAI* Create(void*) const override; - int Permit(const Creature* c) const { return REAL_AI::Permissible(c); } + virtual int Permit(const Creature* c) const override { return REAL_AI::Permissible(c); } }; enum Permitions diff --git a/src/game/Object/CreatureEventAI.h b/src/game/Object/CreatureEventAI.h index 3c4f41a2..1844d7fe 100644 --- a/src/game/Object/CreatureEventAI.h +++ b/src/game/Object/CreatureEventAI.h @@ -655,7 +655,7 @@ class CreatureEventAI : public CreatureAI void GetAIInformation(ChatHandler& reader) override; void JustRespawned() override; - void Reset(); + void Reset() override; void JustReachedHome() override; void EnterCombat(Unit* enemy) override; void EnterEvadeMode() override; @@ -666,7 +666,7 @@ class CreatureEventAI : public CreatureAI void MoveInLineOfSight(Unit* who) override; void SpellHit(Unit* pUnit, const SpellEntry* pSpell) override; void OnSpellCastChange(const SpellEntry* pSpell, SpellCastResult reason) override; - virtual CanCastResult DoCastSpellIfCan(Unit* pTarget, uint32 uiSpell, uint32 uiCastFlags = 0, ObjectGuid OriginalCasterGuid = ObjectGuid()); + virtual CanCastResult DoCastSpellIfCan(Unit* pTarget, uint32 uiSpell, uint32 uiCastFlags = 0, ObjectGuid OriginalCasterGuid = ObjectGuid()) override; void DamageTaken(Unit* done_by, uint32& damage) override; void HealedBy(Unit* healer, uint32& healedAmount) override; void UpdateAI(const uint32 diff) override; diff --git a/src/game/Object/Pet.h b/src/game/Object/Pet.h index ac9e72bd..175d5721 100644 --- a/src/game/Object/Pet.h +++ b/src/game/Object/Pet.h @@ -188,7 +188,7 @@ class Pet : public Creature void SetDeathState(DeathState s) override; // overwrite virtual Creature::SetDeathState and Unit::SetDeathState void Update(uint32 update_diff, uint32 diff) override; // overwrite virtual Creature::Update and Unit::Update - uint8 GetPetAutoSpellSize() const { return m_autospells.size(); } + virtual uint8 GetPetAutoSpellSize() const override { return m_autospells.size(); } uint32 GetPetAutoSpellOnPos(uint8 pos) const override { if (pos >= m_autospells.size()) @@ -197,7 +197,7 @@ class Pet : public Creature { return m_autospells[pos]; } } - bool CanSwim() const + virtual bool CanSwim() const override { Unit const* owner = GetOwner(); if (owner) @@ -206,7 +206,7 @@ class Pet : public Creature { return Creature::CanSwim(); } } - bool CanFly() const { return false; } // pet are not able to fly. TODO: check if this is right + virtual bool CanFly() const override { return false; } // pet are not able to fly. TODO: check if this is right void RegenerateAll(uint32 update_diff) override; // overwrite Creature::RegenerateAll void LooseHappiness(); @@ -288,7 +288,7 @@ class Pet : public Creature void ResetAuraUpdateMask() { m_auraUpdateMask = 0; } // overwrite Creature function for name localization back to WorldObject version without localization - const char* GetNameForLocaleIdx(int32 locale_idx) const { return WorldObject::GetNameForLocaleIdx(locale_idx); } + virtual const char* GetNameForLocaleIdx(int32 locale_idx) const override { return WorldObject::GetNameForLocaleIdx(locale_idx); } bool m_removed; // prevent overwrite pet state in DB at next Pet::Update if pet already removed(saved) protected: diff --git a/src/game/Object/Player.h b/src/game/Object/Player.h index cfcf933e..921c533e 100644 --- a/src/game/Object/Player.h +++ b/src/game/Object/Player.h @@ -1077,7 +1077,7 @@ class Player : public Unit void RemovePet(PetSaveMode mode); void RemoveMiniPet(); - Pet* GetMiniPet() const; + virtual Pet* GetMiniPet() const override; // use only in Pet::Unsummon/Spell::DoSummon void _SetMiniPet(Pet* pet) @@ -2195,8 +2195,8 @@ class Player : public Unit bool isMoving() const { return m_movementInfo.HasMovementFlag(movementFlagsMask); } bool isMovingOrTurning() const { return m_movementInfo.HasMovementFlag(movementOrTurningFlagsMask); } - bool CanSwim() const { return true; } - bool CanFly() const { return false; } + virtual bool CanSwim() const override { return true; } + virtual bool CanFly() const override { return false; } bool IsFlying() const { return false; } bool IsFreeFlying() const { return false; } diff --git a/src/game/Object/TemporarySummon.h b/src/game/Object/TemporarySummon.h index e30d91f6..af3528d9 100644 --- a/src/game/Object/TemporarySummon.h +++ b/src/game/Object/TemporarySummon.h @@ -37,7 +37,7 @@ class TemporarySummon : public Creature void Update(uint32 update_diff, uint32 time) override; void Summon(TempSummonType type, uint32 lifetime); void UnSummon(); - void SaveToDB(); + void SaveToDB() override; ObjectGuid const& GetSummonerGuid() const { return m_summoner ; } Unit* GetSummoner() const { return ObjectAccessor::GetUnit(*this, m_summoner); } private: diff --git a/src/game/Object/Unit.cpp b/src/game/Object/Unit.cpp index bc3f158a..9a46b40d 100644 --- a/src/game/Object/Unit.cpp +++ b/src/game/Object/Unit.cpp @@ -1314,7 +1314,7 @@ void Unit::CalculateSpellDamage(SpellNonMeleeDamage* damageInfo, int32 damage, S if (damage < 0) { return; } - if (!this || !pVictim) + if (!pVictim) { return; } // units which are not alive cannot deal damage except for dying creatures @@ -1427,7 +1427,7 @@ void Unit::DealSpellDamage(SpellNonMeleeDamage* damageInfo, bool durabilityLoss) Unit* pVictim = damageInfo->target; - if (!this || !pVictim) + if (!pVictim) { return; } if (!pVictim->IsAlive() || pVictim->IsTaxiFlying() || (pVictim->GetTypeId() == TYPEID_UNIT && ((Creature*)pVictim)->IsInEvadeMode())) @@ -1477,7 +1477,7 @@ void Unit::CalculateMeleeDamage(Unit* pVictim, CalcDamageInfo* damageInfo, Weapo damageInfo->procEx = PROC_EX_NONE; damageInfo->hitOutCome = MELEE_HIT_EVADE; - if (!this || !pVictim) + if (!pVictim) { return; } if (!this->IsAlive() || !pVictim->IsAlive()) { return; } @@ -1707,7 +1707,7 @@ void Unit::DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss) if (damageInfo == 0) { return; } Unit* pVictim = damageInfo->target; - if (!this || !pVictim) + if (!pVictim) { return; } if (!pVictim->IsAlive() || pVictim->IsTaxiFlying() || (pVictim->GetTypeId() == TYPEID_UNIT && ((Creature*)pVictim)->IsInEvadeMode())) diff --git a/src/game/Server/WorldSocket.h b/src/game/Server/WorldSocket.h index cd51f682..004bf433 100644 --- a/src/game/Server/WorldSocket.h +++ b/src/game/Server/WorldSocket.h @@ -146,7 +146,7 @@ class WorldSocket : protected WorldHandler /// Called when connection is closed or error happens. virtual int handle_close(ACE_HANDLE = ACE_INVALID_HANDLE, - ACE_Reactor_Mask = ACE_Event_Handler::ALL_EVENTS_MASK); + ACE_Reactor_Mask = ACE_Event_Handler::ALL_EVENTS_MASK) override; private: /// Helper functions for processing incoming data. diff --git a/src/game/Warden/Warden.h b/src/game/Warden/Warden.h index 346f8e25..306c9a5c 100644 --- a/src/game/Warden/Warden.h +++ b/src/game/Warden/Warden.h @@ -108,7 +108,7 @@ namespace WardenState STATE_RESTING }; - inline char* to_string(WardenState::Value value) + inline const char* to_string(WardenState::Value value) { switch (value) { diff --git a/src/game/WorldHandlers/GridMap.cpp b/src/game/WorldHandlers/GridMap.cpp index 3b264180..fd1c9987 100644 --- a/src/game/WorldHandlers/GridMap.cpp +++ b/src/game/WorldHandlers/GridMap.cpp @@ -35,7 +35,7 @@ #include "Util.h" char const* MAP_MAGIC = "MAPS"; -char const* MAP_VERSION_MAGIC = "z1.4"; +char const* MAP_VERSION_MAGIC = "z1.5"; char const* MAP_AREA_MAGIC = "AREA"; char const* MAP_HEIGHT_MAGIC = "MHGT"; char const* MAP_LIQUID_MAGIC = "MLIQ"; diff --git a/src/game/WorldHandlers/Transports.h b/src/game/WorldHandlers/Transports.h index fdfd0b63..00d565fe 100644 --- a/src/game/WorldHandlers/Transports.h +++ b/src/game/WorldHandlers/Transports.h @@ -43,7 +43,7 @@ class Transport : public GameObject bool AddPassenger(Unit* passenger); bool RemovePassenger(Unit* passenger); - virtual void Update(uint32 update_diff, uint32 p_time) = 0; + virtual void Update(uint32 update_diff, uint32 p_time) override {} virtual void DeleteFromDB() override {} UnitSet const& GetPassengers() const { return m_passengers; } @@ -60,7 +60,6 @@ class LocalTransport : public Transport explicit LocalTransport(); virtual ~LocalTransport(); bool Initialize(uint32 guid, Map* m); - virtual void Update(uint32 update_diff, uint32 p_time) override {} //NYI private: uint32 m_period; }; diff --git a/src/game/pchdef.cpp b/src/game/pchdef.cpp index 87fb071a..01a5b166 100644 --- a/src/game/pchdef.cpp +++ b/src/game/pchdef.cpp @@ -1 +1 @@ -//#include "pchdef.h" +#include "pchdef.h" diff --git a/src/game/pchdef.h b/src/game/pchdef.h index a07e2845..1e2f2686 100644 --- a/src/game/pchdef.h +++ b/src/game/pchdef.h @@ -22,6 +22,9 @@ * and lore are copyrighted by Blizzard Entertainment, Inc. */ +#ifndef GAME_PCH_H +#define GAME_PCH_H + // add here most rarely modified headers to speed up debug build compilation #include "WorldSocket.h" // must be first to make ACE happy with ACE includes in it #include "Common.h" @@ -36,3 +39,5 @@ #include "GuildMgr.h" #include "ObjectMgr.h" #include "ScriptMgr.h" + +#endif \ No newline at end of file diff --git a/src/mangosd/WorldThread.h b/src/mangosd/WorldThread.h index 97830ac8..a82638ca 100644 --- a/src/mangosd/WorldThread.h +++ b/src/mangosd/WorldThread.h @@ -42,7 +42,7 @@ class WorldThread : public ACE_Task_Base public: explicit WorldThread(uint16 port, const char* host); virtual int open(void*) override; - virtual int svc(); + virtual int svc() override; private: ACE_INET_Addr listen_addr; }; diff --git a/src/shared/Database/DatabaseMysql.h b/src/shared/Database/DatabaseMysql.h index d8c4ebf2..0243c28b 100644 --- a/src/shared/Database/DatabaseMysql.h +++ b/src/shared/Database/DatabaseMysql.h @@ -169,7 +169,7 @@ class MySQLConnection : public SqlConnection * @param length * @return unsigned long */ - unsigned long escape_string(char* to, const char* from, unsigned long length); + unsigned long escape_string(char* to, const char* from, unsigned long length) override; /** * @brief diff --git a/src/tools/Extractor_projects b/src/tools/Extractor_projects index 4a02e6b4..51086daf 160000 --- a/src/tools/Extractor_projects +++ b/src/tools/Extractor_projects @@ -1 +1 @@ -Subproject commit 4a02e6b4d125453454ba599a6ed0fd5bda8ed955 +Subproject commit 51086dafc9477557ebe21f59ad7076802d04d6dc