]> git.localhorst.tv Git - l2e.git/commitdiff
added a "disabled" font
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Wed, 8 Aug 2012 21:30:55 +0000 (23:30 +0200)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Wed, 8 Aug 2012 21:30:55 +0000 (23:30 +0200)
src/battle/Resources.h
src/graphics/Menu.h
src/main.cpp
test-data/disabled-font.png [new file with mode: 0644]
test-data/normal-font.png

index 2de6b69f684d7513a6c7e56c34b846a78b4c074f..098c84468f15f3e9616450f94660a9b9e5e0c41f 100644 (file)
@@ -37,6 +37,7 @@ struct Resources {
        graphics::Frame *selectFrame;
 
        graphics::Font *normalFont;
+       graphics::Font *disabledFont;
 
        const char *spellMenuHeadline;
        graphics::Menu</* Spell */ void *> spellMenuPrototype;
@@ -59,6 +60,7 @@ struct Resources {
        , selectFrame(0)
 
        , normalFont(0)
+       , disabledFont(0)
 
        , spellMenuHeadline("")
        { }
index 083e741864b552b161173f5b117ed09c9d4f8f34..90af3e479c55a484da9aca53f3f9581b6315e4c7 100644 (file)
@@ -27,7 +27,7 @@ template<class T>
 class Menu {
 
 public:
-       explicit Menu(const Font *font = NULL, int charsPerEntry = 16, int rows = 1, int rowGap = 0, int cols = 1, int colGap = 0);
+       explicit Menu(const Font *font = NULL, const Font *disabledFont = NULL, int charsPerEntry = 16, int rows = 1, int rowGap = 0, int cols = 1, int colGap = 0);
 
 public:
        int Width() const;
@@ -71,6 +71,7 @@ private:
                bool enabled;
        };
        const Font *font;
+       const Font *disabledFont;
        std::vector<Entry> entries;
        int charsPerEntry;
        int rows;
@@ -84,8 +85,9 @@ private:
 
 
 template<class T>
-Menu<T>::Menu(const Font *font, int charsPerEntry, int rows, int rowGap, int cols, int colGap)
+Menu<T>::Menu(const Font *font, const Font *disabledFont, int charsPerEntry, int rows, int rowGap, int cols, int colGap)
 : font(font)
+, disabledFont(disabledFont ? disabledFont : font)
 , charsPerEntry(charsPerEntry)
 , rows(rows)
 , rowGap(rowGap)
@@ -148,7 +150,11 @@ void Menu<T>::Draw(SDL_Surface *dest, geometry::Point<int> position) const {
        int end(items < slots ? items : slots);
        for (int i(0), count(end - start); i < count; ++i) {
                geometry::Vector<int> offset((i % cols) * (ColWidth() + colGap), (i / cols) * RowHeight());
-               font->DrawString(entries[start + i].title, dest, position + offset, charsPerEntry);
+               if (entries[start + i].enabled) {
+                       font->DrawString(entries[start + i].title, dest, position + offset, charsPerEntry);
+               } else {
+                       disabledFont->DrawString(entries[start + i].title, dest, position + offset, charsPerEntry);
+               }
        }
 }
 
index 22c43cc1974be862e701edfe10591622c11f29fa..df3def10a69daa850d8fd46b3f95755e308e686e 100644 (file)
@@ -169,8 +169,21 @@ int main(int argc, char **argv) {
                // TODO: add '.' character
                battleRes.normalFont = &normalFont;
 
+               SDL_Surface *disabledFontImg(IMG_Load("test-data/disabled-font.png"));
+               Sprite disabledFontSprite(disabledFontImg, 16, 16);
+               Font disabledFont(&disabledFontSprite);
+               disabledFont.MapRange('A', 'M', 0, 1);
+               disabledFont.MapRange('N', 'Z', 0, 2);
+               disabledFont.MapRange('a', 'm', 0, 3);
+               disabledFont.MapRange('n', 'z', 0, 4);
+               disabledFont.MapChar(':', 10, 0);
+               disabledFont.MapChar('!', 10, 0);
+               disabledFont.MapChar('?', 10, 0);
+               // TODO: add '.' character
+               battleRes.disabledFont = &disabledFont;
+
                battleRes.spellMenuHeadline = "Please choose a spell.";
-               battleRes.spellMenuPrototype = Menu</* Spell */ void *>(&normalFont, 12, 6, 8, 2, 32);
+               battleRes.spellMenuPrototype = Menu</* Spell */ void *>(&normalFont, &disabledFont, 12, 6, 8, 2, 32);
 
                BattleState *battleState(new BattleState(bg, monstersLayout, heroesLayout, &battleRes));
                battleState->AddMonster(monster);
diff --git a/test-data/disabled-font.png b/test-data/disabled-font.png
new file mode 100644 (file)
index 0000000..794d05f
Binary files /dev/null and b/test-data/disabled-font.png differ
index 0bd50d02efb6c249d24a7431c9d0bf4214965010..b6a286eb4e93875a037d84260e8237b536f17910 100644 (file)
Binary files a/test-data/normal-font.png and b/test-data/normal-font.png differ