66 lines
1.4 KiB
C++

// Copyright (C) 2007-2025 EQ2EMulator
// Licensed under GPL v3
#ifndef TITLES_H_
#define TITLES_H_
#include <string>
#include <map>
#include <vector>
#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<sint32,Title*> titles_list;
Mutex MMasterTitleMutex;
};
class PlayerTitlesList {
public:
PlayerTitlesList();
~PlayerTitlesList();
Title* GetTitle(sint32 index);
Title* GetTitleByName(const char* title_name);
vector<Title*>* GetAllTitles();
void Add(Title* title);
int32 Size();
void ReleaseReadLock() { MPlayerTitleMutex.releasereadlock(); }
private:
vector<Title*> player_titles_list;
Mutex MPlayerTitleMutex;
};
#endif