summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/tilereg-skl.cc
diff options
context:
space:
mode:
authorJohanna Ploog <j-p-e-g@users.sourceforge.net>2010-11-28 01:18:35 +0100
committerJohanna Ploog <j-p-e-g@users.sourceforge.net>2010-11-28 01:23:06 +0100
commitc26c3b70b77bdba9bac6bfb88ad2efd0c32e8709 (patch)
tree4dc55b6faeca209d41cafd02f5d025ec658c140b /crawl-ref/source/tilereg-skl.cc
parent126f1aa7acf6419ce8455f3b343cd06b6e300afa (diff)
downloadcrawl-ref-c26c3b70b77bdba9bac6bfb88ad2efd0c32e8709.tar.gz
crawl-ref-c26c3b70b77bdba9bac6bfb88ad2efd0c32e8709.zip
Hook the skill tiles into the tab region, yay! Toggling works now.
Doesn't handle skill redistribution yet because I haven't had a look at that so far. We might also want to include wiz-mode change of skill levels here.
Diffstat (limited to 'crawl-ref/source/tilereg-skl.cc')
-rw-r--r--crawl-ref/source/tilereg-skl.cc48
1 files changed, 26 insertions, 22 deletions
diff --git a/crawl-ref/source/tilereg-skl.cc b/crawl-ref/source/tilereg-skl.cc
index 596b849ec4..e3bc7db146 100644
--- a/crawl-ref/source/tilereg-skl.cc
+++ b/crawl-ref/source/tilereg-skl.cc
@@ -66,8 +66,15 @@ int SkillRegion::handle_mouse(MouseEvent &event)
if (event.button == MouseEvent::LEFT)
{
m_last_clicked_item = item_idx;
- tiles.set_need_redraw();
- // TODO: toggle skill
+ if (you.skills[skill] == 0)
+ mpr("You cannot toggle a skill you don't have yet.");
+ else if (you.skills[skill] >= 27)
+ mpr("There's no point to toggling this skill anymore.");
+ else
+ {
+ tiles.set_need_redraw();
+ you.practise_skill[skill] = !you.practise_skill[skill];
+ }
return CK_MOUSE_CMD;
}
else if (skill != NUM_SKILLS && event.button == MouseEvent::RIGHT)
@@ -98,14 +105,18 @@ bool SkillRegion::update_tip_text(std::string& tip)
if (item_idx >= m_items.size() || m_items[item_idx].empty())
return (false);
- int flag = m_items[item_idx].flag;
+ const int flag = m_items[item_idx].flag;
std::vector<command_type> cmd;
if (flag & TILEI_FLAG_INVALID)
tip = "You don't have this skill yet.";
else
{
- // TODO: Change tip text depending on active or not
- tip = "[L-Click] Toggle training";
+ const skill_type skill = (skill_type) m_items[item_idx].idx;
+
+ tip = "[L-Click] ";
+ if (you.practise_skill[skill])
+ tip += "Lower the rate of training";
+ tip += "Increase the rate of training";
}
tip += "\n[R-Click] Describe";
@@ -133,6 +144,7 @@ bool SkillRegion::update_alt_text(std::string &alt)
const skill_type skill = (skill_type) idx;
describe_info inf;
+ // TODO: Nicer display for level, aptitude and crosstraining.
inf.body << get_skill_description(skill, true);
alt_desc_proc proc(crawl_view.msgsz.x, crawl_view.msgsz.y);
@@ -142,25 +154,17 @@ bool SkillRegion::update_alt_text(std::string &alt)
return (true);
}
-int SkillRegion::get_max_slots()
-{
- return (NUM_SKILLS);
-}
-
void SkillRegion::pack_buffers()
{
- const int max_skills = get_max_slots();
-
- // Pack base separately, as it comes from a different texture...
int i = 0;
for (int y = 0; y < my; y++)
{
- if (i >= max_skills)
+ if (i >= 32)
break;
for (int x = 0; x < mx; x++)
{
- if (i++ >= max_skills)
+ if (i++ >= 32)
break;
m_buf.add_dngn_tile(TILE_ITEM_SLOT, x, y);
@@ -182,14 +186,14 @@ void SkillRegion::pack_buffers()
if (item.flag & TILEI_FLAG_INVALID)
m_buf.add_main_tile(TILE_MESH, x, y);
- if (item.flag & TILEI_FLAG_CURSOR)
- m_buf.add_main_tile(TILE_CURSOR, x, y);
-
- if (item.quantity != -1)
+ if (item.quantity > 0)
draw_number(x, y, item.quantity);
if (item.tile)
m_buf.add_skill_tile(item.tile, x, y);
+
+ if (item.flag & TILEI_FLAG_CURSOR)
+ m_buf.add_main_tile(TILE_CURSOR, x, y);
}
}
}
@@ -210,12 +214,12 @@ void SkillRegion::update()
continue;
InventoryTile desc;
- desc.tile = tileidx_skill(skill);
+ desc.tile = tileidx_skill(skill,
+ you.practise_skill[skill]);
desc.idx = idx;
desc.quantity = you.skills[skill];
- std::string temp;
- if (you.skills[skill] < 1)
+ if (you.skills[skill] == 0 || you.skills[skill] >= 27)
desc.flag |= TILEI_FLAG_INVALID;
m_items.push_back(desc);