]> git.localhorst.tv Git - l2e.git/commitdiff
extracted menu properties to a non-template struct
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 2 Sep 2012 14:51:40 +0000 (16:51 +0200)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 2 Sep 2012 14:51:40 +0000 (16:51 +0200)
src/graphics/Menu.h

index 02a88c0be13853a9c59ec6f5393d3ea218afbb73..175a7114501afcd4ad1e75bfb61115c8b790f28c 100644 (file)
@@ -19,11 +19,39 @@ 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) { }
+};
+
 template<class T>
-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 +103,41 @@ private:
                T value;
                bool enabled;
        };
-       const Font *font;
-       const Font *disabledFont;
-       const Sprite *cursor;
        std::vector<Entry> 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<class T>
 Menu<T>::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<class T>
+Menu<T>::Menu(const MenuProperties &p)
+: MenuProperties(p)
 , selected(0)
-, topRow(0)
-, charsPerNumber(0)
-, charsPerAdditionalText(0)
-, additionalTextGap(0)
-, delimiter(':') {
+, topRow(0) {
 
 }
 
 template<class T>
 Menu<T>::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) {
 
 }