diff options
author | ennewalker <ennewalker@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-09-27 15:12:42 +0000 |
---|---|---|
committer | ennewalker <ennewalker@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-09-27 15:12:42 +0000 |
commit | efde5f5a0ac8266096eaf03b82cfaf18db0d7c29 (patch) | |
tree | 25ed5bee6cafca50fca81b47de30ffc1a3e658d3 /crawl-ref/source/tilereg.cc | |
parent | 074c9aa085ffb0538baf9eb247d14454ca040540 (diff) | |
download | crawl-ref-efde5f5a0ac8266096eaf03b82cfaf18db0d7c29.tar.gz crawl-ref-efde5f5a0ac8266096eaf03b82cfaf18db0d7c29.zip |
[2021068] Projectiles, explosions, beams, etc. now drawn again in tiles version.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7039 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/tilereg.cc')
-rw-r--r-- | crawl-ref/source/tilereg.cc | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/crawl-ref/source/tilereg.cc b/crawl-ref/source/tilereg.cc index 75b9c1016c..6d241280c5 100644 --- a/crawl-ref/source/tilereg.cc +++ b/crawl-ref/source/tilereg.cc @@ -725,6 +725,29 @@ void DungeonRegion::render() glDrawArrays(GL_QUADS, 0, m_verts.size()); } + m_verts.clear(); + for (unsigned int i = 0; i < m_overlays.size(); i++) + { + // overlays must be from the main image and must be in LOS. + if (!crawl_view.in_grid_los(m_overlays[i].gc)) + continue; + + int idx = m_overlays[i].idx; + if (idx >= TILE_MAIN_MAX) + continue; + + int x = m_overlays[i].gc.x - m_cx_to_gx; + int y = m_overlays[i].gc.y - m_cy_to_gy; + add_quad(TEX_DEFAULT, idx, x, y); + } + if (m_verts.size() > 0) + { + m_image->m_textures[TEX_DEFAULT].bind(); + glVertexPointer(2, GL_FLOAT, sizeof(tile_vert), &m_verts[0].pos_x); + glTexCoordPointer(2, GL_FLOAT, sizeof(tile_vert), &m_verts[0].tex_x); + glDrawArrays(GL_QUADS, 0, m_verts.size()); + } + // Draw text labels // TODO enne - add an option for this // TODO enne - be more intelligent about not covering stuff up @@ -1019,6 +1042,19 @@ void DungeonRegion::add_text_tag(text_tag_type type, const std::string &tag, m_tags[type].push_back(t); } +void DungeonRegion::add_overlay(const coord_def &gc, int idx) +{ + tile_overlay over; + over.gc = gc; + over.idx = idx; + + m_overlays.push_back(over); +} + +void DungeonRegion::clear_overlays() +{ + m_overlays.clear(); +} InventoryTile::InventoryTile() { |