added map and nice travel sentences
This commit is contained in:
parent
455455dca7
commit
afa0b3f90f
@ -24,30 +24,76 @@ void RPGModule::playerLeave(User *user)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString RPGModule::getTerrainName(int type)
|
||||||
|
{
|
||||||
|
switch(type)
|
||||||
|
{
|
||||||
|
case FOREST :
|
||||||
|
return QString("the forest");
|
||||||
|
case MOUNTAINS :
|
||||||
|
return QString("the mountains");
|
||||||
|
case PLAINS :
|
||||||
|
return QString("the plains");
|
||||||
|
case ROAD :
|
||||||
|
return QString("a road");
|
||||||
|
case VILLAGE :
|
||||||
|
return QString("a village");
|
||||||
|
default :
|
||||||
|
return QString("Hell");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QString RPGModule::playerTravel(RPGCharacter *c, QString dir)
|
QString RPGModule::playerTravel(RPGCharacter *c, QString dir)
|
||||||
{
|
{
|
||||||
|
char terrainType = WORLDMAP[c->x][c->y];
|
||||||
|
QString direction;
|
||||||
|
QString currentArea = getTerrainName(terrainType);
|
||||||
|
bool blocked = false;
|
||||||
|
|
||||||
if(dir.compare("north") == 0 || dir.compare("n") == 0)
|
if(dir.compare("north") == 0 || dir.compare("n") == 0)
|
||||||
{
|
{
|
||||||
|
if(c->y == 0)
|
||||||
|
blocked = true;
|
||||||
|
else
|
||||||
c->y -= 1;
|
c->y -= 1;
|
||||||
return QString("%1 walks north and is still in the forest").arg(c->pseudo);
|
direction = "north";
|
||||||
}
|
}
|
||||||
else if(dir.compare("south") == 0 || dir.compare("s") == 0)
|
else if(dir.compare("south") == 0 || dir.compare("s") == 0)
|
||||||
{
|
{
|
||||||
|
if(c->y == 24)
|
||||||
|
blocked = true;
|
||||||
|
else
|
||||||
c->y += 1;
|
c->y += 1;
|
||||||
return QString("%1 walks south and is still in the forest").arg(c->pseudo);
|
direction = "south";
|
||||||
}
|
}
|
||||||
else if(dir.compare("west") == 0 || dir.compare("w") == 0)
|
else if(dir.compare("west") == 0 || dir.compare("w") == 0)
|
||||||
{
|
{
|
||||||
|
if(c->x == 0)
|
||||||
|
blocked = true;
|
||||||
|
else
|
||||||
c->x -= 1;
|
c->x -= 1;
|
||||||
return QString("%1 walks west and is still in the forest").arg(c->pseudo);
|
direction = "west";
|
||||||
}
|
}
|
||||||
else if(dir.compare("east") == 0 || dir.compare("e") == 0)
|
else if(dir.compare("east") == 0 || dir.compare("e") == 0)
|
||||||
{
|
{
|
||||||
|
if(c->x == 24)
|
||||||
|
blocked = true;
|
||||||
|
else
|
||||||
c->x += 1;
|
c->x += 1;
|
||||||
return QString("%1 walks east and is still in the forest").arg(c->pseudo);
|
direction = "east";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return QString("%1 is not a valid direction, use : north, south, west, east");
|
return QString("%1 is not a valid direction, use : north, south, west, east").arg(dir);
|
||||||
|
|
||||||
|
if(blocked)
|
||||||
|
return QString("%1 cannot go %2, a hill is blocking his way").arg(c->pseudo).arg(direction);
|
||||||
|
|
||||||
|
char newTerrainType = WORLDMAP[c->x][c->y];
|
||||||
|
if(terrainType == newTerrainType)
|
||||||
|
return QString("%1 is traveling %2 and is still in %3").arg(c->pseudo).arg(direction).arg(currentArea);
|
||||||
|
else
|
||||||
|
return QString("%1 is traveling %2, leaving %3 and entering %4")
|
||||||
|
.arg(c->pseudo).arg(direction).arg(currentArea).arg(getTerrainName(WORLDMAP[c->x][c->y]));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RPGModule::messageHandler(Message msg)
|
bool RPGModule::messageHandler(Message msg)
|
||||||
|
@ -6,32 +6,41 @@
|
|||||||
|
|
||||||
class User;
|
class User;
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
FOREST = 'X',
|
||||||
|
MOUNTAINS = '^',
|
||||||
|
PLAINS = ' ',
|
||||||
|
ROAD = '#',
|
||||||
|
VILLAGE = 'O'
|
||||||
|
};
|
||||||
|
|
||||||
const char WORLDMAP[25][26] = {
|
const char WORLDMAP[25][26] = {
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"^^^^^^^^^^^^^^^^^^^^^^^^^",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"^^^^^^^^^^^^^^^^^^^^^^^^^",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"^^^^^^^^^^XXXXXXX^^^^^^^^",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"^^^^^XXXXXXXXXXXXXX^^^^^^",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"^^^XXXXOXXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"^^^XXXX#XXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"^^XXXXX#XXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXX#XXXXXXXXXXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXX##########OXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXX#XXXXXXX#XXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXX#XXXXXXX#XXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XO######XXXXXXX#XXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXX#XXXXXXX#XXXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXX# # XXXXXXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXX # # XXXX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXX #####O####### XX",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXX # # ",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXX # # ",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXO#### # ",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXX # ",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXX # ",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXX ^^^#^^^ ",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXX^^^^^^^^^^O^^^^^",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXX^^^^^^^^^^^^^^^^^^^",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXX"};
|
"XX^^^^^^^^^^^^^^^^^^^^^^^"};
|
||||||
|
|
||||||
|
|
||||||
struct RPGCharacter
|
struct RPGCharacter
|
||||||
@ -89,6 +98,7 @@ public:
|
|||||||
void playerJoin(User* user, RPGCharacter *c);
|
void playerJoin(User* user, RPGCharacter *c);
|
||||||
void playerLeave(User* user);
|
void playerLeave(User* user);
|
||||||
QString playerTravel(RPGCharacter *c, QString dir);
|
QString playerTravel(RPGCharacter *c, QString dir);
|
||||||
|
QString getTerrainName(int type);
|
||||||
|
|
||||||
virtual bool messageHandler(Message msg);
|
virtual bool messageHandler(Message msg);
|
||||||
virtual QString getName() {return QString("rpg");}
|
virtual QString getName() {return QString("rpg");}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user