diff --git a/app/rpgmodule.cpp b/app/rpgmodule.cpp index caae400..f027494 100644 --- a/app/rpgmodule.cpp +++ b/app/rpgmodule.cpp @@ -24,6 +24,32 @@ void RPGModule::playerLeave(User *user) } } +QString RPGModule::playerTravel(RPGCharacter *c, QString dir) +{ + if(dir.compare("north") == 0 || dir.compare("n") == 0) + { + c->y -= 1; + return QString("%1 walks north and is still in the forest").arg(c->pseudo); + } + else if(dir.compare("south") == 0 || dir.compare("s") == 0) + { + c->y += 1; + return QString("%1 walks south and is still in the forest").arg(c->pseudo); + } + else if(dir.compare("west") == 0 || dir.compare("w") == 0) + { + c->x -= 1; + return QString("%1 walks west and is still in the forest").arg(c->pseudo); + } + else if(dir.compare("east") == 0 || dir.compare("e") == 0) + { + c->x += 1; + return QString("%1 walks east and is still in the forest").arg(c->pseudo); + } + else + return QString("%1 is not a valid direction, use : north, south, west, east"); +} + bool RPGModule::messageHandler(Message msg) { User* src = getUsers()->getFromNick(msg.nick); @@ -71,6 +97,7 @@ bool RPGModule::messageHandler(Message msg) { answer = say(QString("%1 (%2) left the RPG").arg(charOnline[src]->pseudo).arg(src->getNick())); playerLeave(src); + return true; } } else if(msg.args.compare("!rpg list") == 0) @@ -94,6 +121,15 @@ bool RPGModule::messageHandler(Message msg) return true; } } + else if(msg.args.startsWith("go ")) + { + QStringList paramList = msg.args.split(' '); + if(charOnline.count(src) > 0 && paramList.size() == 2) + { + answer = say(playerTravel(charOnline[src], paramList[1])); + return true; + } + } else if(msg.args.compare("!rpg help") == 0) { answer = privateSay("Create new character (works only in private message) : !rpg register [name of character] [password]", msg.nick); diff --git a/app/rpgmodule.h b/app/rpgmodule.h index 3ba8f41..4d74985 100644 --- a/app/rpgmodule.h +++ b/app/rpgmodule.h @@ -6,6 +6,34 @@ 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; @@ -21,8 +49,8 @@ struct RPGCharacter xp(0), password(myPass), pseudo(myPseudo), - x(0), - y(0), + x(13), + y(13), user(NULL) {} }; @@ -60,6 +88,7 @@ public: 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");}