r673 - trunk/game
black at icculus.org
black at icculus.org
Mon Mar 13 15:59:04 EST 2006
Author: black
Date: 2006-03-13 15:59:04 -0500 (Mon, 13 Mar 2006)
New Revision: 673
Modified:
trunk/game/m_menucore.c
Log:
Change a few more functions to use subnamespaces (its consistent with the current relationship between Item and SubMenu).
Menu_GetItem is now the last non-global function that doesn't belong to any item namespace.
Modified: trunk/game/m_menucore.c
===================================================================
--- trunk/game/m_menucore.c 2006-03-12 22:30:24 UTC (rev 672)
+++ trunk/game/m_menucore.c 2006-03-13 20:59:04 UTC (rev 673)
@@ -17,10 +17,10 @@
-make it more strict and error out earlier
*/
-void Menu_FinishMenu(Menu_SubMenu *menu);
+void Menu_SubMenu_Finish(Menu_SubMenu *menu);
// if the item has no parent, it doesn't do anything
-void Menu_RemoveFromParent(Menu_Item *item)
+void Menu_Item_RemoveFromParent(Menu_Item *item)
{
if (item->parent)
{
@@ -53,7 +53,7 @@
}
}
-void Menu_AddAtFront(Menu_SubMenu *parent, Menu_Item *item)
+void Menu_SubMenu_AddAtFront(Menu_SubMenu *parent, Menu_Item *item)
{
assert( item != NULL );
assert( parent != NULL );
@@ -72,7 +72,7 @@
}
}
-void Menu_AddToBack(Menu_SubMenu *parent, Menu_Item *item )
+void Menu_SubMenu_AddToBack(Menu_SubMenu *parent, Menu_Item *item )
{
assert( item != NULL );
assert( parent != NULL );
@@ -83,30 +83,55 @@
parent->subitems = item;
}
-void Menu_BringToFront(Menu_SubMenu *menu)
+void Menu_SubMenu_BringToFront(Menu_Item *item)
{
- Menu_SubMenu *parent = menu->super.parent;
+ Menu_SubMenu *parent = item->parent;
// FIXME: fix this
if( !parent ) {
return;
}
- Menu_RemoveFromParent(&menu->super);
- Menu_AddAtFront(parent, &menu->super);
+ Menu_Item_RemoveFromParent(item);
+ Menu_SubMenu_AddAtFront(parent, item);
}
-// TODO: add fully qualified names with a scope operator (:: or.?)
-void *Menu_GetItem(Menu_SubMenu *parent, char *name)
+// TODO: use NString for everything
+// TODO: this is the last function that doesnt belong to an item type (we may need to rethink its design)
+void *Menu_GetItem(Menu_SubMenu *parent, const char *name)
{
- Menu_Item *sub;
- if (!parent)
- parent = &Menu.rootmenu;
+ Menu_SubMenu *current_parent;
+ Menu_Item *item;
+ const char *name_start, *name_end;
- for (sub = parent->subitems; sub; sub = sub->next)
+ current_parent = parent;
+ if (!current_parent)
{
- if (!strcmp(sub->name, name))
- return sub;
+ current_parent = &Menu.rootmenu;
}
- return NULL;
+
+ name_start = name;
+ while (*name_start)
+ {
+ name_end = strchr(name_start, '.');
+ if (name_end == NULL)
+ {
+ name_end = name + String_Length(name_start);
+ }
+ for (item = parent->subitems; item; item = item->next)
+ {
+ if (String_NCompare(item->name, name, name_end - name_start) == 0)
+ {
+ break;
+ }
+ }
+ if (item == NULL)
+ {
+ break;
+ }
+ name_start = name_end + 1;
+ // FIXME: we don't really know whether item is really a submenu...
+ current_parent = (Menu_SubMenu*) item;
+ }
+ return item;
}
void Menu_MoveToCenter(Menu_SubMenu *menu)
@@ -144,7 +169,7 @@
void Menu_Generic_Destroy(Menu_Item *item)
{
- Menu_RemoveFromParent(item);
+ Menu_Item_RemoveFromParent(item);
if (Menu.grabs == item)
Menu.grabs = NULL; //hrm.
@@ -168,7 +193,7 @@
if (parent)
{
- Menu_AddToBack(parent, item);
+ Menu_SubMenu_AddToBack(parent, item);
}
return item;
@@ -398,7 +423,7 @@
NUint i;
item->popup = Menu_SubMenu_Create(&Menu.rootmenu);
- Menu_BringToFront(item->popup);
+ Menu_SubMenu_BringToFront(&item->popup->super);
interior = Menu_SubMenu_Create(item->popup);
interior->allowclose = false;
Menu.grabs = &item->popup->super;
@@ -418,9 +443,9 @@
item->popup->subwindow.pos[0] = item->popup->super.pos[0];
item->popup->subwindow.pos[1] = item->popup->super.pos[1];
- Menu_FinishMenu(interior);
+ Menu_SubMenu_Finish(interior);
interior->super.size[1] = ((i>64)?64:i);
- Menu_FinishMenu(item->popup);
+ Menu_SubMenu_Finish(item->popup);
return true;
}
return false;
@@ -721,7 +746,7 @@
item->super.pos[1] += Input.mouse[1] - item->dragmousepos[1];
item->dragmousepos[0] = Input.mouse[0];
item->dragmousepos[1] = Input.mouse[1];
-// Menu_FinishMenu(item->super.parent);
+// Menu_SubMenu_Finish(item->super.parent);
}
for (j = 0; j < 2; j++)
@@ -805,7 +830,7 @@
{
Menu_Item *subitem;
- Menu_BringToFront(item);
+ Menu_SubMenu_BringToFront(&item->super);
subitem = item->selecteditem;
if (item->selecteditem)
@@ -814,7 +839,7 @@
if (item->allowclose && sym == SDLK_ESCAPE)
{
- Menu_RemoveFromParent(&item->super);
+ Menu_Item_RemoveFromParent(&item->super);
item->super.Destroy(item);
return true;
}
@@ -824,25 +849,25 @@
if (sym == SDLK_LEFT)
{
item->super.pos[0] -= 4;
- Menu_FinishMenu(item);
+ Menu_SubMenu_Finish(item);
return true;
}
if (sym == SDLK_UP)
{
item->super.pos[1] -= 4;
- Menu_FinishMenu(item);
+ Menu_SubMenu_Finish(item);
return true;
}
if (sym == SDLK_RIGHT)
{
item->super.pos[0] += 4;
- Menu_FinishMenu(item);
+ Menu_SubMenu_Finish(item);
return true;
}
if (sym == SDLK_DOWN)
{
item->super.pos[1] += 4;
- Menu_FinishMenu(item);
+ Menu_SubMenu_Finish(item);
return true;
}
@@ -880,7 +905,7 @@
menu = (Menu_SubMenu*) Menu_Generic_Create(NULL, 0, 0, sizeof(Menu_SubMenu));
if( parent ) {
- Menu_AddAtFront(parent, &menu->super);
+ Menu_SubMenu_AddAtFront(parent, &menu->super);
}
menu->super.MouseMove = Menu_SubMenu_MouseMove;
@@ -893,8 +918,7 @@
return menu;
}
-// TODO: change this name, too
-void Menu_FinishMenu(Menu_SubMenu *menu)
+void Menu_SubMenu_Finish(Menu_SubMenu *menu)
{
Menu_Item *subitem;
NSint maxpos[2];
@@ -919,8 +943,7 @@
menu->subwindow.size[1] = maxpos[1];
}
-// TODO: change this name as well?
-void Menu_ArrangeSubItems(Menu_SubMenu *menu, Nbool horizontal, NSint pad, Menu_ArrangeStyle arrange)
+void Menu_SubMenu_Arrange(Menu_SubMenu *menu, Nbool horizontal, NSint pad, Menu_ArrangeStyle arrange)
{
Menu_Item *sitem;
NSint axis, otheraxis;
@@ -1067,7 +1090,7 @@
Menu_Picture_Create(child, 0, 0, imagesize, imagesize, "lhfont.tga", NULL);
- Menu_FinishMenu(child);
+ Menu_SubMenu_Finish(child);
child->allowclose = false;
Menu_Picture_Create(child, 0, 0, child->super.size[0], child->super.size[1], "maps/test/skybox_ny.tga", NULL);
@@ -1076,7 +1099,7 @@
child->super.size[0] = windowsize;
child->super.size[1] = windowsize;
- Menu_FinishMenu(menu);
+ Menu_SubMenu_Finish(menu);
Menu_Picture_Create(menu, 0, 0, menu->super.size[0], menu->super.size[1], "maps/test/skybox_ny.tga", NULL);
}
static Shell_SymbolDecl Menu_Menu_Test_Decl = {
@@ -1111,9 +1134,9 @@
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_FinishMenu(menu);
- Menu_ArrangeSubItems(menu, false, 0, MENU_ARRANGESTYLE_CENTER);
- Menu_FinishMenu(menu);
+ Menu_SubMenu_Finish(menu);
+ Menu_SubMenu_Arrange(menu, false, 0, MENU_ARRANGESTYLE_CENTER);
+ Menu_SubMenu_Finish(menu);
Menu_Picture_Create(menu, 0, 0, menu->super.size[0], menu->super.size[1], "maps/test/skybox_ny.tga", NULL);
Menu_MoveToCenter(menu);
@@ -1156,7 +1179,7 @@
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_FinishMenu(menu);
+ Menu_SubMenu_Finish(menu);
Menu_Picture_Create(menu, 0, 0, menu->super.size[0], menu->super.size[1], "maps/test/skybox_ny.tga", NULL);
More information about the neither-commits
mailing list