From a0e14fa424494ed35da1bd6e5e54bb36178259a7 Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Thu, 31 Oct 2024 08:29:14 +0100 Subject: implement put command --- frontend/cmd/get.cpp | 2 +- frontend/cmd/put.cpp | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) (limited to 'frontend/cmd') diff --git a/frontend/cmd/get.cpp b/frontend/cmd/get.cpp index 2a35657..0d6d12c 100644 --- a/frontend/cmd/get.cpp +++ b/frontend/cmd/get.cpp @@ -15,7 +15,7 @@ FollowupAction Player::cmd_get(string & target_name) { break; } if (target == nullptr) { - lprtf("Object \"%s\" niet gevonden\n", target_name.c_str()); + lprtf("Object \"%s\" niet gevonden.\n", target_name.c_str()); return FollowupAction::NONE; } this->location.remove_visible_object(target.get()); diff --git a/frontend/cmd/put.cpp b/frontend/cmd/put.cpp index 6e7002b..5460b02 100644 --- a/frontend/cmd/put.cpp +++ b/frontend/cmd/put.cpp @@ -1,9 +1,25 @@ +#include + #include "../Player.h" +#include "../strings.h" + +#include "backend/print.h" +#include "backend/Location.h" using namespace std; -FollowupAction Player::cmd_put(string & argv) { - // TODO +FollowupAction Player::cmd_put(string & target_name) { + auto el = find_if(this->inventory.begin(), this->inventory.end(), [target_name](const auto & object) -> bool { + return str_lower(object->get_name().c_str()) == str_lower(target_name); + }); + if (el == this->inventory.end()) { + lprtf("Object \"%s\" niet gevonden.\n", target_name.c_str()); + return FollowupAction::NONE; + } + + lprtf("Je legt %s neer op de locatie %s.\n", (*el)->get_displayname().c_str(), this->location.get_name().c_str()); + this->location.add_visible_object((*el).release()); + this->inventory.erase(el); return FollowupAction::NONE; } -- cgit v1.2.3