00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "Forward.h"
00021 #include "Player.h"
00022 #include "InSocket.h"
00023 #include "Look.h"
00024 #include "North.h"
00025 #include "South.h"
00026 #include "East.h"
00027 #include "West.h"
00028 #include "FutureHandler.h"
00029
00030
00031 void Forward::Execute(InSocket *from,const std::string& params,Parse& pa)
00032 {
00033 if (from -> GetMoveEvent())
00034 {
00035 from -> BufferMove("forward");
00036 }
00037 else
00038 {
00039 Player pl(from -> GetDatabase(),from -> GetAccountName());
00040 Command *cc = NULL;
00041 if (!pl.GetFacing())
00042 pl.SetFacing(1);
00043 switch (pl.GetFacing())
00044 {
00045 case 1:
00046 cc = static_cast<FutureHandler&>(from -> Handler()).GetCommand("north");
00047 break;
00048 case 2:
00049 cc = static_cast<FutureHandler&>(from -> Handler()).GetCommand("south");
00050 break;
00051 case 3:
00052 cc = static_cast<FutureHandler&>(from -> Handler()).GetCommand("east");
00053 break;
00054 case 4:
00055 cc = static_cast<FutureHandler&>(from -> Handler()).GetCommand("west");
00056 break;
00057 }
00058 if (cc)
00059 {
00060 cc -> Execute(from, params, pa);
00061 return;
00062 }
00063 from -> Send("Not OK.\n");
00064 from -> SetPrompt();
00065 }
00066 }
00067
00068