#ifndef RPGMODULE_H #define RPGMODULE_H #include "module.h" #include class User; const char WORLDMAP[25][26] = { "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX"}; 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(13), y(13), user(NULL) {} }; class CharacterMap { public: std::vector names; std::unordered_map 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 charOnline; public: RPGModule(); void playerJoin(User* user, RPGCharacter *c); void playerLeave(User* user); QString playerTravel(RPGCharacter *c, QString dir); virtual bool messageHandler(Message msg); virtual QString getName() {return QString("rpg");} }; #endif // RPGMODULE_H