#ifndef RPGMODULE_H #define RPGMODULE_H #include "module.h" #include class User; enum { FOREST = 'X', MOUNTAINS = '^', PLAINS = ' ', ROAD = '#', VILLAGE = 'O' }; const char WORLDMAP[25][26] = { "^^^^^^^^^^^^^^^^^^^^^^^^^", "^^^^^^^^^^^^^^^^^^^^^^^^^", "^^^^^^^^^^XXXXXXX^^^^^^^^", "^^^^^XXXXXXXXXXXXXX^^^^^^", "^^^XXXXOXXXXXXXXXXXXXXXXX", "^^^XXXX#XXXXXXXXXXXXXXXXX", "^^XXXXX#XXXXXXXXXXXXXXXXX", "XXXXXXX#XXXXXXXXXXXXXXXXX", "XXXXXXX##########OXXXXXXX", "XXXXXXX#XXXXXXX#XXXXXXXXX", "XXXXXXX#XXXXXXX#XXXXXXXXX", "XO######XXXXXXX#XXXXXXXXX", "XXXXXXX#XXXXXXX#XXXXXXXXX", "XXXXXXX# # XXXXXXXX", "XXXX # # XXXX", "XXXX #####O####### XX", "XXXX # # ", "XXXX # # ", "XXXO#### # ", "XXXX # ", "XXXX # ", "XXXXXXX ^^^#^^^ ", "XXXXXXXXX^^^^^^^^^^O^^^^^", "XXXXXX^^^^^^^^^^^^^^^^^^^", "XX^^^^^^^^^^^^^^^^^^^^^^^"}; 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); QString getTerrainName(int type); virtual bool messageHandler(Message msg); virtual QString getName() {return QString("rpg");} }; #endif // RPGMODULE_H