added world map, players can move

This commit is contained in:
Anselme 2016-03-14 16:15:10 +01:00
parent da3cce6c72
commit 455455dca7
2 changed files with 67 additions and 2 deletions

View File

@ -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);

View File

@ -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");}