From 19e11f43c4ad3aaccce8809ba66350dd3cbeb3dd Mon Sep 17 00:00:00 2001 From: Daniel Karbach Date: Wed, 8 Aug 2012 23:30:55 +0200 Subject: [PATCH] added a "disabled" font --- src/battle/Resources.h | 2 ++ src/graphics/Menu.h | 12 +++++++++--- src/main.cpp | 15 ++++++++++++++- test-data/disabled-font.png | Bin 0 -> 1169 bytes test-data/normal-font.png | Bin 1266 -> 1170 bytes 5 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 test-data/disabled-font.png diff --git a/src/battle/Resources.h b/src/battle/Resources.h index 2de6b69..098c844 100644 --- a/src/battle/Resources.h +++ b/src/battle/Resources.h @@ -37,6 +37,7 @@ struct Resources { graphics::Frame *selectFrame; graphics::Font *normalFont; + graphics::Font *disabledFont; const char *spellMenuHeadline; graphics::Menu spellMenuPrototype; @@ -59,6 +60,7 @@ struct Resources { , selectFrame(0) , normalFont(0) + , disabledFont(0) , spellMenuHeadline("") { } diff --git a/src/graphics/Menu.h b/src/graphics/Menu.h index 083e741..90af3e4 100644 --- a/src/graphics/Menu.h +++ b/src/graphics/Menu.h @@ -27,7 +27,7 @@ template 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 entries; int charsPerEntry; int rows; @@ -84,8 +85,9 @@ private: template -Menu::Menu(const Font *font, int charsPerEntry, int rows, int rowGap, int cols, int colGap) +Menu::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::Draw(SDL_Surface *dest, geometry::Point position) const { int end(items < slots ? items : slots); for (int i(0), count(end - start); i < count; ++i) { geometry::Vector 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); + } } } diff --git a/src/main.cpp b/src/main.cpp index 22c43cc..df3def1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -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(&normalFont, 12, 6, 8, 2, 32); + battleRes.spellMenuPrototype = Menu(&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 index 0000000000000000000000000000000000000000..794d05f4ecab24b07307d856c4bb842361e9b307 GIT binary patch literal 1169 zcmV;C1aA9@P){@J<M%Xf+LJ*+$D-ko<poc2S;N)(M4ce9_8&eF zfP;_9LhM>7>-%RGBYFqjs&G*jFltrHIxcFm%imRI6bL}6Kr_qUWoO%a(%@+)3Zi_G zu2hZB==&J`9|ZzXD3JBONYqYzwdJ$cUwr~%_I_*scUPV+3P1b1K!E@ve4yyLc~>8# zOH77U%joU@Za#~5e=GZYK!E_13RGpmvMk=ySKr=7_f=CA2tcVoDrMN6TdE>|Mn}Vm z@_Di&pYD$1>Isgh`tP2Z%Njov2mk;8;BnlmbKKEfQ+1!@EqQfD&#UeuRh@=E<#~J{ zfJDssfxOD(y^mwfPZL$X*8)bz>h6x}W~#UR-El*K0F(-(z9Fi5fA{jEEZ$obU{;Ua zeJFMPN6(=^07?a_w$#--@zp0OPQ&{BSie83f?4a20s%xQP?ZuzD@#;VA=UF;eWB{; zI4UJle=jHyK%@e#&hfjf<5xu$;+|1#KV~W6?)y<7fD8q)Dp8h?qgG0FxzYWgF5eoF zb`&*eHJVWMKH}*AC=dVu0KhTG{gJ1vMrGC0o1?S3T~&E^y#1Bc@AyCf4nA~24sXo@ z;XMQAEjK!TAqoVbR3LSB0qcHHRD3v9~cHz-ysqmR;RG^?OzAP)8b#_Ccy{1I)ft6bK;G2Z~yK$zs(qs#k%ka(zCX?iu$` zAONKT%`Di{b8vRI;92_@PaTJDCtXk=fCvRr-8|j3@ZNhZS*u68t7O(Y{Z+n!xBgK+ zkM;YDsy_+@;DG!4O{qQ!p{n=kF(ObP000000G%(vUJyPIz|q|QvV7O&kMCw(MT))$ zGkZ@~`)B2Q+im@w^?6mCz^eN1jvERDAmFq67aDB=yq325K8<(ByGsT=b-h)Y=CU&6 zt$r6M5I}?iy*^yDea<>QDj!6>I;*~4H5$KJKcPSX4%)2*W#4=x jr|DT_-$z1$037@U(8J=xK+ar100000NkvXXu0mjfY9=(V literal 0 HcmV?d00001 diff --git a/test-data/normal-font.png b/test-data/normal-font.png index 0bd50d02efb6c249d24a7431c9d0bf4214965010..b6a286eb4e93875a037d84260e8237b536f17910 100644 GIT binary patch delta 1149 zcmV-@1cLkW36cqrB!5{+L_t(|+U=c5a@;TsMWs|D1ffLZtm_R2dmB!Q1X?DsaQ zRJFuO#wR!c_ch@2-{;r$A3pwm+}8p>?^*r5s(e-bNADXwKPy+&j_C5M`+v2+RpVx@ z|DOv0%)G3MG5g)FB~+EKs{iPBtL?H{Os{f#6{1`Jd;8D(-G7eS_wz3b1fWzP6}uK& zWw})rE!sj>D^GU2s>U(8ToeePqXI?GX}zl{vpKNJhf(_|R!h0suGN{t=snh%N7f8T zwHnMS9Kgv6q}m6tD$UG-j-FTTk5&0Hs#P?v!m7qU+DAfx08UaMuVrNwt9N~~>l3}I zivj^SxUF+k^?wc;chAgajUNgG0002+ zIPTRs?tf^msk%?{E_roE&#UeuRh@=E<#~J{fJDssfxOD(y^mwfPZL$X*8)bz>h6x} zW~#UR-El*K0F(-(z9Fi5fA{jEEZ(~)z^op-`%vookDfz;0F(+;ZK~(TAkx}S;w!6D#Sgb z*nZ4X!rk|yKmZvEWL2UpA4jc}>T;v|L0!HzBJC(@&}uZH>V3q~|4|?S004kvkozM~ zS&ho7r#DAub-Swa?s)qvtKac~035vNf*js83xxL!oVVQQ_=PACfKq|f*#)foK~eGH zRDY3IvwbIPJyiYg9rrFinYEur?LmP6lnUg{F}nIYYfJ;Lg_>D*b^FxsRkcGMX*Ajg zsk#j?`%Y0HfJ`4KYV{?HRm-Se1**#R`E{wNTD1McrPrTQda6;H)oA=?{e%JmIB2&LlzsD&oTg`yeIE%00&wsR{RXg*AIsks P00000NkvXXu0mjf9v@3O delta 1246 zcmV<41R?v93GxY$B!9U{L_t(|+U=c9lH4E+M!QpUfm!7K2h3uQFj@5?T}AZwNnp== zn^Y3pfN|?XNWk;4;QRag`|%&1&*$^u;Po8u^{Vn!^Q4=#To;vd>FNllC_lH zc6mn*tLJ1#9#bPA)od`cZ~%8!psMAlDvf19SNE&pW4nAA)ht?7VO4RUZXXE+0=Sa` zRV^#CSZCLFx_>_1v$`k{K;;LP9iysqxV+^?eH@i#^0r5nsc_d^#9eVURlnl{0RR91 z+}8(+j-jV~m(~66af21BctSREUX8q~+VQ&28!xf0@AhF;RAL1CZ}dK zpRy-|*N4mcMrx%}^=EdMpIzSr3Iw23Al1%|Q)A_*WxD$8+fU=P*Z&B8`==BD}&1p)v70Jt1a?-+MA){Krt?|!aM z)`wB8N7|JQf0z65fdB?cpAS@3rtFTE)^m21UtQ1By;t|~Lm|=1)N1+Ben)`-lnSI? zA*y=*>E%Z`EfZq50$BBk#-Y^pU)_fS0Vow{w|}MHy`Csr{%M&6r;z=Avfp1;!Ls#7 zfdD!bXqOUoD@)g|LQ!QoH7i_g!BzdGQX=*Df&u|_D$wc|Jv|FjwK(0DlyyeEBZVm? zj6NR)0;m}7>@Tk?7fu})>Kfy(u2;{(W$UH#HLK-&Ps{F#J9h2ujsgJy003Oy2ii4@ zv44xHdREWq+}*C}b9bzrSG}m7gAWAI$Oo@rNa`=To@aWe)@V*)_j6DnfJp_a?yF|` z0A9<~bxJ~ZEM9#NRo^LV;Z^THn@grv;I51hZ`|7wm_GGBG zFM7)LbmUyMH^i>f%cqpbQfBKrMS%b&eSe^?*_SE2ma+OCcJIA#mtA~LKXDHQ0#GWD z`}gg3j#^R76M_x`SPhPrdqRI`1m`gi5R zSxOW=LpJ(8nS}%BP#`!1OF>VaWt+}E#|Huc0002Ej}JsF2puFSbAE@qox4@@URad~(EUNlc3=|09Bn9&B2x(b@?j13^6iOAxQuzSc z{>heKJ%6b>OIP*jSGy^pKmZ*>^{b41uUZbwGIc5g3IrhFFC%lrswS7)&Hw-a07*qo IM6N<$g4X_Uc>n+a -- 2.39.2