From 89afae628ef9bf46b66f42a2573f6abc5f9bcb61 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ond=C5=99ej=20Ho=C5=A1ek?= Date: Wed, 26 Oct 2005 14:32:57 +0000 Subject: [PATCH] Added and implemented arrows that appear when scrolling is possible in an infobox. Feel more than free to redo the arrow images -- mine are there only for testing. SVN-Revision: 2919 --- data/images/engine/menu/scroll-down.png | Bin 0 -> 395 bytes data/images/engine/menu/scroll-up.png | Bin 0 -> 373 bytes data/levels/world1/level1.stl | 61 ++++++++++++++++++++++++++++++++ src/textscroller.cpp | 36 ++++++++++++++++--- src/textscroller.hpp | 2 ++ 5 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 data/images/engine/menu/scroll-down.png create mode 100644 data/images/engine/menu/scroll-up.png diff --git a/data/images/engine/menu/scroll-down.png b/data/images/engine/menu/scroll-down.png new file mode 100644 index 0000000000000000000000000000000000000000..84eecc214002f3cb75fe2bc1cee04eefd0fe6413 GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^fAD zuie&>F84(47?{-+;F*V)^$a(Ee8aa{e}-jS;*Q6A4<>%TqB6ffI54%-PuQmD z(6-#k^L7Tf3Mf3N`S(Nhy7I<1yZ9cwm|En`xcqx?*!wwFHTT|6_h8r~+yC%@i_qr} nMLXR0^m)(P`rA!)^MB@~ElGD864qM+!-&Dt)z4*}Q$iB}_VAyZ literal 0 HcmV?d00001 diff --git a/data/images/engine/menu/scroll-up.png b/data/images/engine/menu/scroll-up.png new file mode 100644 index 0000000000000000000000000000000000000000..ec41b46f17fee4b581f9f26b79057a0efddfc3e9 GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^fEak-aeD3K+k#C7A}-|<)4p~yEn(1P;J(15;lR}ZWJ@hznDfLjBE^d9zaLZQq^d-)!_7(4|9s2K@ zII?s(Z{#pilxkx|j`EULUEEg-Jd!xU)%+&h4Q|Gi!fR*kg-z-hDTx)%g zoO0{y90pt08>enbIapfkq_l0)hXYouN(yP#jVHfv5jNv+l2dZx(JFlI<3-yih)KWnnQV$zp2tUeN=o%~MjC$i&?bA&Zcko@s^(YO1Ivc_S#Q#bhf0DaEj M>FVdQ&MBb@0IckWp8x;= literal 0 HcmV?d00001 diff --git a/data/levels/world1/level1.stl b/data/levels/world1/level1.stl index a0f0b8821..65857e3fb 100644 --- a/data/levels/world1/level1.stl +++ b/data/levels/world1/level1.stl @@ -108,6 +108,67 @@ (y 100) ) (bell (x 5313) (y 289)) + (infoblock + (x 192) (y 320) + (message (_ "-Information blocks: +!images/objects/bonus_block/info_block.png +#Information blocks often +#contain useful tips. + +#As you have already +#found out, they can be +#activated by hitting +#them from the bottom. +#Most blocks are +#activated this way.")) + ) + (infoblock + (x 256) (y 320) + (message (_ "-Items: +!images/powerups/egg/egg.png +#The egg makes Tux grow +#larger. + +!images/powerups/fire_flower/fire_flower-0.png +#The fire flower gives +#Tux the ability to +#shoot fireballs. + +!images/objects/coin/coin-0.png +#You should collect as +#many coins as possible. +#Once you have a hundred, +#they are traded for an +#additional life. + +!images/powerups/1up/1up.png +#The penguin gives Tux an +#additional life. + +!images/objects/bonus_block/full-0.png +#Bonus blocks can contain +#coins, eggs, fire flowers +#or lives.")) + ) + (infoblock + (x 5377) (y 225) + (message (_ "-Bells: +!images/objects/bell/bell-m.png +#If you activate the bell +#now, you will restart +#under it if you die.")) + ) + (infoblock + (x 7616) (y 320) + (message (_ "!images/tiles/signs/run.png +#The path in front of you +#is blocked. You'll have +#to run before jumping +#over the blocks. Use your +#Run key (set to Control +#by default) to gain +#speed.")) + ) (snowball (x 1089) (y 404)) (snowball (x 1687) (y 408)) (snowball (x 1970) (y 408)) diff --git a/src/textscroller.cpp b/src/textscroller.cpp index 2e036879a..1cb243bd9 100644 --- a/src/textscroller.cpp +++ b/src/textscroller.cpp @@ -25,6 +25,7 @@ #include "resources.hpp" #include "video/font.hpp" #include "video/drawing_context.hpp" +#include "video/surface.hpp" #include "lisp/parser.hpp" #include "lisp/lisp.hpp" #include "audio/sound_manager.hpp" @@ -220,7 +221,7 @@ InfoBox::InfoBox(const std::string& text) : firstline(0) { split_text(text, lines); - + for(size_t i = 0; i < lines.size(); ++i) { if(lines[i].size() == 0) continue; @@ -229,6 +230,19 @@ InfoBox::InfoBox(const std::string& text) images.insert(std::make_pair(imagename, new Surface(imagename))); } } + + try + { + // get the arrow sprites + arrow_scrollup = new Surface("images/engine/menu/scroll-up.png"); + arrow_scrolldown = new Surface("images/engine/menu/scroll-down.png"); + } + catch (std::exception& e) + { + std::cout << "Could not load scrolling images: " << e.what() << std::endl; + arrow_scrollup = 0; + arrow_scrolldown = 0; + } } InfoBox::~InfoBox() @@ -245,12 +259,12 @@ InfoBox::draw(DrawingContext& context) const Font* normal_font = white_text; const Font* small_font = white_small_text; const Font* reference_font = blue_text; - + float x1 = 200; float y1 = 100; float width = 400; float height = 200; - + context.draw_filled_rect(Vector(x1, y1), Vector(width, height), Color(0.6f, 0.7f, 0.8f, 0.5f), LAYER_GUI-1); @@ -286,7 +300,7 @@ InfoBox::draw(DrawingContext& context) center = false; break; } - + if(image != 0) { context.draw_surface(image, Vector( (SCREEN_WIDTH - image->get_width()) / 2, @@ -304,7 +318,19 @@ InfoBox::draw(DrawingContext& context) Vector(x1, y), LEFT_ALLIGN, LAYER_GUI); y += font->get_height() + ITEMS_SPACE; - } + } + + // draw the scrolling arrows + if (arrow_scrollup && firstline > 0) + context.draw_surface(arrow_scrollup, + Vector( x1 + width - arrow_scrollup->get_width(), // top-right corner of box + y1), LAYER_GUI); + + if (arrow_scrolldown && firstline < lines.size()-1) + context.draw_surface(arrow_scrolldown, + Vector( x1 + width - arrow_scrolldown->get_width(), // bottom-light corner of box + y1 + height - arrow_scrolldown->get_height()), + LAYER_GUI); } } diff --git a/src/textscroller.hpp b/src/textscroller.hpp index 01615c173..5afef3549 100644 --- a/src/textscroller.hpp +++ b/src/textscroller.hpp @@ -47,6 +47,8 @@ private: size_t firstline; std::vector lines; std::map images; + Surface* arrow_scrollup; + Surface* arrow_scrolldown; }; /** Reads a text file (using LispReader, so it as to be in its formatting) -- 2.11.0