diff options
Diffstat (limited to 'frontend/cmd/view.cpp')
-rw-r--r-- | frontend/cmd/view.cpp | 57 |
1 files changed, 53 insertions, 4 deletions
diff --git a/frontend/cmd/view.cpp b/frontend/cmd/view.cpp index a252715..1152efe 100644 --- a/frontend/cmd/view.cpp +++ b/frontend/cmd/view.cpp @@ -2,6 +2,7 @@ #include "../strings.h" #include "backend/print.h" +#include "backend/Location.h" using namespace std; @@ -11,15 +12,63 @@ FollowupAction Player::cmd_view(string & target) { return FollowupAction::NONE; } + // view self if (str_lower(target) == "zelf") { - lprtf("Je hebt %d levenspunten.\n", this->health_points); + lprtf("Je hebt %d levenspunten.\n", this->get_health()); + lprtf("Je hebt een aanvalskans van %.0f%%.\n", this->get_attack() * 100); - // TODO: weapon - // TODO: armor + + if (this->weapon == nullptr) + lprtf("Je hebt geen wapen vast.\n"); + else + lprtf("Je hebt het volgende wapen vast: %s.\n", this->weapon->get_displayname().c_str()); + + if (this->armor == nullptr) + lprtf("Je draagt geen wapenrusting.\n"); + else + lprtf("Je draagt de volgende wapenrusting: %s.\n", this->armor->get_displayname().c_str()); + lprtf("Je hebt %u goundstuk%s.\n", this->gold, this->gold == 1 ? "" : "ken"); - // TODO: inventory + + size_t items = this->inventory.size(); + lprtf("Je hebt %d overige object%s%s\n", items, items == 1 ? "" : "en", items > 0 ? ":" : "."); + for (auto & object : this->inventory) { + lprtf("- %s\n", object->get_displayname().c_str()); + } + + return FollowupAction::NONE; + } + + // try to find visible object in location + for (Object * object : this->location.get_visible_objects()) { + if (str_lower(object->get_name().c_str()) != str_lower(target)) continue; + + lprtf("%s\n", object->get_description().c_str()); + return FollowupAction::NONE; + } + + // try to find object in inventory + for (auto & object : this->inventory) { + if (str_lower(object->get_name().c_str()) != str_lower(target)) continue; + + lprtf("%s\n", object->get_description().c_str()); + return FollowupAction::NONE; + } + + // try to find enemy by name + for (Enemy * enemy : this->location.get_enemies()) { + if (str_lower(enemy->get_name().c_str()) != str_lower(target)) continue; + + lprtf("%s\n", enemy->get_description().c_str()); + unsigned enemy_health = enemy->get_health(); + lprtf("%s heeft %s levenspunten.\n", enemy->get_name().c_str(), enemy_health); + // IF enemy_health == 0: + // TODO: show enemy hidden objects + // TODO: move enemy hidden objects to location visible objects + return FollowupAction::NONE; } + lprtf("Fout, geen entiteit met naam \"%s\" gevonden.\n", target.c_str()); return FollowupAction::NONE; } |