From 6d30a5285554f1524677e33f21028f806e68dbd8 Mon Sep 17 00:00:00 2001
From: jsalmon3 <>
Date: Sat, 27 Mar 2004 21:19:40 +0000
Subject: [PATCH] Menu button fonts are configurable

---
 src/include/ui.h           |  1 +
 src/stratagus/mainloop.cpp | 34 +++++++++++++++-------------------
 src/ui/script_ui.cpp       | 12 ++++++++++++
 3 files changed, 28 insertions(+), 19 deletions(-)

diff --git a/src/include/ui.h b/src/include/ui.h
index fdd43afe1..346a84986 100644
--- a/src/include/ui.h
+++ b/src/include/ui.h
@@ -270,6 +270,7 @@ typedef struct _ui_ {
 		int   X;                        /// button screen X position
 		int   Y;                        /// button screen Y position
 		char* Text;                     /// button caption
+		int   Font;                     /// button caption font
 		int   Width;                    /// button width
 		int   Height;                   /// button height
 		int   Button;                   /// button style
diff --git a/src/stratagus/mainloop.cpp b/src/stratagus/mainloop.cpp
index ca124f345..a7b83170b 100644
--- a/src/stratagus/mainloop.cpp
+++ b/src/stratagus/mainloop.cpp
@@ -256,10 +256,6 @@ global void DoScrollArea(enum _scroll_state_ state, int fast)
 
 /**
 **  Draw menu button area.
-**
-**  With debug it shows the used frame time and arrival of network packets.
-**
-**  @todo  Must be more configurable. Adding diplomacy menu here?
 */
 local void DrawMenuButtonArea(void)
 {
@@ -271,35 +267,35 @@ local void DrawMenuButtonArea(void)
 	}
 	if (!IsNetworkGame()) {
 		if (TheUI.MenuButton.X != -1) {
-		//FIX ME: Transparent flag, 3rd param, has been hardcoded.
+			// FIXME: Transparent flag, 3rd param, has been hardcoded.
 			DrawMenuButton(TheUI.MenuButton.Button,
-				(ButtonAreaUnderCursor == ButtonAreaMenu
-					&& ButtonUnderCursor == ButtonUnderMenu ? MenuButtonActive : 0) |
-				(GameMenuButtonClicked ? MenuButtonClicked : 0), /*Transparent */ 0,
+				(ButtonAreaUnderCursor == ButtonAreaMenu &&
+					ButtonUnderCursor == ButtonUnderMenu ? MenuButtonActive : 0) |
+				(GameMenuButtonClicked ? MenuButtonClicked : 0), /* Transparent */ 0,
 				TheUI.MenuButton.Width, TheUI.MenuButton.Height,
 				TheUI.MenuButton.X, TheUI.MenuButton.Y,
-				GameFont, TheUI.MenuButton.Text, NULL, NULL);
+				TheUI.MenuButton.Font, TheUI.MenuButton.Text, NULL, NULL);
 		}
 	} else {
 		if (TheUI.NetworkMenuButton.X != -1) {
-		//FIX ME: Transparent flag, 3rd param, has been hardcoded.
+			// FIXME: Transparent flag, 3rd param, has been hardcoded.
 			DrawMenuButton(TheUI.NetworkMenuButton.Button,
-				(ButtonAreaUnderCursor == ButtonAreaMenu
-					&& ButtonUnderCursor == ButtonUnderNetworkMenu ? MenuButtonActive : 0) |
-				(GameMenuButtonClicked ? MenuButtonClicked : 0), /*Transparent */ 0,
+				(ButtonAreaUnderCursor == ButtonAreaMenu &&
+					ButtonUnderCursor == ButtonUnderNetworkMenu ? MenuButtonActive : 0) |
+				(GameMenuButtonClicked ? MenuButtonClicked : 0), /* Transparent */ 0,
 				TheUI.NetworkMenuButton.Width, TheUI.NetworkMenuButton.Height,
 				TheUI.NetworkMenuButton.X, TheUI.NetworkMenuButton.Y,
-				GameFont, TheUI.NetworkMenuButton.Text, NULL, NULL);
+				TheUI.NetworkMenuButton.Font, TheUI.NetworkMenuButton.Text, NULL, NULL);
 		}
 		if (TheUI.NetworkDiplomacyButton.X != -1) {
-		//FIX ME: Transparent flag, 3rd param, has been hardcoded.
+			// FIXME: Transparent flag, 3rd param, has been hardcoded.
 			DrawMenuButton(TheUI.NetworkDiplomacyButton.Button,
-				(ButtonAreaUnderCursor == ButtonAreaMenu
-					&& ButtonUnderCursor == ButtonUnderNetworkDiplomacy ? MenuButtonActive : 0) |
-				(GameDiplomacyButtonClicked ? MenuButtonClicked : 0), /*Transparent */ 0,
+				(ButtonAreaUnderCursor == ButtonAreaMenu &&
+					ButtonUnderCursor == ButtonUnderNetworkDiplomacy ? MenuButtonActive : 0) |
+				(GameDiplomacyButtonClicked ? MenuButtonClicked : 0), /* Transparent */ 0,
 				TheUI.NetworkDiplomacyButton.Width, TheUI.NetworkDiplomacyButton.Height,
 				TheUI.NetworkDiplomacyButton.X, TheUI.NetworkDiplomacyButton.Y,
-				GameFont, TheUI.NetworkDiplomacyButton.Text, NULL, NULL);
+				TheUI.NetworkDiplomacyButton.Font, TheUI.NetworkDiplomacyButton.Text, NULL, NULL);
 		}
 	}
 
