added events interaction and look around in villages
This commit is contained in:
parent
a9a925ca47
commit
806efbcba0
@ -177,10 +177,44 @@ QString RPGModule::getTerrainName(int type)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Village* RPGModule::getVillage(RPGCharacter *c)
|
||||||
|
{
|
||||||
|
for(Village &v : villages)
|
||||||
|
{
|
||||||
|
if(v.x == c->x && v.y == c->y)
|
||||||
|
return &v;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
QString RPGModule::lookAt(RPGCharacter *c, QString target)
|
QString RPGModule::lookAt(RPGCharacter *c, QString target)
|
||||||
{
|
{
|
||||||
if(target.compare("around") == 0)
|
if(target.compare("around") == 0)
|
||||||
return QString("%1 is in %2").arg(c->pseudo).arg(getTerrainName(WORLDMAP[c->x][c->y]));
|
{
|
||||||
|
int terrain = WORLDMAP[c->x][c->y];
|
||||||
|
if(terrain == VILLAGE)
|
||||||
|
{
|
||||||
|
Village *v = getVillage(c);
|
||||||
|
if(v == NULL)
|
||||||
|
return QString("%1 is in an unknown village").arg(c->pseudo);
|
||||||
|
QString str = QString("%1 is in %2").arg(c->pseudo).arg(v->name);
|
||||||
|
QString evStr;
|
||||||
|
bool first = true;
|
||||||
|
for(Event &e : v->events)
|
||||||
|
{
|
||||||
|
if(first)
|
||||||
|
first = false;
|
||||||
|
else
|
||||||
|
evStr += ", ";
|
||||||
|
evStr += e.name;
|
||||||
|
}
|
||||||
|
if(!first)
|
||||||
|
str += ", you can see " + evStr;
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return QString("%1 is in %2").arg(c->pseudo).arg(getTerrainName(terrain));
|
||||||
|
}
|
||||||
else if(target.compare("north") == 0 || target.compare("n") == 0)
|
else if(target.compare("north") == 0 || target.compare("n") == 0)
|
||||||
return QString("%1 looks north and sees %2").arg(c->pseudo).arg(getTerrainName(WORLDMAP[c->x-1][c->y]));
|
return QString("%1 looks north and sees %2").arg(c->pseudo).arg(getTerrainName(WORLDMAP[c->x-1][c->y]));
|
||||||
else if(target.compare("south") == 0 || target.compare("s") == 0)
|
else if(target.compare("south") == 0 || target.compare("s") == 0)
|
||||||
@ -193,6 +227,22 @@ QString RPGModule::lookAt(RPGCharacter *c, QString target)
|
|||||||
return QString("%1 is not a valid target").arg(target);
|
return QString("%1 is not a valid target").arg(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString RPGModule::eventInteract(RPGCharacter *c, QString target)
|
||||||
|
{
|
||||||
|
Village *v = getVillage(c);
|
||||||
|
if(v != NULL)
|
||||||
|
{
|
||||||
|
for(Event &e : v->events)
|
||||||
|
{
|
||||||
|
if(e.name.compare(target) == 0)
|
||||||
|
{
|
||||||
|
return e.description;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return QString("%1 is not a valid target").arg(target);
|
||||||
|
}
|
||||||
|
|
||||||
QString RPGModule::playerTravel(RPGCharacter *c, QString dir, bool repeat)
|
QString RPGModule::playerTravel(RPGCharacter *c, QString dir, bool repeat)
|
||||||
{
|
{
|
||||||
char terrainType = WORLDMAP[c->x][c->y];
|
char terrainType = WORLDMAP[c->x][c->y];
|
||||||
@ -401,10 +451,18 @@ bool RPGModule::messageHandler(Message msg)
|
|||||||
else if(msg.args.startsWith("go "))
|
else if(msg.args.startsWith("go "))
|
||||||
{
|
{
|
||||||
QStringList paramList = msg.args.split(' ');
|
QStringList paramList = msg.args.split(' ');
|
||||||
if(charOnline.count(src) > 0 && paramList.size() == 2)
|
if(charOnline.count(src) > 0)
|
||||||
{
|
{
|
||||||
answer = say(playerTravel(charOnline[src], paramList[1], false));
|
if(paramList.size() == 2)
|
||||||
return true;
|
{
|
||||||
|
answer = say(playerTravel(charOnline[src], paramList[1], false));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if(paramList.size() == 3 && paramList[1].compare("to") == 0)
|
||||||
|
{
|
||||||
|
answer = say(eventInteract(charOnline[src], paramList[2]));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(msg.args.startsWith("travel "))
|
else if(msg.args.startsWith("travel "))
|
||||||
|
@ -56,6 +56,8 @@ struct Event
|
|||||||
ROLEPLAY
|
ROLEPLAY
|
||||||
};
|
};
|
||||||
|
|
||||||
|
QString lookAt();
|
||||||
|
|
||||||
QString name;
|
QString name;
|
||||||
QString description;
|
QString description;
|
||||||
Type type;
|
Type type;
|
||||||
@ -180,7 +182,9 @@ public:
|
|||||||
void initVillages();
|
void initVillages();
|
||||||
void playerJoin(User* user, RPGCharacter *c);
|
void playerJoin(User* user, RPGCharacter *c);
|
||||||
void playerLeave(User* user);
|
void playerLeave(User* user);
|
||||||
|
Village* getVillage(RPGCharacter *c);
|
||||||
QString lookAt(RPGCharacter *c, QString target);
|
QString lookAt(RPGCharacter *c, QString target);
|
||||||
|
QString eventInteract(RPGCharacter *c, QString target);
|
||||||
QString playerTravel(RPGCharacter *c, QString dir, bool repeat=false);
|
QString playerTravel(RPGCharacter *c, QString dir, bool repeat=false);
|
||||||
QString getTerrainName(int type);
|
QString getTerrainName(int type);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user