X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fgraphics%2FMenu.h;h=7aa2e9448794754d57024e36e16252bbba6f0389;hb=e35b71bedb8c2424346d60c737020f1599438b74;hp=02a88c0be13853a9c59ec6f5393d3ea218afbb73;hpb=70641f2eb3f9fce8c89dcbf345e202050609a142;p=l2e.git diff --git a/src/graphics/Menu.h b/src/graphics/Menu.h index 02a88c0..7aa2e94 100644 --- a/src/graphics/Menu.h +++ b/src/graphics/Menu.h @@ -19,11 +19,41 @@ namespace graphics { class Sprite; +struct MenuProperties { + const Font *font; + const Font *disabledFont; + const Sprite *cursor; + int charsPerEntry; + int rows; + int rowGap; + int iconSpace; + int cols; + int colGap; + int charsPerNumber; + int charsPerAdditionalText; + int additionalTextGap; + char delimiter; + + MenuProperties() + : font(0), disabledFont(0), cursor(0) + , charsPerEntry(0), rows(0), rowGap(0) + , iconSpace(0), cols(0), colGap(0) + , charsPerNumber(0), charsPerAdditionalText(0) + , additionalTextGap(0), delimiter(':') { } + + MenuProperties(const Font *font, const Font *disabledFont, const Sprite *cursor, int charsPerEntry, int rows, int rowGap, int iconSpace, int cols, int colGap, int charsPerNumber, char delimiter, int charsPerAdditionalText, int additionalTextGap) + : font(font), disabledFont(disabledFont), cursor(cursor), charsPerEntry(charsPerEntry), rows(rows), rowGap(rowGap), iconSpace(iconSpace), cols(cols), colGap(colGap), charsPerNumber(charsPerNumber), charsPerAdditionalText(charsPerAdditionalText), additionalTextGap(additionalTextGap), delimiter(delimiter) { } + + static void CreateTypeDescription(); +}; + template -class Menu { +class Menu +: private MenuProperties { public: Menu(); + Menu(const MenuProperties &); Menu(const Font *font, const Font *disabledFont, const Sprite *cursor, int charsPerEntry, int rows, int rowGap = 0, int iconSpace = 0, int cols = 1, int colGap = 0, int charsPerNumber = 0, char delimiter = ':', int charsPerAdditionalText = 0, int additionalTextGap = 0); public: @@ -75,63 +105,41 @@ private: T value; bool enabled; }; - const Font *font; - const Font *disabledFont; - const Sprite *cursor; std::vector entries; - int charsPerEntry; - int rows; - int rowGap; - int iconSpace; - int cols; - int colGap; int selected; int topRow; - int charsPerNumber; - int charsPerAdditionalText; - int additionalTextGap; - char delimiter; }; template Menu::Menu() -: font(0) -, disabledFont(0) -, cursor(0) -, charsPerEntry(0) -, rows(0) -, rowGap(0) -, iconSpace(0) -, cols(0) -, colGap(0) +: MenuProperties() +, selected(0) +, topRow(0) { + +} + +template +Menu::Menu(const MenuProperties &p) +: MenuProperties(p) , selected(0) -, topRow(0) -, charsPerNumber(0) -, charsPerAdditionalText(0) -, additionalTextGap(0) -, delimiter(':') { +, topRow(0) { } template Menu::Menu(const Font *font, const Font *disabledFont, const Sprite *cursor, int charsPerEntry, int rows, int rowGap, int iconSpace, int cols, int colGap, int charsPerNumber, char delimiter, int charsPerAdditionalText, int additionalTextGap) -: font(font) -, disabledFont(disabledFont ? disabledFont : font) -, cursor(cursor) -, charsPerEntry(charsPerEntry) -, rows(rows) -, rowGap(rowGap) -, iconSpace(iconSpace) -, cols(cols) -, colGap(colGap) +: MenuProperties( + font, disabledFont ? disabledFont : font, + cursor, charsPerEntry, + rows, rowGap, iconSpace, + cols, colGap, charsPerNumber, + delimiter, + charsPerAdditionalText, + additionalTextGap) , selected(0) -, topRow(0) -, charsPerNumber(charsPerNumber) -, charsPerAdditionalText(charsPerAdditionalText) -, additionalTextGap(additionalTextGap) -, delimiter(delimiter) { +, topRow(0) { }