added inventory and gold

This commit is contained in:
Anselme 2016-03-18 13:33:14 +01:00
parent 1421f3f166
commit 42b0403dc8
2 changed files with 54 additions and 3 deletions

View File

@ -14,7 +14,11 @@ QString RPGCharacter::toString()
str.append(QString::number(level)).append(" ");
str.append(QString::number(xp)).append(" ");
str.append(QString::number(x)).append(" ");
str.append(QString::number(y));
str.append(QString::number(y)).append(" ");
str.append(QString::number(gold)).append(" ");
str.append(QString::number(inventory.size()));
for(QString &item : inventory)
str.append(" ").append(item);
return str;
}
@ -74,7 +78,7 @@ void RPGModule::initVillages()
bool RPGCharacter::fromString(QString str)
{
QStringList list = str.split(QChar(' '));
if(list.size() == 6)
if(list.size() == 6) // retrocompatibilitry
{
bool ok;
pseudo = list[0];
@ -93,6 +97,34 @@ bool RPGCharacter::fromString(QString str)
return false;
return true;
}
else if(list.size() > 7)
{
bool ok;
pseudo = list[0];
password = list[1];
level = list[2].toInt(&ok);
if(!ok)
return false;
xp = list[3].toInt(&ok);
if(!ok)
return false;
x = list[4].toInt(&ok);
if(!ok)
return false;
y = list[5].toInt(&ok);
if(!ok)
return false;
gold = list[6].toInt(&ok);
if(!ok)
return false;
weapon = list[7];
int nbItems = list[8].toInt(&ok);
if(!ok)
return false;
for(int i=0; i<nbItems; ++i)
inventory.push_back(list[9+i]);
return true;
}
else
return false;
}
@ -482,6 +514,18 @@ bool RPGModule::messageHandler(Message msg)
return true;
}
}
else if(msg.args.compare("show inventory") == 0)
{
if(charOnline.count(src) > 0)
{
RPGCharacter *c = charOnline[src];
QString str = QString("%1 has %2 gold coins").arg(c->pseudo).arg(c->gold);
for(QString &s : c->inventory)
str.append(", ").append(s);
answer = say(str);
return true;
}
}
else if(msg.args.compare("!rpg help") == 0)
{
answer = privateSay("Commands : register, join, delete, leave, save, stats, list", msg.nick);

View File

@ -3,6 +3,7 @@
#include "module.h"
#include <unordered_map>
#include <QStringList>
class User;
@ -113,6 +114,9 @@ struct RPGCharacter
QString pseudo;
int x;
int y;
int gold;
QString weapon;
QStringList inventory;
User *user;
RPGCharacter(QString myPseudo, QString myPass) :
@ -125,7 +129,10 @@ struct RPGCharacter
user(NULL)
{}
RPGCharacter(QString serialisationStr) : user(NULL)
RPGCharacter(QString serialisationStr) :
gold(200),
inventory(),
user(NULL)
{
if(!fromString(serialisationStr))
{