diff --git a/src/ui/script_ui.cpp b/src/ui/script_ui.cpp
index 323d6a10f..743c85ab9 100644
--- a/src/ui/script_ui.cpp
+++ b/src/ui/script_ui.cpp
@@ -1681,6 +1681,10 @@ local int CclDefineUI(lua_State* l)
 							lua_rawgeti(l, -1, subk + 1);
 							ui->MenuButton.Text = strdup(LuaToString(l, -1));
 							lua_pop(l, 1);
+						} else if (!strcmp(value, "font")) {
+							lua_rawgeti(l, -1, subk + 1);
+							ui->MenuButton.Font = FontByIdent(LuaToString(l, -1));
+							lua_pop(l, 1);
 						} else if (!strcmp(value, "style")) {
 							lua_rawgeti(l, -1, subk + 1);
 							ui->MenuButton.Button = scm2buttonid(l, LuaToString(l, -1));
@@ -1728,6 +1732,10 @@ local int CclDefineUI(lua_State* l)
 							lua_rawgeti(l, -1, subk + 1);
 							ui->NetworkMenuButton.Text = strdup(LuaToString(l, -1));
 							lua_pop(l, 1);
+						} else if (!strcmp(value, "font")) {
+							lua_rawgeti(l, -1, subk + 1);
+							ui->NetworkMenuButton.Font = FontByIdent(LuaToString(l, -1));
+							lua_pop(l, 1);
 						} else if (!strcmp(value, "style")) {
 							lua_rawgeti(l, -1, subk + 1);
 							ui->NetworkMenuButton.Button = scm2buttonid(l, LuaToString(l, -1));
@@ -1775,6 +1783,10 @@ local int CclDefineUI(lua_State* l)
 							lua_rawgeti(l, -1, subk + 1);
 							ui->NetworkDiplomacyButton.Text = strdup(LuaToString(l, -1));
 							lua_pop(l, 1);
+						} else if (!strcmp(value, "font")) {
+							lua_rawgeti(l, -1, subk + 1);
+							ui->NetworkDiplomacyButton.Font = FontByIdent(LuaToString(l, -1));
+							lua_pop(l, 1);
 						} else if (!strcmp(value, "style")) {
 							lua_rawgeti(l, -1, subk + 1);
 							ui->NetworkDiplomacyButton.Button = scm2buttonid(l, LuaToString(l, -1));