From 0d2fd7a12bdc1fba93f2ee1cb5b35abad877ade5 Mon Sep 17 00:00:00 2001 From: j-p-e-g Date: Sun, 2 Sep 2007 12:40:44 +0000 Subject: Implemented patch 1773718 (improved wizard commands) and patch 1783003 (ímproved menu sorting), both by zelgadis. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2041 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/message.cc | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'crawl-ref/source/message.cc') diff --git a/crawl-ref/source/message.cc b/crawl-ref/source/message.cc index ef34e89355..123533f1de 100644 --- a/crawl-ref/source/message.cc +++ b/crawl-ref/source/message.cc @@ -431,6 +431,39 @@ void mpr(const char *inf, msg_channel_type channel, int param) } } +// mpr() an arbitrarily long list of strings without truncation or risk +// of overflow. +void mpr_comma_separated_list(const std::string prefix, + const std::vector list, + const std::string &andc, + const std::string &comma, + const msg_channel_type channel, + const int param) +{ + std::string out = prefix; + unsigned width = get_number_of_cols() - 1; + + for(int i = 0, size = list.size(); i < size; i++) + { + std::string new_str = list[i]; + + if (size > 0 && i < (size - 2)) + new_str += comma; + else if (i == (size - 2)) + new_str += andc; + + if (out.length() + new_str.length() >= width) + { + mpr(out.c_str(), channel, param); + out = new_str; + } + else + out += new_str; + } + mpr(out.c_str(), channel, param); +} + + // checks whether a given message contains patterns relevant for // notes, stop_running or sounds and handles these cases static void mpr_check_patterns(const std::string& message, -- cgit v1.2.3-54-g00ecf