diff options
author | ennewalker <ennewalker@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-04-19 19:17:31 +0000 |
---|---|---|
committer | ennewalker <ennewalker@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-04-19 19:17:31 +0000 |
commit | 69dba83ab0a392a350bf35d782770bdb217c92ae (patch) | |
tree | 37442c65c32062e2ef24cc6fed156ed7f5ccaa81 | |
parent | 6c343fd8e3a09865c8ee23ffeb5da6dc07379cfe (diff) | |
download | crawl-ref-69dba83ab0a392a350bf35d782770bdb217c92ae.tar.gz crawl-ref-69dba83ab0a392a350bf35d782770bdb217c92ae.zip |
[2774528] Tiles splash screen.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@9658 c06c8d41-db1a-0410-9941-cceddc491573
-rw-r--r-- | crawl-ref/source/newgame.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/tile2.cc | 48 | ||||
-rw-r--r-- | crawl-ref/source/tilereg.cc | 51 | ||||
-rw-r--r-- | crawl-ref/source/tilereg.h | 16 | ||||
-rw-r--r-- | crawl-ref/source/tilesdl.cc | 14 | ||||
-rw-r--r-- | crawl-ref/source/tilesdl.h | 5 | ||||
-rw-r--r-- | crawl-ref/source/tiletex.cc | 26 | ||||
-rw-r--r-- | crawl-ref/source/tiletex.h | 3 |
8 files changed, 108 insertions, 57 deletions
diff --git a/crawl-ref/source/newgame.cc b/crawl-ref/source/newgame.cc index 8e9ecdfd76..b44d441a78 100644 --- a/crawl-ref/source/newgame.cc +++ b/crawl-ref/source/newgame.cc @@ -3021,7 +3021,7 @@ static void _opening_screen(void) #ifdef USE_TILE // More grand... Like this? ;) if (Options.tile_title_screen) - TileDrawTitle(); + tiles.draw_title(); #endif std::string msg = diff --git a/crawl-ref/source/tile2.cc b/crawl-ref/source/tile2.cc index 680daee858..d79151d6ae 100644 --- a/crawl-ref/source/tile2.cc +++ b/crawl-ref/source/tile2.cc @@ -199,52 +199,4 @@ int get_clean_map_idx(int tile_idx) return tile_idx; } -void TileDrawTitle() -{ -#if 0 - img_type TitleImg = ImgLoadFileSimple("title"); - if (!TitleImg) - return; - - int winx = win_main->wx; - int winy = win_main->wy; - - TileRegionClass title(winx, winy, 1, 1); - win_main->placeRegion(&title, 0, 0, 0, 0, 0, 0, 0); - title.init_backbuf(); - img_type pBuf = title.backbuf; - - int tx = ImgWidth(TitleImg); - int ty = ImgHeight(TitleImg); - - int x, y; - - if (tx > winx) - { - x = 0; - tx = winx; - } - else - x = (winx - tx)/2; - - if (ty > winy) - { - y = 0; - ty = winy; - } - else - y = (winy - ty)/2; - - ImgCopy(TitleImg, 0, 0, tx, ty, pBuf, x, y, 1); - title.make_active(); - title.redraw(); - ImgDestroy(TitleImg); - - getch(); - clrscr(); - - win_main->removeRegion(&title); -#endif -} - #endif diff --git a/crawl-ref/source/tilereg.cc b/crawl-ref/source/tilereg.cc index 73992978f1..d01265a669 100644 --- a/crawl-ref/source/tilereg.cc +++ b/crawl-ref/source/tilereg.cc @@ -2830,6 +2830,57 @@ void MenuRegion::set_more(const formatted_string &more) m_dirty = true; } +TitleRegion::TitleRegion(int width, int height) : + m_buf(&m_img, GL_QUADS) +{ + sx = sy = 0; + dx = dy = 1; + + if (!m_img.load_texture("title.png", GenericTexture::MIPMAP_NONE, NULL, false)) + return; + + // Center + wx = width; + wy = height; + ox = (wx - m_img.width()) / 2; + oy = (wy - m_img.height()) / 2; + + { + PTVert &v = m_buf.get_next(); + v.pos_x = 0; + v.pos_y = 0; + v.tex_x = 0; + v.tex_y = 0; + } + { + PTVert &v = m_buf.get_next(); + v.pos_x = 0; + v.pos_y = m_img.height(); + v.tex_x = 0; + v.tex_y = 1; + } + { + PTVert &v = m_buf.get_next(); + v.pos_x = m_img.width(); + v.pos_y = m_img.height(); + v.tex_x = 1; + v.tex_y = 1; + } + { + PTVert &v = m_buf.get_next(); + v.pos_x = m_img.width(); + v.pos_y = 0; + v.tex_x = 1; + v.tex_y = 0; + } +} + +void TitleRegion::render() +{ + set_transform(); + m_buf.draw(); +} + ImageManager::ImageManager() { } diff --git a/crawl-ref/source/tilereg.h b/crawl-ref/source/tilereg.h index b6f75de610..17bd2d56b3 100644 --- a/crawl-ref/source/tilereg.h +++ b/crawl-ref/source/tilereg.h @@ -423,6 +423,22 @@ protected: bool m_far_view; }; +class TitleRegion : public Region +{ +public: + TitleRegion(int width, int height); + + virtual void render(); + virtual void clear() {}; + + virtual int handle_mouse(MouseEvent &event) { return 0; } + +protected: + virtual void on_resize() {} + + GenericTexture m_img; + VertBuffer<PTVert> m_buf; +}; #endif #endif diff --git a/crawl-ref/source/tilesdl.cc b/crawl-ref/source/tilesdl.cc index b31ee1b9c0..4e6d781837 100644 --- a/crawl-ref/source/tilesdl.cc +++ b/crawl-ref/source/tilesdl.cc @@ -148,6 +148,7 @@ void TilesFramework::shutdown() delete m_region_inv; delete m_region_crt; delete m_region_menu; + delete m_region_title; m_region_tile = NULL; m_region_stat = NULL; @@ -156,6 +157,7 @@ void TilesFramework::shutdown() m_region_inv = NULL; m_region_crt = NULL; m_region_menu = NULL; + m_region_title = NULL; for (unsigned int i = 0; i < LAYER_MAX; i++) m_layers[i].m_regions.clear(); @@ -171,6 +173,14 @@ void TilesFramework::shutdown() _shutdown_console(); } +void TilesFramework::draw_title() +{ + m_active_layer = LAYER_TITLE; + set_need_redraw(); + + getch(); +} + void TilesFramework::calculate_default_options() { // Find which set of _screen_sizes to use. @@ -315,6 +325,8 @@ bool TilesFramework::initialise() m_region_crt = new CRTRegion(m_fonts[crt_font].font); m_region_menu = new MenuRegion(&m_image, m_fonts[crt_font].font); + m_region_title = new TitleRegion(m_windowsz.x, m_windowsz.y); + m_layers[LAYER_NORMAL].m_regions.push_back(m_region_map); m_layers[LAYER_NORMAL].m_regions.push_back(m_region_tile); m_layers[LAYER_NORMAL].m_regions.push_back(m_region_inv); @@ -324,6 +336,8 @@ bool TilesFramework::initialise() m_layers[LAYER_CRT].m_regions.push_back(m_region_crt); m_layers[LAYER_CRT].m_regions.push_back(m_region_menu); + m_layers[LAYER_TITLE].m_regions.push_back(m_region_title); + cgotoxy(1, 1, GOTO_CRT); GLStateManager::init(); diff --git a/crawl-ref/source/tilesdl.h b/crawl-ref/source/tilesdl.h index c8a211ed21..b1ab6866e2 100644 --- a/crawl-ref/source/tilesdl.h +++ b/crawl-ref/source/tilesdl.h @@ -125,6 +125,8 @@ public: void add_overlay(const coord_def &gc, int idx); void clear_overlays(); + void draw_title(); + MenuRegion *get_menu() { return m_region_menu; } protected: @@ -169,6 +171,9 @@ protected: CRTRegion *m_region_crt; MenuRegion *m_region_menu; + // Title layer + TitleRegion *m_region_title; + struct font_info { std::string name; diff --git a/crawl-ref/source/tiletex.cc b/crawl-ref/source/tiletex.cc index 8a0c89dee7..29d3c4caa2 100644 --- a/crawl-ref/source/tiletex.cc +++ b/crawl-ref/source/tiletex.cc @@ -31,7 +31,8 @@ void GenericTexture::unload_texture() bool GenericTexture::load_texture(const char *filename, GenericTexture::MipMapOptions mip_opt, - tex_proc_func proc) + tex_proc_func proc, + bool force_power_of_two) { char acBuffer[512]; @@ -56,13 +57,24 @@ bool GenericTexture::load_texture(const char *filename, // Determine texture format unsigned char *pixels = (unsigned char*)img->pixels; - int new_width = 1; - while (new_width < img->w) - new_width *= 2; - int new_height = 1; - while (new_height < img->h) - new_height *= 2; + int new_width; + int new_height; + if (force_power_of_two) + { + new_width = 1; + while (new_width < img->w) + new_width *= 2; + + new_height = 1; + while (new_height < img->h) + new_height *= 2; + } + else + { + new_width = img->w; + new_height = img->h; + } GLenum texture_format; if (bpp == 4) diff --git a/crawl-ref/source/tiletex.h b/crawl-ref/source/tiletex.h index c9488019f3..9c689dcbcd 100644 --- a/crawl-ref/source/tiletex.h +++ b/crawl-ref/source/tiletex.h @@ -44,7 +44,8 @@ public: unsigned int h); bool load_texture(const char *filename, MipMapOptions mip_opt, - tex_proc_func proc = NULL); + tex_proc_func proc = NULL, + bool force_power_of_two = true); bool load_texture(unsigned char *pixels, unsigned int w, unsigned int h, MipMapOptions mip_opt); void unload_texture(); |