00001 #include "Command.h" 00002 #include "Person.h" 00003 #include "List.h" 00004 #include "Level.h" 00005 #include "Sprite.h" 00006 00007 using namespace std; 00008 00009 const std::string MoveCommand::_id = "move"; 00010 00011 MoveCommand::MoveCommand(Person *person, xDirection xDir) 00012 :_person(person),_xDir(xDir) 00013 { 00014 00015 } 00016 MoveCommand::MoveCommand(List *command) 00017 { 00018 command = command->rest(); 00019 _person = (Person *)Level::instance()->getObject(command->firstString()); 00020 command = command->rest(); 00021 _xDir = (xDirection)command->firstInt(); 00022 } 00023 void MoveCommand::execute() 00024 { 00025 _person->incrVelocity((int)_xDir * _person->getAccel(),0); 00026 _person->setXDirection(_xDir); 00027 } 00028 00029 std::string MoveCommand::getString() 00030 { 00031 List *command = new List(); 00032 command->snoc(new Atom(_id)); 00033 command->snoc(new Atom(_person->id())); 00034 command->snoc(new Atom(_xDir)); 00035 string commandString = command->getString(); 00036 delete command; 00037 00038 return commandString; 00039 }