r709 - trunk/game

painquin at icculus.org painquin at icculus.org
Sun May 7 23:25:24 EDT 2006


Author: painquin
Date: 2006-05-07 23:25:23 -0400 (Sun, 07 May 2006)
New Revision: 709

Modified:
   trunk/game/m_menucore.c
   trunk/game/m_menucore.h
Log:
menu revisions,
Reworked the main menu (not a placeholder anymore),
Added a BigText item for menu headings and such,
Added menu padding (defaults to 2, menu->padding[axis] = n to change)


Modified: trunk/game/m_menucore.c
===================================================================
--- trunk/game/m_menucore.c	2006-05-05 21:50:55 UTC (rev 708)
+++ trunk/game/m_menucore.c	2006-05-08 03:25:23 UTC (rev 709)
@@ -225,12 +225,18 @@
 {
 	R_SetBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 	R_SetTexture(R.resource_font);
-	R_DrawString(item->text, 0, item->super.pos[0] + inh->origin[0], item->super.pos[1] + inh->origin[1], 8, 8, Console_DefaultColorTable, Console_DefaultColorTableSize, item->super.parent->selecteditem == &item->super);
+	R_DrawString(item->text, 0, item->super.pos[0] + inh->origin[0], item->super.pos[1] + inh->origin[1], item->super.size[1], item->super.size[1], Console_DefaultColorTable, Console_DefaultColorTableSize, item->super.parent->selecteditem == &item->super);
+	/* Notice: this uses the height of the text to determine the scale (for height and width)
+	 * if this is not right, we need an alternative way to track the scaling factor and size.
+	 */
 }
+	
+
 void Menu_Text_DefaultUse (struct Menu_TextItem *item, void *cookie)
 {
 	Shell_ExecuteScript("menu text use", cookie);
 }
+
 Nbool Menu_Text_KeyPress (Menu_TextItem *item, UNUSED NUint mod, NUint sym, UNUSED NUint character, Nbool downevent)
 {
 	if (sym == SDLK_RETURN || sym == MOUSE1)
@@ -267,9 +273,40 @@
 	return it;
 }
 
+Menu_TextItem *Menu_BigText_Create(Menu_SubMenu *parent, NSint x, NSint y, char *text, void *cookie, void (*UseItem) (struct Menu_TextItem *item, void *cookie))
+{
+	Menu_TextItem *it;
+	it = Menu_Text_Create(parent, x, y, text, cookie, UseItem);
 
 
+	it->super.size[0] *= 2;
+	it->super.size[1] *= 2;
 
+	/* Todo: Alternate scaling factors? */
+
+	return it;
+}
+
+
+/*
+ * Menu Padding
+ */
+void Menu_Pad_Draw(Menu_PadItem *item, Menu_Inheritance *inh)
+{
+	return;
+}
+
+Menu_PadItem *Menu_Pad_Create(Menu_SubMenu *parent, NSint padx, NSint pady)
+{
+	Menu_PadItem *it = (Menu_PadItem*)Menu_Generic_Create(parent, MENU_ITEMTYPE_PAD, 0, 0, sizeof(Menu_PadItem));
+
+	it->super.Draw = (MenuItemDraw_t)Menu_Pad_Draw;
+	it->super.size[0] = padx;
+	it->super.size[1] = pady;
+	return it;
+}
+
+
 //text-edit fields
 //fixme: only work with grabs?
 void Menu_Edit_Draw(Menu_EditItem *item, Menu_Inheritance *inh)
@@ -884,6 +921,8 @@
 	menu->super.Destroy = (MenuItemDestroy_t)Menu_SubMenu_Destroy;
 
 	menu->allowclose = true;
+	menu->padding[1] = 2;
+	/* default spacing of 2 pixels - I think this helps readability significantly -quin */
 
 	return menu;
 }
@@ -942,13 +981,13 @@
 	for (sitem = menu->subitems; sitem; sitem = sitem->next)
 	{
 		sitem->pos[axis] = maxval;
-		maxval += sitem->size[axis] + pad;
+		maxval += sitem->size[axis] + pad + menu->padding[axis];
 	}
+	val = maxval;
 
-	val = maxval;
 	for (sitem = menu->subitems; sitem; sitem = sitem->next)
 	{
-		val -= sitem->size[axis] + pad;
+		val -= sitem->size[axis] + pad + menu->padding[axis];
 		sitem->pos[axis] = val;
 
 		switch(arrange)
@@ -1052,6 +1091,8 @@
 	Menu_SubMenu *menu = cookie;
 	it->value = menu->subwindow.pos[1];
 }
+
+#if 0
 void Menu_Menu_Test(void)
 {
 	//fixme: we still need to figure out how to do the parent's frames, so the subwindow doesn't appear outside the parent
@@ -1090,30 +1131,39 @@
 	(Shell_Symbol_Callback) Menu_Menu_Test
 };
 
