showing schools/success and hunger/power.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1693 c06c8d41-db1a-0410-9941-cceddc491573
FCL7KOWXA5O3GLMDR22JCGMTHMZ57C4WQIJKBIIUQV3LI2CI3X7AC
T5E3N5YFW7ANN7XRUTQGAOBJ3CR6KPH3L2PWTN3Q2BNQBOIBKLTQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
DDU4A3JGN5IUIPP5IASOODKPR2WBHSDSV4FITZ6HNXNSXXQACWAQC
PR2XIEELO6UJWT3EXDHWCJZGIZCCF3D6KF6LC67R6RWWAVNWEHWAC
DWQDVEHZSTDVFS2GU24ZLIGJDA3M4767TB734JAQEAUVOOCLZ75AC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
IJ6KN5MQLEB7DR7NW2AYQNCVBV5IUKECUSECUMEJWOBRNJBAXHCQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
2GV6OW7P54FXZ5OD2NUMX7MLXH424LYAFMOAUQ2UGSOLKLYDBJGAC
switch (level)
{
case 1: return 50;
case 2: return 95;
case 3: return 160;
case 4: return 250;
case 5: return 350;
case 6: return 550;
case 7: return 700;
case 8: return 850;
case 9: return 1000;
case 10: return 1000;
case 11: return 1100;
case 12: return 1250;
case 13: return 1380;
case 14: return 1500;
case 15: return 1600;
default: return 1600 + (20 * level);
}
} // end spell_hunger();
const int basehunger[] = {
50, 95, 160, 250, 350, 550, 700, 850, 1000
};
int hunger;
if ( level < 10 && level > 0 )
hunger = basehunger[level-1];
else
hunger = (basehunger[0] * level * level) / 4;
hunger -= you.intel * you.skills[SK_SPELLCASTING];
if ( hunger < 0 )
hunger = 0;
// spell power, fail rate, level
desc << std::setw(14) << spell_power_string(spell)
<< std::setw(12) << failure_rate_to_string(spell_fail(spell))
static std::string spell_extra_description(spell_type spell)
{
std::ostringstream desc;
desc << std::left;
// spell name
desc << std::setw(30) << spell_title(spell);
// spell power, hunger level, level
desc << std::setw(30) << spell_power_string(spell)
<< std::setw(12) << spell_hunger_string(spell)
};
struct ToggleableMenuEntry : public MenuEntry
{
public:
std::string alt_text;
ToggleableMenuEntry( const std::string &txt = std::string(),
const std::string &alt_txt = std::string(),
MenuEntryLevel lev = MEL_ITEM,
int qty = 0, int hotk = 0 ) :
MenuEntry(txt, lev, qty, hotk), alt_text(alt_txt) {}
void toggle() { text.swap(alt_text); }
// Allows toggling by specific keys.
class ToggleableMenu : public Menu
{
public:
ToggleableMenu( int _flags = MF_MULTISELECT ) : Menu(_flags) {}
void add_toggle_key(int newkey) { toggle_keys.push_back(newkey); }
protected:
virtual int pre_process(int key);
std::vector<int> toggle_keys;
};
int ToggleableMenu::pre_process(int key)
{
if ( std::find(toggle_keys.begin(), toggle_keys.end(), key) !=
toggle_keys.end() )
{
// Toggle all menu entries
for ( unsigned int i = 0; i < items.size(); ++i )
{
ToggleableMenuEntry* const p =
dynamic_cast<ToggleableMenuEntry*>(items[i]);
if ( p )
p->toggle();
}
// Toggle title
ToggleableMenuEntry* const pt =
dynamic_cast<ToggleableMenuEntry*>(title);
if ( pt )
pt->toggle();
// Redraw
draw_menu();
// Don't further process the key
return 0;
}
return key;
}