From 774d16667df9d3858663748dbf9536dddaf51536 Mon Sep 17 00:00:00 2001 From: Taezen <86413840+Taezen@users.noreply.github.com> Date: Tue, 7 Sep 2021 16:50:13 +0200 Subject: [PATCH] little map manager rework --- src/common/Exd/ExdDataGenerated.cpp | 13 +- src/common/Exd/ExdDataGenerated.h | 11 +- src/world/Event/EventHandler.h | 7 + src/world/Manager/MapMgr.cpp | 929 ++++++++------------ src/world/Manager/MapMgr.h | 95 +- src/world/Script/NativeScriptApi.cpp | 6 +- src/world/Script/NativeScriptApi.h | 3 + src/world/ServerMgr.cpp | 2 +- src/world/Territory/InstanceObjectCache.cpp | 63 +- src/world/Territory/InstanceObjectCache.h | 24 + 10 files changed, 501 insertions(+), 652 deletions(-) diff --git a/src/common/Exd/ExdDataGenerated.cpp b/src/common/Exd/ExdDataGenerated.cpp index 130023d6..b6f845ca 100644 --- a/src/common/Exd/ExdDataGenerated.cpp +++ b/src/common/Exd/ExdDataGenerated.cpp @@ -4582,9 +4582,11 @@ Sapphire::Data::GuildleveAssignment::GuildleveAssignment( uint32_t row_id, Sapph { auto row = exdData->m_GuildleveAssignmentDat.get_row( row_id ); type = exdData->getField< std::string >( row, 0 ); + typeId = exdData->getField< uint8_t >( row, 1 ); assignmentTalk = exdData->getField< uint32_t >( row, 2 ); quest.push_back( exdData->getField< uint32_t >( row, 3 ) ); quest.push_back( exdData->getField< uint32_t >( row, 4 ) ); + grandCompanyRank = exdData->getField< uint8_t >( row, 10 ); } Sapphire::Data::GuildleveAssignmentCategory::GuildleveAssignmentCategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -7669,13 +7671,16 @@ Sapphire::Data::Quest::Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated* classJobCategory1 = exdData->getField< uint8_t >( row, 6 ); classJobLevel1 = exdData->getField< uint16_t >( row, 7 ); previousQuestJoin = exdData->getField< uint8_t >( row, 8 ); - previousQuest0 = exdData->getField< uint32_t >( row, 9 ); - previousQuest1 = exdData->getField< uint32_t >( row, 11 ); - previousQuest2 = exdData->getField< uint32_t >( row, 12 ); + previousQuest.push_back( exdData->getField< uint32_t >( row, 9 ) ); + previousQuest0Sequence = exdData->getField< uint8_t >( row, 10 ); + previousQuest.push_back( exdData->getField< uint32_t >( row, 11 ) ); + previousQuest.push_back( exdData->getField< uint32_t >( row, 12 ) ); questLockJoin = exdData->getField< uint8_t >( row, 13 ); questLock.push_back( exdData->getField< uint32_t >( row, 14 ) ); questLock.push_back( exdData->getField< uint32_t >( row, 15 ) ); header = exdData->getField< uint16_t >( row, 16 ); + startTown = exdData->getField< uint8_t >( row, 17 ); + classJobUnlockFlag = exdData->getField< uint8_t >( row, 18 ); classJobUnlock = exdData->getField< uint8_t >( row, 19 ); grandCompany = exdData->getField< uint8_t >( row, 20 ); grandCompanyRank = exdData->getField< uint8_t >( row, 21 ); @@ -7691,6 +7696,8 @@ Sapphire::Data::Quest::Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated* beastTribe = exdData->getField< uint8_t >( row, 31 ); beastReputationRank = exdData->getField< uint8_t >( row, 32 ); beastReputationValue = exdData->getField< uint16_t >( row, 33 ); + satisfactionNpc = exdData->getField< uint8_t >( row, 34 ); + satisfactionLevel = exdData->getField< uint8_t >( row, 35 ); mountRequired = exdData->getField< int32_t >( row, 36 ); isHouseRequired = exdData->getField< bool >( row, 37 ); deliveryQuest = exdData->getField< uint8_t >( row, 38 ); diff --git a/src/common/Exd/ExdDataGenerated.h b/src/common/Exd/ExdDataGenerated.h index b670239f..7f890fdd 100644 --- a/src/common/Exd/ExdDataGenerated.h +++ b/src/common/Exd/ExdDataGenerated.h @@ -4366,8 +4366,10 @@ struct GuideTitle struct GuildleveAssignment { std::string type; + uint8_t typeId; uint32_t assignmentTalk; std::vector< uint32_t > quest; + uint8_t grandCompanyRank; GuildleveAssignment( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -6324,12 +6326,13 @@ struct Quest uint8_t classJobCategory1; uint16_t classJobLevel1; uint8_t previousQuestJoin; - uint32_t previousQuest0; - uint32_t previousQuest1; - uint32_t previousQuest2; + std::vector< uint32_t > previousQuest; + uint8_t previousQuest0Sequence; uint8_t questLockJoin; std::vector< uint32_t > questLock; uint16_t header; + uint8_t startTown; + uint8_t classJobUnlockFlag; uint8_t classJobUnlock; uint8_t grandCompany; uint8_t grandCompanyRank; @@ -6343,6 +6346,8 @@ struct Quest uint8_t beastTribe; uint8_t beastReputationRank; uint16_t beastReputationValue; + uint8_t satisfactionNpc; + uint8_t satisfactionLevel; int32_t mountRequired; bool isHouseRequired; uint8_t deliveryQuest; diff --git a/src/world/Event/EventHandler.h b/src/world/Event/EventHandler.h index cec7d9a2..86c0856a 100644 --- a/src/world/Event/EventHandler.h +++ b/src/world/Event/EventHandler.h @@ -85,6 +85,13 @@ namespace Sapphire::Event QuestBattleDirector = 0x8006, }; + enum class EventState : uint8_t + { + Invisible, + Available, + Locked + }; + using SceneReturnCallback = std::function< void( Entity::Player&, const SceneResult& ) >; using SceneChainCallback = std::function< void( Entity::Player& ) >; using EventFinishCallback = std::function< void( Entity::Player&, uint64_t ) >; diff --git a/src/world/Manager/MapMgr.cpp b/src/world/Manager/MapMgr.cpp index f204020f..29ae7684 100644 --- a/src/world/Manager/MapMgr.cpp +++ b/src/world/Manager/MapMgr.cpp @@ -1,27 +1,27 @@ #include #include -#include #include #include #include -#include #include #include -#include #include #include -#include + +#include