From: Daniel Karbach Date: Sun, 21 Oct 2012 19:43:11 +0000 (+0200) Subject: added wrap options for menu properties X-Git-Url: https://git.localhorst.tv/?a=commitdiff_plain;h=7e59a87ac7caf96ffa38f2595581a6009a20339a;p=l2e.git added wrap options for menu properties --- diff --git a/src/graphics/Menu.h b/src/graphics/Menu.h index 4dc6032..188c574 100644 --- a/src/graphics/Menu.h +++ b/src/graphics/Menu.h @@ -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::Menu(const MenuProperties &p) } -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) -: MenuProperties( - font, disabledFont ? disabledFont : font, - cursor, charsPerEntry, - rows, rowGap, iconSpace, - cols, colGap, charsPerNumber, - delimiter, - charsPerAdditionalText, - additionalTextGap) -, selected(0) -, topRow(0) { - -} - template int Menu::ColWidth() const { @@ -173,22 +157,38 @@ int Menu::Height() const { template void Menu::NextItem() { - SelectIndex(selected + 1); + int index(selected + 1); + if (wrapX && index % cols == 0) { + index -= cols; + } + SelectIndex(index); } template void Menu::PreviousItem() { - SelectIndex(selected - 1); + int index(selected - 1); + if (wrapX && selected % cols == 0) { + index += cols; + } + SelectIndex(index); } template void Menu::NextRow() { - SelectIndex(selected + cols); + int index(selected + cols); + if (wrapY && index >= int(entries.size())) { + index -= entries.size(); + } + SelectIndex(index); } template void Menu::PreviousRow() { - SelectIndex(selected - cols); + int index(selected - cols); + if (wrapY && index < 0) { + index += entries.size(); + } + SelectIndex(index); } template