std::vector<ColoredString> Engine::getActorsBenethPlayersFeet() { std::vector< ColoredString > items; MapPtr map = getWorld().getCurrentMap(); if ( map ) { std::function<bool(amarlon::ActorPtr)> filterFun = [&](ActorPtr a) -> bool { return a != Actor::Player; }; std::vector<ActorPtr> actorsOnTile = map->getActors(Actor::Player->getX(), Actor::Player->getY(), &filterFun); for ( ActorPtr actor : actorsOnTile ) { std::string msg = actor->getName(); PickablePtr pickable = actor->getFeature<Pickable>(); if ( pickable && pickable->getAmount() > 1 ) { msg = msg + " (" + std::to_string(pickable->getAmount()) + ")"; } items.push_back( ColoredString( msg, TCODColor::darkLime ) ); } } return items; }
gui::ColoredText::operator ColoredString() { return ColoredString(m_text.empty() ? "" : m_text.front()->first, m_text.empty() ? std::make_pair(sf::Color(), sf::Text::Regular) : m_text.front()->second); }