#include <map>
#include "screen.hpp"
+#include "math/vector.hpp"
+#include "math/rect.hpp"
class DrawingContext;
class Surface;
+class Font;
+
+/**
+ * Helper class for InfoBox: Represents a line of text
+ */
+class InfoBoxLine
+{
+public:
+ enum LineType { NORMAL, NORMAL_LEFT, SMALL, HEADING, REFERENCE, IMAGE};
+
+ InfoBoxLine(char format_char, const std::string& text);
+ ~InfoBoxLine();
+
+ void draw(DrawingContext& context, const Rect& bbox, int layer);
+ float get_height();
+
+ static const std::vector<InfoBoxLine*> split(const std::string& text, float width);
+
+private:
+ InfoBoxLine::LineType lineType;
+ Font* font;
+ std::string text;
+ Surface* image;
+};
/** This class is displaying a box with information text inside the game
*/
void scrollup();
void pagedown();
void pageup();
-
+
private:
size_t firstline;
- std::vector<std::string> lines;
+ std::vector<InfoBoxLine*> lines;
std::map<std::string, Surface*> images;
Surface* arrow_scrollup;
Surface* arrow_scrolldown;
float speed;
std::string music;
std::auto_ptr<Surface> background;
- std::vector<std::string> lines;
- std::map<std::string, Surface*> images;
+ std::vector<InfoBoxLine*> lines;
float scroll;
+ bool fading;
};
#endif
-