diff options
author | Robert Vollmert <rvollmert@gmx.net> | 2009-11-13 08:37:45 +0100 |
---|---|---|
committer | Robert Vollmert <rvollmert@gmx.net> | 2009-11-13 13:06:23 +0100 |
commit | d393b923b29792def5a4d9878562e398dae40e1f (patch) | |
tree | cde07fa544e2d8e7c2c76481e720f79273ee3d3f /crawl-ref | |
parent | 81545efb573b06f41595f812f94f2233857346b5 (diff) | |
download | crawl-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.cc | 8 | ||||
-rw-r--r-- | crawl-ref/source/viewgeom.cc | 28 | ||||
-rw-r--r-- | crawl-ref/source/viewgeom.h | 29 |
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(). |