]> git.localhorst.tv Git - l2e.git/commitdiff
added wrap options for menu properties
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 21 Oct 2012 19:43:11 +0000 (21:43 +0200)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 21 Oct 2012 19:43:11 +0000 (21:43 +0200)
src/graphics/Menu.h

index 4dc60323571cbeb37134fe51d2bf6f911a231a70..188c574b341b834e8c6fad6101fd1b85cfa8b6d8 100644 (file)
@@ -34,16 +34,16 @@ struct MenuProperties {
        int charsPerAdditionalText;
        int additionalTextGap;
        char delimiter;
+       bool wrapX;
+       bool wrapY;
 
        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) { }
+       , additionalTextGap(0), delimiter(':')
+       , wrapX(false), wrapY(false) { }
 
        static void CreateTypeDescription();
        static void Construct(void *);
@@ -57,7 +57,6 @@ class Menu
 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:
        int Width() const;
@@ -131,21 +130,6 @@ Menu<T>::Menu(const MenuProperties &p)
 
 }
 
-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)
-: MenuProperties(
-               font, disabledFont ? disabledFont : font,
-               cursor, charsPerEntry,
-               rows, rowGap, iconSpace,
-               cols, colGap, charsPerNumber,
-               delimiter,
-               charsPerAdditionalText,
-               additionalTextGap)
-, selected(0)
-, topRow(0) {
-
-}
-
 
 template<class T>
 int Menu<T>::ColWidth() const {
@@ -173,22 +157,38 @@ int Menu<T>::Height() const {
 
 template<class T>
 void Menu<T>::NextItem() {
-       SelectIndex(selected + 1);
+       int index(selected + 1);
+       if (wrapX && index % cols == 0) {
+               index -= cols;
+       }
+       SelectIndex(index);
 }
 
 template<class T>
 void Menu<T>::PreviousItem() {
-       SelectIndex(selected - 1);
+       int index(selected - 1);
+       if (wrapX && selected % cols == 0) {
+               index += cols;
+       }
+       SelectIndex(index);
 }
 
 template<class T>
 void Menu<T>::NextRow() {
-       SelectIndex(selected + cols);
+       int index(selected + cols);
+       if (wrapY && index >= int(entries.size())) {
+               index -= entries.size();
+       }
+       SelectIndex(index);
 }
 
 template<class T>
 void Menu<T>::PreviousRow() {
-       SelectIndex(selected - cols);
+       int index(selected - cols);
+       if (wrapY && index < 0) {
+               index += entries.size();
+       }
+       SelectIndex(index);
 }
 
 template<class T>