66 lines
1.4 KiB
C++
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 |