Source

zorkish / commands / DropCommand.hpp

/*
 * DropCommand.hpp
 *
 *  Created on: 11/09/2012
 *      Author: rhys
 */

#ifndef DROPCOMMAND_HPP_
#define DROPCOMMAND_HPP_

#include "../Command.hpp"

class DropCommand : public Command {
public:
    virtual ~DropCommand() = default;

    virtual std::string run(std::string params, World&, Player& player) {
        if (params.empty()) {
            return "You must specify an item.";
        }

        std::stringstream ss;
        auto it = player.inv.take(params);
        if (it) {
            ss << "You drop " << it->short_name() << ".";
            player.current_location()->inv.add(std::move(it));
        } else {
            ss << "You're not carrying a " << params << ".";
        }

        return ss.str();
    }
};

#endif /* DROPCOMMAND_HPP_ */