diff options
author | Chris West <therealchriswest@hotmail.com> | 2013-01-01 16:56:29 +0000 |
---|---|---|
committer | Chris West <therealchriswest@hotmail.com> | 2013-01-05 16:25:23 +0000 |
commit | 9a5990e3935167d6d34e41c9135c5d77d5c95e1b (patch) | |
tree | 654ec11d4e05f77599cb215274d7aeffa001007a /crawl-ref/source/tilereg-inv.cc | |
parent | a305a9c32b419a4916fdfd47bb7b0f9567574694 (diff) | |
download | crawl-ref-9a5990e3935167d6d34e41c9135c5d77d5c95e1b.tar.gz crawl-ref-9a5990e3935167d6d34e41c9135c5d77d5c95e1b.zip |
improved inventory paging on non-touch ui
Diffstat (limited to 'crawl-ref/source/tilereg-inv.cc')
-rw-r--r-- | crawl-ref/source/tilereg-inv.cc | 44 |
1 files changed, 35 insertions, 9 deletions
diff --git a/crawl-ref/source/tilereg-inv.cc b/crawl-ref/source/tilereg-inv.cc index e565b2e488..f61aa7a434 100644 --- a/crawl-ref/source/tilereg-inv.cc +++ b/crawl-ref/source/tilereg-inv.cc @@ -44,18 +44,18 @@ void InventoryRegion::pack_buffers() if (i >= m_items.size()) break; - if ((y==my-1 && x==mx-1) || (y==0 && x==0 && m_grid_page>0)) + InventoryTile &item = m_items[i++]; + + if ((y==my-1 && x==mx-1 && item.tile) || (y==0 && x==0 && m_grid_page>0)) { // draw a background for paging tiles m_buf.add_dngn_tile(TILE_ITEM_SLOT, x, y); continue; } - InventoryTile &item = m_items[i++]; - if (item.flag & TILEI_FLAG_FLOOR) { - if (i >= (unsigned int) mx * my * (m_grid_page+1)) + if (i >= (unsigned int) mx * my * (m_grid_page+1) && item.tile) break; int num_floor = tile_dngn_count(env.tile_default.floor); @@ -75,7 +75,9 @@ void InventoryRegion::pack_buffers() if (i >= m_items.size()) break; - if (y==my-1 && x==mx-1) + InventoryTile &item = m_items[i++]; + + if (y==my-1 && x==mx-1 && item.tile) { // continuation to next page icon m_buf.add_main_tile(TILE_UNSEEN_ITEM, x, y); @@ -88,8 +90,6 @@ void InventoryRegion::pack_buffers() continue; } - InventoryTile &item = m_items[i++]; - if (item.flag & TILEI_FLAG_EQUIP) { if (item.flag & TILEI_FLAG_CURSE) @@ -592,7 +592,18 @@ bool InventoryRegion::update_alt_text(string &alt) return false; describe_info inf; - get_item_desc(*item, inf, true); + if (_is_next_button(item_idx)) + { + // alt text for next page button + inf.title = "Next Page"; + } + else if (_is_prev_button(item_idx)) + { + // alt text for prev page button + inf.title = "Previous Page"; + } + else + get_item_desc(*item, inf, true); alt_desc_proc proc(crawl_view.msgsz.x, crawl_view.msgsz.y); process_description<alt_desc_proc>(proc, inf); @@ -615,7 +626,11 @@ void InventoryRegion::draw_tag() bool floor = m_items[curs_index].flag & TILEI_FLAG_FLOOR; - if (floor && mitm[idx].defined()) + if (_is_next_button(curs_index)) + draw_desc("Next Page"); + else if (_is_prev_button(curs_index)) + draw_desc("Previous Page"); + else if (floor && mitm[idx].defined()) draw_desc(mitm[idx].name(DESC_PLAIN).c_str()); else if (!floor && you.inv[idx].defined()) draw_desc(you.inv[idx].name(DESC_INVENTORY_EQUIP).c_str()); @@ -841,4 +856,15 @@ void InventoryRegion::update() } } +bool InventoryRegion::_is_prev_button(int idx) +{ + // idx is an index in m_items as returned by cursor_index() + return (m_grid_page>0 && idx == mx*my*m_grid_page-1); +} + +bool InventoryRegion::_is_next_button(int idx) +{ + // idx is an index in m_items as returned by cursor_index() + return (idx == mx*my*(m_grid_page+1)-1); +} #endif |