From bbddaa28b4d5221142ce49db6aca94691f2c6054 Mon Sep 17 00:00:00 2001 From: haranp Date: Fri, 10 Oct 2008 00:52:11 +0000 Subject: Colours, pretty colours... Potential range now in darkgrey. Spell power coloured red/green/yellow/white. (This might have been there in the past and removed as fruit salad; if so sorry and I'll remove it again.) git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7206 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/spl-cast.cc | 47 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 3 deletions(-) (limited to 'crawl-ref/source/spl-cast.cc') diff --git a/crawl-ref/source/spl-cast.cc b/crawl-ref/source/spl-cast.cc index 518dfb8456..1f81c690b8 100644 --- a/crawl-ref/source/spl-cast.cc +++ b/crawl-ref/source/spl-cast.cc @@ -168,6 +168,41 @@ static std::string _spell_base_description(spell_type spell) return desc.str(); } +static int _string_tag_length(const std::string& s) +{ + int taglen = 0; + bool in_tag = false; + int last_taglen = 0; + for (std::string::const_iterator ci = s.begin(); ci != s.end(); ++ci) + { + if (in_tag) + { + if (*ci == '<' && last_taglen == 1) + { + in_tag = false; + --taglen; + } + else if (*ci == '>') + { + in_tag = false; + ++taglen; + } + else + { + ++last_taglen; + ++taglen; + } + } + else if (*ci == '<') + { + in_tag = true; + last_taglen = 1; + ++taglen; + } + } + return (taglen); +} + static std::string _spell_extra_description(spell_type spell) { std::ostringstream desc; @@ -178,8 +213,13 @@ static std::string _spell_extra_description(spell_type spell) desc << std::setw(30) << spell_title(spell); // spell power, spell range, hunger level, level - desc << std::setw(14) << spell_power_string(spell) - << std::setw(16) << spell_range_string(spell) + const std::string power_colour = colour_to_str(spell_power_colour(spell)); + const std::string rangestring = spell_range_string(spell); + + desc << '<' << power_colour << '>' + << std::setw(14) << spell_power_string(spell) + << "' + << std::setw(16 + _string_tag_length(rangestring)) << rangestring << std::setw(12) << spell_hunger_string(spell) << spell_difficulty(spell); @@ -4581,5 +4621,6 @@ std::string spell_range_string(spell_type spell) return "N/A"; else return std::string("@") + std::string(range, '.') - + std::string(maxrange - range, ','); + + "" + std::string(maxrange - range, '.') + + ""; } -- cgit v1.2.3-54-g00ecf