removed walnut cracking, added rpg delete

This commit is contained in:
Anselme 2016-03-16 16:02:52 +01:00
parent c15da6c839
commit a3b8f75aa7
2 changed files with 47 additions and 25 deletions

View File

@ -200,8 +200,41 @@ bool RPGModule::messageHandler(Message msg)
RPGCharacter *c = charList.get(paramList[2].toStdString());
if(c != NULL)
{
playerJoin(getUsers()->getFromNick(msg.nick), c);
answer = say(QString("%1 joins the RPG as %2").arg(msg.nick).arg(paramList[2]));
if(c->password.compare(paramList[3]) == 0)
{
playerJoin(getUsers()->getFromNick(msg.nick), c);
answer = say(QString("%1 joins the RPG as %2").arg(msg.nick).arg(paramList[2]));
}
else
privateSay(QString("ERROR : Wrong password"), msg.nick);
}
else
answer = privateSay(QString("ERROR : Character name \"%1\" does not exists").arg(paramList[2]), msg.nick);
}
return true;
}
else if(msg.args.startsWith("!rpg delete") && !msg.target.contains(getChan()))
{
QStringList paramList = msg.args.split(' ');
if(paramList.size() != 4)
answer = privateSay("usage : !rpg delete [name of character] [password]", msg.nick);
else
{
RPGCharacter *c = charList.get(paramList[2].toStdString());
if(c != NULL)
{
if(c->password.compare(paramList[3]) == 0)
{
for(const std::pair<User*, RPGCharacter*> &it : charOnline)
{
if(it.second == c)
charOnline.erase(it.first);
}
charList.erase(paramList[2].toStdString());
answer = say(QString("Character %2 has been deleted").arg(paramList[2]));
}
else
privateSay(QString("ERROR : Wrong password"), msg.nick);
}
else
answer = privateSay(QString("ERROR : Character name \"%1\" does not exists").arg(paramList[2]), msg.nick);
@ -238,17 +271,6 @@ bool RPGModule::messageHandler(Message msg)
return true;
}
}
else if(msg.args.compare("!rpg debug") == 0 && src->isOp())
{
QString str;
for(const std::string &name : charList.names)
str.append(name.c_str()).append(" ");
if(!str.isEmpty())
{
answer = say(str);
return true;
}
}
else if(msg.args.compare("!rpg reset") == 0 && src->isOp())
{
charList.data.clear();
@ -285,20 +307,12 @@ bool RPGModule::messageHandler(Message msg)
answer = say("you look around and you find a walnut.");
return true;
}
else if(msg.args.compare("break walnut") == 0)
{
answer = say("you use a rock to break the walnut, there is a walnut kernel inside.");
return true;
}
else if(msg.args.compare("eat walnut kernel") == 0)
{
answer = say("you eat the walnut kernel, and you feel repleted.");
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);
answer = privateSay("Commands : register, join, delete, leave, save, stats, list", msg.nick);
answer += privateSay("Create new character (works only in private message) : !rpg register [name of character] [password]", msg.nick);
answer += privateSay("Join game with character (works only in private message) : !rpg join [name of character] [password]", msg.nick);
answer += privateSay("Delete character (works only in private message) : !rpg delete [name of character] [password]", msg.nick);
answer += privateSay("leave the game : !rpg leave", msg.nick);
answer += privateSay("show your stats : !rpg stats", msg.nick);
answer += privateSay("show all in-game players : !rpg list", msg.nick);

View File

@ -99,7 +99,15 @@ public:
return NULL;
}
// TODO serialization
void erase(const std::string &name)
{
data.erase(name);
for(auto it = names.begin(); it != names.end(); ++it)
{
if(*it == name)
names.erase(it);
}
}
};
class RPGModule : public Module