получение instance id для encounter journal
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
|
||||
#include <cstdint>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
||||
class Player;
|
||||
@@ -36,28 +37,34 @@ namespace MoonWell::PlayerGuide
|
||||
|
||||
// Optional type-specific helpers. Zero means "not set" and
|
||||
// serialiser omits it.
|
||||
uint32 questId = 0;
|
||||
uint32 questChainId = 0;
|
||||
uint32 instanceId = 0;
|
||||
uint32 encounterId = 0;
|
||||
uint32 achievementId = 0;
|
||||
uint32 factionId = 0;
|
||||
uint32 professionId = 0;
|
||||
uint32 itemId = 0;
|
||||
uint32 currencyId = 0;
|
||||
uint32 questId = 0;
|
||||
uint32 questChainId = 0;
|
||||
// ej_instanceID: key into client's JOURNALINSTANCE table.
|
||||
// Consumed by EncounterJournal_DisplayInstance / EJ_SelectInstance.
|
||||
uint32 ejInstanceId = 0;
|
||||
// WoW map id (for telemetry / teleport / fallback). NOT used by
|
||||
// the client to open EJ.
|
||||
uint32 mapId = 0;
|
||||
uint32 encounterId = 0;
|
||||
uint32 achievementId = 0;
|
||||
uint32 factionId = 0;
|
||||
uint32 professionId = 0;
|
||||
uint32 itemId = 0;
|
||||
uint32 currencyId = 0;
|
||||
};
|
||||
|
||||
struct Recommendation
|
||||
{
|
||||
uint32 id = 0;
|
||||
uint32 id = 0;
|
||||
std::string type;
|
||||
std::string title;
|
||||
std::string description;
|
||||
uint32 instanceId = 0;
|
||||
uint32 encounterId = 0;
|
||||
uint32 questId = 0;
|
||||
uint32 itemId = 0;
|
||||
uint32 priority = 0;
|
||||
uint32 ejInstanceId = 0; // JOURNALINSTANCE key
|
||||
uint32 mapId = 0; // WoW map id (auxiliary)
|
||||
uint32 encounterId = 0;
|
||||
uint32 questId = 0;
|
||||
uint32 itemId = 0;
|
||||
uint32 priority = 0;
|
||||
};
|
||||
|
||||
struct Reward
|
||||
@@ -105,6 +112,11 @@ namespace MoonWell::PlayerGuide
|
||||
bool LogPayloads() const { return _logPayloads; }
|
||||
uint32 ChunkSize() const { return _chunkSize; }
|
||||
|
||||
// Reloads (map_id -> ej_instance.id/name) cache from
|
||||
// custom_ej_instance. Called from LoadConfig() and from the
|
||||
// OnLoadCustomDatabaseTable world hook.
|
||||
void ReloadEncounterJournalCache();
|
||||
|
||||
private:
|
||||
Mgr() = default;
|
||||
|
||||
@@ -127,6 +139,15 @@ namespace MoonWell::PlayerGuide
|
||||
|
||||
void AppendRecommendations(Payload& out, Player* player) const;
|
||||
|
||||
struct EjInstanceRef
|
||||
{
|
||||
uint32 ejId = 0; // custom_ej_instance.id
|
||||
std::string name; // custom_ej_instance.name
|
||||
};
|
||||
|
||||
// mapId -> EJ instance ref. Filled at config load.
|
||||
std::unordered_map<uint32, EjInstanceRef> _ejByMapId;
|
||||
|
||||
bool _enabled = true;
|
||||
bool _logPayloads = false;
|
||||
uint32 _chunkSize = 230; // per-frame body capacity (addon channel)
|
||||
|
||||
Reference in New Issue
Block a user