diff --git a/Source/Contents/ActorNameCard.cpp b/Source/Contents/ActorNameCard.cpp new file mode 100644 index 0000000..d26303f --- /dev/null +++ b/Source/Contents/ActorNameCard.cpp @@ -0,0 +1,20 @@ +#include "Contents/ActorNameCard.h" + + + +// FUNCTION: fn_03487 +void CActorNameCard::Reset() { + this->name.clear(); + this->unknown_001C.clear(); + this->unknown_0034.clear(); + this->unknown_004C.clear(); + this->unknown_0064.clear(); + this->unknown_007C.clear(); + this->unknown_0094 = 0; +} + + + + + + diff --git a/Source/Contents/ActorNameCard.h b/Source/Contents/ActorNameCard.h new file mode 100644 index 0000000..5b3d79e --- /dev/null +++ b/Source/Contents/ActorNameCard.h @@ -0,0 +1,53 @@ +#ifndef RAGNAROK_SOURCE_CONTENTS_ACTORNAMECARD_H +#define RAGNAROK_SOURCE_CONTENTS_ACTORNAMECARD_H + +#include +#include +#include +#include + +class CActorNameCard { +public: + CActorNameCard(); + virtual ~CActorNameCard(); + void Reset(); + + /* 0004 */ std::string name; + /* 001C */ std::string unknown_001C; + /* 0034 */ std::string unknown_0034; + /* 004C */ std::string unknown_004C; + /* 0064 */ std::string unknown_0064; + /* 007C */ std::string unknown_007C; + /* 0094 */ std::uint32_t unknown_0094; + /* 0098 */ unsigned char received; +}; + +class CActorNameCardHolder { +public: + CActorNameCardHolder(); + virtual ~CActorNameCardHolder(); + std::string Name(std::uint32_t id); + void SetName(std::uint32_t id, std::string name); + void Set(std::uint32_t id, std::string name, std::string value1, std::string value2, std::string value3, std::string value4, std::string value5, + std::uint32_t value); + std::uint32_t FindId(std::string name); + std::size_t Erase(std::uint32_t id); + bool Contains(std::uint32_t id) const; + void Clear(); + + struct Request { + /* 0000 */ std::uint32_t id; + /* 0004 */ std::uint32_t tick; + }; + + /* 0004 */ std::map cards; + /* 000C */ std::deque pending; + /* 0020 */ std::deque requests; +}; + +#if defined(_WIN32) && !defined(_WIN64) +static_assert(sizeof(CActorNameCard) == 156); +static_assert(sizeof(CActorNameCardHolder) == 52); +#endif + +#endif diff --git a/Source/Contents/ActorNameDirectory.cpp b/Source/Contents/ActorNameDirectory.cpp new file mode 100644 index 0000000..d4bd666 --- /dev/null +++ b/Source/Contents/ActorNameDirectory.cpp @@ -0,0 +1,4 @@ +#include "Contents/ActorNameCard.h" + + + diff --git a/compile.json b/compile.json index 49b4d91..029f0bd 100644 --- a/compile.json +++ b/compile.json @@ -236,6 +236,8 @@ "Source/Client/Mode/ModeDragState.cpp": 2, "Source/Client/Mode/ModeTooltip.cpp": 2, "Source/Client/ReplayPacketRecorder.cpp": 2, + "Source/Contents/ActorNameCard.cpp": 4, + "Source/Contents/ActorNameDirectory.cpp": 4, "Source/Contents/Actors/AttackMotion.cpp": 4, "Source/Contents/Actors/GameObject.cpp": 4, "Source/Contents/Actors/RenderObject.cpp": 4,