69 lines
1.2 KiB
C++
69 lines
1.2 KiB
C++
#ifndef RPGMODULE_H
|
|
#define RPGMODULE_H
|
|
|
|
#include "module.h"
|
|
#include <unordered_map>
|
|
|
|
class User;
|
|
|
|
struct RPGCharacter
|
|
{
|
|
int level;
|
|
int xp;
|
|
QString password;
|
|
QString pseudo;
|
|
int x;
|
|
int y;
|
|
User *user;
|
|
|
|
RPGCharacter(QString myPseudo, QString myPass) :
|
|
level(1),
|
|
xp(0),
|
|
password(myPass),
|
|
pseudo(myPseudo),
|
|
x(0),
|
|
y(0),
|
|
user(NULL)
|
|
{}
|
|
};
|
|
|
|
class CharacterMap
|
|
{
|
|
public:
|
|
std::vector<std::string> names;
|
|
std::unordered_map<std::string, RPGCharacter*> data;
|
|
|
|
void add(const std::string &name, RPGCharacter* t)
|
|
{
|
|
data[name] = t;
|
|
names.push_back(name);
|
|
}
|
|
|
|
RPGCharacter* get(const std::string &name)
|
|
{
|
|
if(data.count(name))
|
|
return data[name];
|
|
else
|
|
return NULL;
|
|
}
|
|
|
|
// TODO serialization
|
|
};
|
|
|
|
class RPGModule : public Module
|
|
{
|
|
CharacterMap charList;
|
|
std::unordered_map<User*, RPGCharacter*> charOnline;
|
|
|
|
public:
|
|
RPGModule();
|
|
|
|
void playerJoin(User* user, RPGCharacter *c);
|
|
void playerLeave(User* user);
|
|
|
|
virtual bool messageHandler(Message msg);
|
|
virtual QString getName() {return QString("rpg");}
|
|
};
|
|
|
|
#endif // RPGMODULE_H
|