display as for spellcasting. Also force a redraw() if the player clicked on a spell.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@10661 c06c8d41-db1a-0410-9941-cceddc491573
GSCSER2ZAH6ACCCMIUNKHN7OVGRVRTWVHBNYWLZGR7AQSOMF2TSQC
HQQTCFCAQDCLCKN2JKOWOQB4IJBIE7JIX2L2PWTRQOLNXOIKR4SAC
O57XB4MDBAOSELCNBA2VDXKPGCYNCHKV2MGELL4PK3MRDJAUP72QC
A5PQLNX3XFGSNBUEEI6DYWZZ3U2HZVEPZA6GTIT4ZEC4SHKJUENAC
Q3B3UVMYEVC4YJUPYVSNTR4DJH4E6J4JJDHZNT5LNOCHCPPMEMXAC
P5XTDFSJX6W4TXSO2SZCKUY6PIOBUAZBZ7GPKE7QMPY4L7QDXWPAC
6WTIPODXGUFWCOP5ADMR2XCCQ63HMZR7LHZM2FX4L2ACZWLKTQQAC
XKSYV5QUG2PET6BNBZPNI4D7LDBJGWOH335OD3J24AKJWE63J3WQC
4NNN5LKBZLDXMDN2322PBG7WFHF4TWOEMVODSO7BXXCM3AZKQN4QC
C35MTVNINKCQBR7V52L7SLPO7455LDCQ5MBBXJFPQKJBF43JHRPQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
TRZAZJJA5VQBJ65SO5H5DNSILIZEJHIZCBYEBHEATCT6ZSMWIFKQC
M37SPVN6HIVMCINBTCAJSEJDLM67DWEZRCR45QTIILJ2XQ73ZF6QC
I6BG7QKQHT7OMBMSD5LN6ILPSZOT6RM4RY3VB2HFUXZMWQTZPW2AC
EZOLOYGEKWHZKTETREC3LK3RZFRBJJHR6O4EQT2WOZYXLFYPDXVQC
DO6W27HYFNVFMX7FSGG4RCX5UW32ORCVYZBQYPCUD4VCHMA4LFFQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
C6SU6CPHYLFEJTVDX4Q5VBL4GCCKZNTI3TEB3YSFG2RYELSQGA2QC
DDYDJKL5CGSTC3NGTOBCNKHDTG5LX5F4U7VNZN2YAK5ANLT7UO5AC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
IXWJ54CASZWYHSTDOU3TRQS2DSF4MKBRPO4VZYLE72JL5RD22O2AC
NROTGB26G7CER2PUMZWEQTW6OCAAQBHEVVESKY7XBGFBTIZKFS3AC
if (Options.tile_display == TDSP_MEMORISE)
{
std::vector<spell_type> spells = get_mem_spell_list();
for (unsigned int i = 0; i < spells.size(); ++i)
{
const spell_type spell = spells[i];
InventoryTile desc;
desc.tile = tileidx_spell(spell);
desc.idx = (int) spell;
desc.quantity = spell_difficulty(spell);
if (spell_difficulty(spell) > you.experience_level
|| player_spell_levels() < spell_levels_required(spell))
{
desc.flag |= TILEI_FLAG_MELDED;
}
inv.push_back(desc);
}
m_region_inv->update(inv.size(), &inv[0]);
return;
}
desc = info;
}
else // if (Options.tile_display == TDSP_MEMORISE)
{
snprintf(info, INFO_SIZE, "%s (%s) %d/%d spell slot%s",
spell_title(spell),
failure_rate_to_string(spell_fail(spell)),
spell_levels_required(spell),
player_spell_levels(),
spell_levels_required(spell) > 1 ? "s" : "");
if (!learn_spell())
Options.tile_display = TDSP_MEMORISE;
tiles.update_inventory();
return CK_MOUSE_CMD;
}
if (Options.tile_display == TDSP_SPELLS)
{
you.last_clicked_item = item_idx;
tiles.set_need_redraw();
if (!cast_a_spell(true, spell))
flush_input_buffer( FLUSH_ON_FAILURE );
}
else if (Options.tile_display == TDSP_MEMORISE)
{
you.last_clicked_item = item_idx;
tiles.set_need_redraw();
if (!learn_spell(spell))
return CK_MOUSE_CMD;
// if (!can_learn_spell(true) || !has_spells_to_memorise())
{
// Jump back to spells list. (Really, this should only happen
// if there aren't any other spells to memorise, but this
// doesn't work for some reason.)
Options.tile_display = TDSP_SPELLS;
tiles.update_inventory();
}
if (m_items[item_idx].key == 0 && Options.tile_display_spells)
{
int key = _handle_spells_mouse(event, idx, item_idx);
if (key != 0)
you.last_clicked_item = item_idx;
return (key);
}
if (m_items[item_idx].key == 0 && Options.tile_display != TDSP_INVENT)
return _handle_spells_mouse(event, idx, item_idx);
if (flag & TILEI_FLAG_MELDED)
tip = "You cannot cast this spell right now.";
else
tip = "[L-Click] Cast (z)";
if (Options.tile_display == TDSP_SPELLS)
{
if (flag & TILEI_FLAG_MELDED)
tip = "You cannot cast this spell right now.";
else
tip = "[L-Click] Cast (z)";
}
else if (Options.tile_display == TDSP_MEMORISE)
{
if (flag & TILEI_FLAG_MELDED)
tip = "You don't have enough slots for this spell right now.";
else
tip = "[L-Click] Memorise (M)";
}
spell_list mem_spells;
spells_to_books book_hash;
unsigned int num_unreadable;
unsigned int num_race;
if (!_get_mem_list(mem_spells, book_hash, num_unreadable, num_race))
return (spells);
for (unsigned int i = 0; i < mem_spells.size(); i++)
spells.push_back(mem_spells[i]);
return (spells);
}