summaryrefslogtreecommitdiffstats
path: root/crawl-ref
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2009-11-13 08:37:45 +0100
committerRobert Vollmert <rvollmert@gmx.net>2009-11-13 13:06:23 +0100
commitd393b923b29792def5a4d9878562e398dae40e1f (patch)
treecde07fa544e2d8e7c2c76481e720f79273ee3d3f /crawl-ref
parent81545efb573b06f41595f812f94f2233857346b5 (diff)
downloadcrawl-ref-d393b923b29792def5a4d9878562e398dae40e1f.tar.gz
crawl-ref-d393b923b29792def5a4d9878562e398dae40e1f.zip
Generalize crawl_view_buffer to also handle the tile buffers.
Also make view.cc use crawl_view_geometry.tbuf for tiles drawing.
Diffstat (limited to 'crawl-ref')
-rw-r--r--crawl-ref/source/view.cc8
-rw-r--r--crawl-ref/source/viewgeom.cc28
-rw-r--r--crawl-ref/source/viewgeom.h29
3 files changed, 34 insertions, 31 deletions
diff --git a/crawl-ref/source/view.cc b/crawl-ref/source/view.cc
index 3784dba684..ddcea601e3 100644
--- a/crawl-ref/source/view.cc
+++ b/crawl-ref/source/view.cc
@@ -748,16 +748,16 @@ void viewwindow(bool do_updates)
return;
flush_prev_message();
+ screen_buffer_t *buffy(crawl_view.vbuf);
+
#ifdef USE_TILE
- std::vector<unsigned int> tileb(
- crawl_view.viewsz.y * crawl_view.viewsz.x * 2);
- tiles.clear_text_tags(TAG_NAMED_MONSTER);
+ tile_buffer_t *tileb(crawl_view.tbuf);
#endif
- screen_buffer_t *buffy(crawl_view.vbuf);
calc_show_los();
#ifdef USE_TILE
+ tiles.clear_text_tags(TAG_NAMED_MONSTER);
tile_draw_floor();
mcache.clear_nonref();
#endif
diff --git a/crawl-ref/source/viewgeom.cc b/crawl-ref/source/viewgeom.cc
index 0ee155b3cc..56542cd849 100644
--- a/crawl-ref/source/viewgeom.cc
+++ b/crawl-ref/source/viewgeom.cc
@@ -220,25 +220,6 @@ class _mlist_col_layout : public _layout
}
};
-//////////////////////////////////////////////////////////////////////////////
-// crawl_view_buffer
-
-crawl_view_buffer::crawl_view_buffer()
- : buffer(NULL)
-{
-}
-
-crawl_view_buffer::~crawl_view_buffer()
-{
- delete [] buffer;
-}
-
-void crawl_view_buffer::size(const coord_def &sz)
-{
- delete [] buffer;
- buffer = new screen_buffer_t [ sz.x * sz.y * 2 ];
-}
-
// ----------------------------------------------------------------------
// crawl_view_geometry
// ----------------------------------------------------------------------
@@ -250,7 +231,11 @@ crawl_view_geometry::crawl_view_geometry()
msgp(1, viewp.y + viewsz.y), msgsz(80, 7),
mlistp(hudp.x, hudp.y + hudsz.y),
mlistsz(hudsz.x, msgp.y - mlistp.y),
- vbuf(), vgrdc(), viewhalfsz(), glos1(), glos2(),
+ vbuf(),
+#ifdef USE_TILE
+ tbuf(),
+#endif
+ vgrdc(), viewhalfsz(), glos1(), glos2(),
vlos1(), vlos2(), mousep(), last_player_pos()
{
}
@@ -259,6 +244,9 @@ void crawl_view_geometry::init_view()
{
viewhalfsz = viewsz / 2;
vbuf.size(viewsz);
+#ifdef USE_TILE
+ tbuf.size(viewsz);
+#endif
set_player_at(you.pos(), true);
}
diff --git a/crawl-ref/source/viewgeom.h b/crawl-ref/source/viewgeom.h
index 6913849679..72e68ce3ec 100644
--- a/crawl-ref/source/viewgeom.h
+++ b/crawl-ref/source/viewgeom.h
@@ -1,19 +1,29 @@
#ifndef VIEWGEOM_H
#define VIEWGEOM_H
+template<typename T>
class crawl_view_buffer
{
public:
- crawl_view_buffer();
- ~crawl_view_buffer();
- void size(const coord_def &size);
- operator screen_buffer_t * () { return (buffer); }
+ crawl_view_buffer() : buffer(NULL) {}
+ ~crawl_view_buffer() { delete [] buffer; }
+
+ void size(const coord_def &sz)
+ {
+ delete [] buffer;
+ buffer = new T[sz.x * sz.y * 2];
+ }
+
+ operator T * () { return (buffer); }
- void draw();
private:
- screen_buffer_t *buffer;
+ T *buffer;
};
+#ifdef USE_TILE
+typedef unsigned int tile_buffer_t;
+#endif
+
struct crawl_view_geometry
{
public:
@@ -28,7 +38,12 @@ public:
coord_def mlistp; // Left-top pos of the monster list.
coord_def mlistsz; // Size of the monster list.
- crawl_view_buffer vbuf; // Buffer for drawing the main game map.
+ crawl_view_buffer<screen_buffer_t> vbuf;
+ // Buffer for drawing the main game map.
+#ifdef USE_TILE
+ crawl_view_buffer<tile_buffer_t> tbuf;
+ // Tiles buffer.
+#endif
coord_def vgrdc; // What grid pos is at the centre of the view
// usually you.pos().