// Copyright (C) 2007-2025 EQ2EMulator // Licensed under GPL v3 #ifndef TITLES_H_ #define TITLES_H_ #include #include #include #include "../common/Mutex.h" #include "../common/types.h" using namespace std; class Title { public: Title(); Title(Title* title); ~Title(); void SetID(int32 id) {this->id = id;} void SetName(const char *name) {strncpy(this->name, name, sizeof(this->name));} void SetPrefix(int8 prefix) {this->prefix = prefix;} void SetSaveNeeded(bool save_needed) {this->save_needed = save_needed;} sint32 GetID() {return id;} const char* GetName() {return name;} int8 GetPrefix() {return prefix;} bool GetSaveNeeded() {return save_needed;} private: sint32 id; int8 prefix; char name[256]; bool save_needed; }; class MasterTitlesList { public: MasterTitlesList(); ~MasterTitlesList(); void Clear(); int32 Size(); void AddTitle(Title* title); Title* GetTitle(sint32 id); Title* GetTitleByName(const char* title_name); private: map titles_list; Mutex MMasterTitleMutex; }; class PlayerTitlesList { public: PlayerTitlesList(); ~PlayerTitlesList(); Title* GetTitle(sint32 index); Title* GetTitleByName(const char* title_name); vector* GetAllTitles(); void Add(Title* title); int32 Size(); void ReleaseReadLock() { MPlayerTitleMutex.releasereadlock(); } private: vector player_titles_list; Mutex MPlayerTitleMutex; }; #endif