From 8f8b775c8ff07edb815b764868e87145da690180 Mon Sep 17 00:00:00 2001 From: jsalmon3 <> Date: Tue, 1 Apr 2003 17:06:29 +0000 Subject: [PATCH] Added text colors to menu items --- src/editor/editloop.cpp | 2 +- src/game/intro.cpp | 2 +- src/include/menus.h | 6 +- src/stratagus/mainloop.cpp | 2 +- src/ui/menu_proc.cpp | 110 +++++++++++++++++++++++++++++-------- 5 files changed, 94 insertions(+), 28 deletions(-) diff --git a/src/editor/editloop.cpp b/src/editor/editloop.cpp index f2d3b8d37..becd6a339 100644 --- a/src/editor/editloop.cpp +++ b/src/editor/editloop.cpp @@ -891,7 +891,7 @@ global void EditorUpdateDisplay(void) (GameMenuButtonClicked ? MenuButtonClicked : 0), 128, 19, TheUI.MenuButtonX+24,TheUI.MenuButtonY+2, - GameFont,"Menu (~<F10~>)"); + GameFont,"Menu (~<F10~>)",NULL,NULL); // // Minimap border diff --git a/src/game/intro.cpp b/src/game/intro.cpp index bed8048b1..ff16d3f01 100644 --- a/src/game/intro.cpp +++ b/src/game/intro.cpp @@ -205,7 +205,7 @@ local void DrawContinueButton(void) DrawMenuButton(MBUTTON_GM_HALF,ContinueButtonFlags, 106,27, ContinueButtonX,ContinueButtonY, - LargeFont,"~!Continue"); + LargeFont,"~!Continue",NULL,NULL); } /** diff --git a/src/include/menus.h b/src/include/menus.h index d57a20d7a..2577b60cb 100644 --- a/src/include/menus.h +++ b/src/include/menus.h @@ -10,7 +10,7 @@ // /**@name menus.h - The menu headerfile. */ // -// (c) Copyright 1999-2002 by Andreas Arens +// (c) Copyright 1999-2003 by Andreas Arens // // FreeCraft is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published @@ -338,7 +338,9 @@ extern void InitMenus(int race); /// Draw menu extern void DrawMenu(Menu *menu); /// Draw menu button -extern void DrawMenuButton(MenuButtonId button,unsigned flags,int w,int h,int x,int y,const int font,const unsigned char *text); +extern void DrawMenuButton(MenuButtonId button,unsigned flags,int w,int h, + int x,int y,const int font,const unsigned char *text, + char *normalcolor, char *reversecolor); /// Set menu backgound and draw it extern void MenusSetBackground(void); /// Draw and process a menu diff --git a/src/stratagus/mainloop.cpp b/src/stratagus/mainloop.cpp index d9f66bbbb..f9855cfcb 100644 --- a/src/stratagus/mainloop.cpp +++ b/src/stratagus/mainloop.cpp @@ -272,7 +272,7 @@ local void DrawMenuButtonArea(void) (GameMenuButtonClicked ? MenuButtonClicked : 0), 128, 19, TheUI.MenuButtonX+24,TheUI.MenuButtonY+2, - GameFont,"Menu (~<F10~>)"); + GameFont,"Menu (~<F10~>)",NULL,NULL); #ifdef DEBUG // diff --git a/src/ui/menu_proc.cpp b/src/ui/menu_proc.cpp index d3b53b19d..25679e194 100644 --- a/src/ui/menu_proc.cpp +++ b/src/ui/menu_proc.cpp @@ -169,14 +169,24 @@ global void MenusSetBackground(void) ** @param text text to print on button */ global void DrawMenuButton(MenuButtonId button,unsigned flags,int w,int h,int x,int y, - const int font,const unsigned char *text) + const int font,const unsigned char *text,char *normalcolor,char *reversecolor) { MenuButtonId rb; int s; char* nc; char* rc; + char* oldnc; + char* oldrc; - GetDefaultTextColors(&nc, &rc); + GetDefaultTextColors(&oldnc, &oldrc); + if (normalcolor || reversecolor) { + nc = normalcolor ? normalcolor : oldnc; + rc = reversecolor ? reversecolor : oldrc; + SetDefaultTextColors(nc,rc); + } else { + nc = oldnc; + rc = oldrc; + } if (button == MBUTTON_SC_BUTTON || button == MBUTTON_SC_BUTTON_LEFT || button == MBUTTON_SC_BUTTON_RIGHT) { if (flags&MenuButtonDisabled) { @@ -250,7 +260,7 @@ global void DrawMenuButton(MenuButtonId button,unsigned flags,int w,int h,int x, } } } - SetDefaultTextColors(nc,rc); + SetDefaultTextColors(oldnc,oldrc); } /** @@ -265,7 +275,9 @@ local void DrawPulldown(Menuitem *mi, int mx, int my) int i; char* nc; char* rc; - char *text; + char* oldnc; + char* oldrc; + char* text; unsigned flags; MenuButtonId rb; MenuButtonId db; @@ -281,7 +293,15 @@ local void DrawPulldown(Menuitem *mi, int mx, int my) flags = mi->flags; rb = mi->d.pulldown.button; - GetDefaultTextColors(&nc, &rc); + GetDefaultTextColors(&oldnc,&oldrc); + if (mi->d.pulldown.normalcolor || mi->d.pulldown.reversecolor) { + nc = mi->d.pulldown.normalcolor ? mi->d.pulldown.normalcolor : oldnc; + rc = mi->d.pulldown.reversecolor ? mi->d.pulldown.reversecolor : oldrc; + SetDefaultTextColors(nc,rc); + } else { + nc = oldnc; + rc = oldrc; + } if (rb == MBUTTON_SC_PULLDOWN) { h = mi->d.pulldown.ysize; if (flags&MenuButtonClicked) { @@ -478,7 +498,7 @@ local void DrawPulldown(Menuitem *mi, int mx, int my) } } } - SetDefaultTextColors(nc,rc); + SetDefaultTextColors(oldnc,oldrc); } /** @@ -494,7 +514,9 @@ local void DrawListbox(Menuitem *mi, int mx, int my) int s; char* nc; char* rc; - char *text; + char* oldnc; + char* oldrc; + char* text; MenuButtonId rb; unsigned flags; int w; @@ -509,7 +531,15 @@ local void DrawListbox(Menuitem *mi, int mx, int my) x = mx+mi->xofs; y = my+mi->yofs; - GetDefaultTextColors(&nc, &rc); + GetDefaultTextColors(&oldnc,&oldrc); + if (mi->d.listbox.normalcolor || mi->d.listbox.reversecolor) { + nc = mi->d.listbox.normalcolor ? mi->d.listbox.normalcolor : oldnc; + rc = mi->d.listbox.reversecolor ? mi->d.listbox.reversecolor : oldrc; + SetDefaultTextColors(nc,rc); + } else { + nc = oldnc; + rc = oldrc; + } if (flags&MenuButtonDisabled) { rb--; @@ -526,10 +556,11 @@ local void DrawListbox(Menuitem *mi, int mx, int my) SetDefaultTextColors(nc,rc); text = (*mi->d.listbox.retrieveopt)(mi, i + s); if (text) { - if (i == mi->d.listbox.curopt) + if (i == mi->d.listbox.curopt) { SetDefaultTextColors(rc,rc); - else + } else { SetDefaultTextColors(nc,rc); + } VideoDrawText(x+2,y+2 + 18*i ,mi->font,text); } } @@ -543,7 +574,7 @@ local void DrawListbox(Menuitem *mi, int mx, int my) VideoDrawRectangleClip(ColorYellow,x-2,y-2,w+1,h+2); } } - SetDefaultTextColors(nc,rc); + SetDefaultTextColors(oldnc,oldrc); } /** @@ -747,6 +778,8 @@ local void DrawGem(Menuitem *mi, int mx, int my) int y; char* nc; char* rc; + char* oldnc; + char* oldrc; flags = mi->flags; rb = mi->d.gem.button; @@ -768,15 +801,23 @@ local void DrawGem(Menuitem *mi, int mx, int my) } VideoDraw(MenuButtonGfx.Sprite, rb, x, y); - GetDefaultTextColors(&nc, &rc); if (mi->d.gem.text) { + GetDefaultTextColors(&oldnc,&oldrc); + if (mi->d.gem.normalcolor || mi->d.gem.reversecolor) { + nc = mi->d.gem.normalcolor ? mi->d.gem.normalcolor : oldnc; + rc = mi->d.gem.reversecolor ? mi->d.gem.reversecolor : oldrc; + SetDefaultTextColors(nc,rc); + } else { + nc = oldnc; + rc = oldrc; + } VideoDrawText(x+24, y+4, GameFont, mi->d.gem.text); if (mi->flags&MenuButtonActive) { SetDefaultTextColors(rc,rc); VideoDrawRectangleClip(ColorGray,mx+mi->xofs-4,my+mi->yofs-4, VideoTextLength(GameFont, mi->d.gem.text)+30,VideoTextHeight(GameFont)+12); - SetDefaultTextColors(nc,rc); } + SetDefaultTextColors(oldnc,oldrc); } } @@ -791,7 +832,9 @@ local void DrawInput(Menuitem *mi, int mx, int my) { char* nc; char* rc; - char *text; + char* oldnc; + char* oldrc; + char* text; unsigned flags; MenuButtonId rb; int w; @@ -807,7 +850,15 @@ local void DrawInput(Menuitem *mi, int mx, int my) w = mi->d.input.xsize; h = mi->d.input.ysize; - GetDefaultTextColors(&nc, &rc); + GetDefaultTextColors(&oldnc,&oldrc); + if (mi->d.input.normalcolor || mi->d.input.reversecolor) { + nc = mi->d.input.normalcolor ? mi->d.input.normalcolor : oldnc; + rc = mi->d.input.reversecolor ? mi->d.input.reversecolor : oldrc; + SetDefaultTextColors(nc,rc); + } else { + nc = oldnc; + rc = oldrc; + } if (mi->d.input.button == MBUTTON_SC_PULLDOWN) { rb = MBUTTON_SC_INPUT; if (flags&MenuButtonDisabled) { @@ -845,7 +896,7 @@ local void DrawInput(Menuitem *mi, int mx, int my) } } } - SetDefaultTextColors(nc,rc); + SetDefaultTextColors(oldnc,oldrc); } @@ -861,6 +912,8 @@ global void DrawMenu(Menu *menu) int l; char* nc; char* rc; + char* oldnc; + char* oldrc; Menuitem *mi; Menuitem *mip; @@ -938,32 +991,43 @@ global void DrawMenu(Menu *menu) for (i = 0; i < n; i++) { switch (mi->mitype) { case MI_TYPE_TEXT: - if (!mi->d.text.text) + if (!mi->d.text.text) { break; - GetDefaultTextColors(&nc, &rc); + } + GetDefaultTextColors(&oldnc,&oldrc); + if (mi->d.text.normalcolor || mi->d.text.reversecolor) { + nc = mi->d.text.normalcolor ? mi->d.text.normalcolor : oldnc; + rc = mi->d.text.reversecolor ? mi->d.text.reversecolor : oldrc; + SetDefaultTextColors(nc,rc); + } else { + nc = oldnc; + rc = oldrc; + } if (mi->flags&MenuButtonActive && mi->d.text.action) { VideoDrawRectangleClip(ColorGray,menu->x+mi->xofs-4,menu->y+mi->yofs-4, VideoTextLength(mi->font, mi->d.text.text)+5, VideoTextHeight(mi->font)+5); SetDefaultTextColors(rc,rc); } - if (mi->d.text.align&MI_TFLAGS_CENTERED) + if (mi->d.text.align&MI_TFLAGS_CENTERED) { VideoDrawTextCentered(menu->x+mi->xofs,menu->y+mi->yofs, mi->font,mi->d.text.text); - else if (mi->d.text.align&MI_TFLAGS_RALIGN) { + } else if (mi->d.text.align&MI_TFLAGS_RALIGN) { l = VideoTextLength(mi->font,mi->d.text.text); VideoDrawText(menu->x+mi->xofs-l,menu->y+mi->yofs, mi->font,mi->d.text.text); - } else + } else { VideoDrawText(menu->x+mi->xofs,menu->y+mi->yofs, mi->font,mi->d.text.text); - SetDefaultTextColors(nc, rc); + } + SetDefaultTextColors(oldnc,oldrc); break; case MI_TYPE_BUTTON: DrawMenuButton(mi->d.button.button,mi->flags, mi->d.button.xsize,mi->d.button.ysize, menu->x+mi->xofs,menu->y+mi->yofs, - mi->font,mi->d.button.text); + mi->font,mi->d.button.text, + mi->d.button.normalcolor,mi->d.button.reversecolor); break; case MI_TYPE_PULLDOWN: if (mi->flags&MenuButtonClicked) {