00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "gui/menu_item.hpp"
00018
00019 #include "supertux/resources.hpp"
00020 #include "supertux/timer.hpp"
00021 #include "video/font.hpp"
00022
00023 static const float FLICK_CURSOR_TIME = 0.5f;
00024
00025 MenuItem::MenuItem(MenuItemKind _kind, int _id) :
00026 kind(_kind),
00027 id(_id),
00028 toggled(),
00029 text(),
00030 input(),
00031 help(),
00032 list(),
00033 selected(),
00034 target_menu(),
00035 input_flickering()
00036 {
00037 toggled = false;
00038 selected = false;
00039 target_menu = 0;
00040 }
00041
00042 void
00043 MenuItem::change_text(const std::string& text_)
00044 {
00045 text = text_;
00046 }
00047
00048 void
00049 MenuItem::change_input(const std::string& text_)
00050 {
00051 input = text_;
00052 }
00053
00054 void
00055 MenuItem::set_help(const std::string& help_text)
00056 {
00057 std::string overflow;
00058 help = Resources::normal_font->wrap_to_width(help_text, 600, &overflow);
00059 while (!overflow.empty())
00060 {
00061 help += "\n";
00062 help += Resources::normal_font->wrap_to_width(overflow, 600, &overflow);
00063 }
00064 }
00065
00066 std::string
00067 MenuItem::get_input_with_symbol(bool active_item)
00068 {
00069 if(!active_item) {
00070 input_flickering = true;
00071 } else {
00072 input_flickering = ((int) (real_time / FLICK_CURSOR_TIME)) % 2;
00073 }
00074
00075 char str[1024];
00076 if(input_flickering)
00077 snprintf(str, sizeof(str), "%s ",input.c_str());
00078 else
00079 snprintf(str, sizeof(str), "%s_",input.c_str());
00080
00081 std::string string = str;
00082
00083 return string;
00084 }
00085
00086