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