#ifndef RAGNAROK_SOURCE_CONTENTS_ADVENTUREGUIDEMGR_H #define RAGNAROK_SOURCE_CONTENTS_ADVENTUREGUIDEMGR_H #include "Script/LuaInstance.h" #include #include #include #include #include #include #include struct AdventureGuideDetail { /* 0000 */ int unknown_0000; /* 0004 */ int unknown_0004; /* 0008 */ int unknown_0008; /* 000C */ std::string text; }; struct AdventureGuideIntro { /* 0000 */ int unknown_0000; /* 0004 */ std::string title; /* 001C */ std::string text; /* 0034 */ std::map details; }; struct AdventureGuideText { /* 0000 */ std::string first; /* 0018 */ std::string second; }; struct AdventureGuideEpisode { /* 0000 */ std::string name; /* 0018 */ int order; /* 001C */ int unknown_001C; /* 0020 */ std::vector values; }; struct AdventureGuideContents { /* 0000 */ std::uint8_t unknown_0000; /* 0004 */ int unknown_0004; /* 0008 */ int unknown_0008; /* 000C */ int unknown_000C; /* 0010 */ std::string first; /* 0028 */ std::string second; /* 0040 */ std::vector values; }; struct AdventureGuideEntry { /* 0000 */ std::uint8_t unknown_0000; /* 0001 */ std::uint8_t unknown_0001; /* 0002 */ std::uint8_t unknown_0002; /* 0004 */ int unknown_0004; /* 0008 */ int unknown_0008; /* 000C */ std::string text; /* 0024 */ std::vector values; }; // VTABLE: vt_00350 class CAdventureGuideMgr { public: static void Destroy(); /* 0004 */ CLuaInstance m_lua; /* 000C */ std::map m_intros; /* 0014 */ std::string unknown_0014; /* 002C */ std::map unknown_002C; /* 0034 */ std::list m_episodes; /* 003C */ std::map> unknown_003C; /* 0044 */ std::map> unknown_0044; /* 004C */ std::map> unknown_004C; /* 0054 */ std::map> unknown_0054; /* 005C */ std::map> unknown_005C; /* 0064 */ bool m_initialized; CAdventureGuideMgr(); virtual ~CAdventureGuideMgr(); void GetEpisodeList(std::list& out); void GetContentsList(std::list>& out, int type, int id); }; extern CAdventureGuideMgr* g_adventureGuideMgr; #if defined(_WIN32) && !defined(_WIN64) static_assert(sizeof(AdventureGuideDetail) == 0x24); static_assert(sizeof(AdventureGuideIntro) == 0x3C); static_assert(offsetof(AdventureGuideIntro, details) == 0x34); static_assert(sizeof(AdventureGuideText) == 0x30); static_assert(sizeof(AdventureGuideEpisode) == 0x2C); static_assert(offsetof(AdventureGuideEpisode, order) == 0x18); static_assert(offsetof(AdventureGuideEpisode, values) == 0x20); static_assert(sizeof(AdventureGuideContents) == 0x4C); static_assert(offsetof(AdventureGuideContents, values) == 0x40); static_assert(sizeof(AdventureGuideEntry) == 0x30); static_assert(offsetof(AdventureGuideEntry, text) == 0xC); static_assert(offsetof(AdventureGuideEntry, values) == 0x24); static_assert(offsetof(CAdventureGuideMgr, m_lua) == 0x4); static_assert(offsetof(CAdventureGuideMgr, m_intros) == 0xC); static_assert(offsetof(CAdventureGuideMgr, unknown_0014) == 0x14); static_assert(offsetof(CAdventureGuideMgr, unknown_002C) == 0x2C); static_assert(offsetof(CAdventureGuideMgr, m_episodes) == 0x34); static_assert(offsetof(CAdventureGuideMgr, unknown_003C) == 0x3C); static_assert(offsetof(CAdventureGuideMgr, unknown_0054) == 0x54); static_assert(offsetof(CAdventureGuideMgr, m_initialized) == 0x64); static_assert(sizeof(CAdventureGuideMgr) == 0x68); #endif #endif