+#endif
 
 
+/*	Menu_Text_Create(menu, 0, 16, "Hello World", "echo Hello World\n", NULL);
+	Menu_Text_Create(menu, 0, 24, "Start up test map", "map test\n", NULL);
+	Menu_Text_Create(menu, 0, 32, "Go to the west!", "map west\n", NULL);*/
 
 
+	/*
+	Menu_Text_Create(menu, 0, 56+16, "test menu", "menu_test\n", NULL);
 
+	Menu_Edit_Create(menu, 0, 56, "EditItem");
+	Menu_Combo_Create(menu, 0, 56, 21*8, "ComboItem", "Option 1|Option 2|Option 3|Fuzzy Little Bunnies|Big Rocket Launcher|Children|Lightning Gun|Newborn Chicks|Grenade Launcher|Rodents|Nukes");
+*/
+#define IHEIGHT 160
+
 void Menu_Main(void)
 {
 	Menu_SubMenu *menu = Menu_SubMenu_Create(&Menu.rootmenu);
 	menu->dragable = true;
+	
 
-	Menu_Text_Create(menu, 0, 0, "Main menu", NULL, NULL);
+	Menu_BigText_Create(menu, 0, 0, "DarkWar", NULL, NULL); // TODO: replace this with a graphic -quin
+	Menu_Pad_Create(menu, 0, 8);
 
-	Menu_Text_Create(menu, 0, 16, "Hello World", "echo Hello World\n", NULL);
-	Menu_Text_Create(menu, 0, 24, "Start up test map", "map test\n", NULL);
-	Menu_Text_Create(menu, 0, 32, "Go to the west!", "map west\n", NULL);
-	Menu_Text_Create(menu, 0, 40, "quit", "menu_quit\n", NULL);
+	Menu_Text_Create(menu, 0, 0, "Singleplayer", NULL, NULL);
 
-	Menu_Text_Create(menu, 0, 56, "Close menu", "menu_close\n", NULL);
+	Menu_Text_Create(menu, 0, 0, "Multiplayer", "menu_multiplayer", NULL);
 
-	Menu_Text_Create(menu, 0, 56+16, "test menu", "menu_test\n", NULL);
-
-	Menu_Edit_Create(menu, 0, 56, "EditItem");
-	Menu_Combo_Create(menu, 0, 56, 21*8, "ComboItem", "Option 1|Option 2|Option 3|Fuzzy Little Bunnies|Big Rocket Launcher|Children|Lightning Gun|Newborn Chicks|Grenade Launcher|Rodents|Nukes");
-
+	Menu_Text_Create(menu, 0, 0, "Options", NULL, NULL);
+	
+	Menu_Text_Create(menu, 0, 0, "Exit DarkWar", "quit", NULL);
+	
 	Menu_SubMenu_Finish(menu);
 	Menu_SubMenu_Arrange(menu, false, 0, MENU_ARRANGESTYLE_CENTER);
 	Menu_SubMenu_Finish(menu);
@@ -1146,41 +1196,12 @@
 	(Shell_Symbol_Callback) Menu_CloseMenu
 };
 
-
-
-//The simple quit menu
-void Menu_Menu_Quit(void)
-{
-	Menu_SubMenu *menu = Menu_SubMenu_Create(&Menu.rootmenu);
-	menu->dragable = true;
-
-	Menu_Text_Create(menu, 0, 0, "Really Quit?", NULL, NULL);
-
-	Menu_Text_Create(menu, 0, 16, "Yes, and wipe my harddrive too.", "quit\n", NULL);
-	Menu_Text_Create(menu, 0, 24, "No. I want to keep playing this awesome game", "menu_close\n", NULL);
-
-	Menu_SubMenu_Finish(menu);
-
-	Menu_Picture_Create(menu, 0, 0, menu->super.size[0], menu->super.size[1], "maps/test/skybox_ny.tga", NULL, NULL);
-
-	Menu_MoveToCenter(menu);
-}
-static Shell_SymbolDecl Menu_Menu_Quit_Decl = {
-	"menu_quit",
-	"asks the user if they want to quit, in a polite way.",
-	"usage: menu_quit",
-	"",
-	(Shell_Symbol_Callback) Menu_Menu_Quit
-};
-
-
 void Menu_Init(void)
 {
 	Menu.menu_zone = Mem_AllocZone ("MenuZone", NULL, 0);
 
 	Shell_Register(&Menu_Menu_Main_Decl, NULL);
-	Shell_Register(&Menu_Menu_Test_Decl, NULL);
-	Shell_Register(&Menu_Menu_Quit_Decl, NULL);
+	//Shell_Register(&Menu_Menu_Test_Decl, NULL);
 	Shell_Register(&Menu_Menu_Close_Decl, NULL);
 
 	// init the root menu

Modified: trunk/game/m_menucore.h
===================================================================
--- trunk/game/m_menucore.h	2006-05-05 21:50:55 UTC (rev 708)
+++ trunk/game/m_menucore.h	2006-05-08 03:25:23 UTC (rev 709)
@@ -27,6 +27,7 @@
 	MENU_ITEMTYPE_COMBO,
 	MENU_ITEMTYPE_TEXT,
 	MENU_ITEMTYPE_PICTURE,
+	MENU_ITEMTYPE_PAD
 }
 Menu_ItemType;
 
@@ -68,6 +69,7 @@
 
 	struct Menu_Item *selecteditem;
 	struct Menu_Item *subitems;
+	NSint padding[2];
 }
 Menu_SubMenu;
 
@@ -85,6 +87,13 @@
 }
 Menu_TextItem;
 
+
+typedef struct Menu_PadItem
+{
+	Menu_Item super;
+}
+Menu_PadItem;
+
 typedef struct Menu_EditItem
 {
 	Menu_Item super;




More information about the neither-commits mailing list