r668 - trunk/game

black at icculus.org black at icculus.org
Wed Mar 8 17:07:58 EST 2006


Author: black
Date: 2006-03-08 17:07:58 -0500 (Wed, 08 Mar 2006)
New Revision: 668

Modified:
   trunk/game/m_menucore.c
Log:
Made all the callbacks take pointers to their real type instead of void*
to get rid of thisi.
Fixed a bug in the combo list code (popup wasnt set to NULL on delete, which caused
it to crash on destruction of the parent item).


Modified: trunk/game/m_menucore.c
===================================================================
--- trunk/game/m_menucore.c	2006-03-08 20:40:12 UTC (rev 667)
+++ trunk/game/m_menucore.c	2006-03-08 22:07:58 UTC (rev 668)
@@ -14,31 +14,30 @@
 
 void Menu_FinishMenu(Menu_SubMenu *menu);
 
-void Menu_RemoveFromParent(void *item)
+void Menu_RemoveFromParent(Menu_Item *item)
 {
-	Menu_Item *thisi = item;
 	Menu_Item *ref;
-	if (thisi->parent)
+	if (item->parent)
 	{
-		if (thisi->parent->subitems == NULL)
+		if (item->parent->subitems == NULL)
 		{
 		}
-		else if (thisi->parent->subitems == item)
-			thisi->parent->subitems = thisi->parent->subitems->next;
+		else if (item->parent->subitems == item)
+			item->parent->subitems = item->parent->subitems->next;
 		else
 		{
-			for (ref = thisi->parent->subitems; ref->next; ref = ref->next)
+			for (ref = item->parent->subitems; ref->next; ref = ref->next)
 			{
-				if (ref->next == thisi)
+				if (ref->next == item)
 				{
 					ref->next = ref->next->next;
-					thisi->next = NULL;
+					item->next = NULL;
 					break;
 				}
 			}
 		}
-		thisi->next = NULL;
-		thisi->parent = NULL;
+		item->next = NULL;
+		item->parent = NULL;
 	}
 }
 void Menu_AddAtFront(Menu_SubMenu *parent, Menu_SubMenu *menu)
@@ -59,7 +58,7 @@
 void Menu_BringToFront(Menu_SubMenu *menu)
 {
 	Menu_SubMenu *p = menu->super.parent;
-	Menu_RemoveFromParent(menu);
+	Menu_RemoveFromParent(&menu->super);
 	Menu_AddAtFront(p, menu);
 }
 
@@ -86,19 +85,18 @@
 }
 
 //generic items
-void Menu_Generic_MouseMoveSelectable(void *item, Menu_Inheritance *inh)
+void Menu_Generic_MouseMoveSelectable(Menu_Item *item, Menu_Inheritance *inh)
 {
-	Menu_Item *thisi = item;
 	NUint j;
 
 	for (j = 0; j < 2; j++)
 	{
-		if (Input.mouse[j] < thisi->pos[j]+inh->addpos[j] || Input.mouse[j] > thisi->pos[j]+inh->addpos[j] + thisi->size[j])
+		if (Input.mouse[j] < item->pos[j]+inh->addpos[j] || Input.mouse[j] > item->pos[j]+inh->addpos[j] + item->size[j])
 			return;
 	}
 
-	if (thisi->parent->selecteditem != thisi)
-		thisi->parent->selecteditem = thisi;	//mouse is in us.	
+	if (item->parent->selecteditem != item)
+		item->parent->selecteditem = item;	//mouse is in us.	
 }
 void Menu_Generic_MouseMoveNonSelectable(UNUSED void *item, UNUSED Menu_Inheritance *inh)
 {	
@@ -107,12 +105,11 @@
 {
 	return false;
 }
-void Menu_Generic_Destroy(void *item)
+void Menu_Generic_Destroy(Menu_Item *item)
 {
-	Menu_Item *thisi = item;
-	if (thisi->parent)
-		if (thisi->parent->selecteditem == item)
-			thisi->parent->selecteditem = NULL;
+	if (item->parent)
+		if (item->parent->selecteditem == item)
+			item->parent->selecteditem = NULL;
 	Menu_RemoveFromParent(item);
 
 	if (Menu.grabs == item)
@@ -149,25 +146,23 @@
 
 
 //text items
-void Menu_DrawTextItem(void *item, Menu_Inheritance *inh)
+void Menu_DrawTextItem(Menu_TextItem *item, Menu_Inheritance *inh)
 {
-	Menu_TextItem *thisi = item;
 	R_SetBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 	R_SetTexture(R.resource_font);
-	R_DrawString(thisi->text, 0, thisi->super.pos[0] + inh->addpos[0], thisi->super.pos[1] + inh->addpos[1], 8, 8, Console_DefaultColorTable, Console_DefaultColorTableSize, thisi->super.parent->selecteditem == &thisi->super);
+	R_DrawString(item->text, 0, item->super.pos[0] + inh->addpos[0], item->super.pos[1] + inh->addpos[1], 8, 8, Console_DefaultColorTable, Console_DefaultColorTableSize, item->super.parent->selecteditem == &item->super);
 }
 void Menu_Text_DefaultUse (struct Menu_TextItem *item)
 {
 	Shell_ExecuteScript("console", item->command);
 }
-Nbool Menu_Text_KeyPress (void *item, UNUSED NUint mod, NUint sym, UNUSED NUint character, Nbool downevent)
+Nbool Menu_Text_KeyPress (Menu_TextItem *item, UNUSED NUint mod, NUint sym, UNUSED NUint character, Nbool downevent)
 {
-	Menu_TextItem *thisi = item;
 	if (sym == SDLK_RETURN || sym == MOUSE1)
 	{
 		if (downevent)
-			if (thisi->UseTextItem)
-				thisi->UseTextItem(thisi);
+			if (item->UseTextItem)
+				item->UseTextItem(item);
 		return true;
 	}
 	return false;
@@ -202,62 +197,60 @@
 
 //text-edit fields
 //fixme: only work with grabs?
-void Menu_DrawEditItem(void *item, Menu_Inheritance *inh)
+void Menu_DrawEditItem(Menu_EditItem *item, Menu_Inheritance *inh)
 {
-	Menu_EditItem *thisi = item;
 	R_SetBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 	R_SetTexture(R.resource_font);
-	R_DrawString(thisi->text, 0, thisi->super.pos[0] + inh->addpos[0], thisi->super.pos[1] + inh->addpos[1], 8, 8, Console_DefaultColorTable, Console_DefaultColorTableSize, thisi->super.parent->selecteditem == &thisi->super);
-	if (thisi->super.parent->selecteditem == &thisi->super)
-		R_DrawString("_", 0, thisi->super.pos[0] + inh->addpos[0] + thisi->cursorpos*8, thisi->super.pos[1] + inh->addpos[1], 8, 8, Console_DefaultColorTable, Console_DefaultColorTableSize, 0);
+	R_DrawString(item->text, 0, item->super.pos[0] + inh->addpos[0], item->super.pos[1] + inh->addpos[1], 8, 8, Console_DefaultColorTable, Console_DefaultColorTableSize, item->super.parent->selecteditem == &item->super);
+	if (item->super.parent->selecteditem == &item->super)
+		R_DrawString("_", 0, item->super.pos[0] + inh->addpos[0] + item->cursorpos*8, item->super.pos[1] + inh->addpos[1], 8, 8, Console_DefaultColorTable, Console_DefaultColorTableSize, 0);
 }
-Nbool Menu_Edit_KeyPress (void *item, UNUSED NUint mod, NUint sym, NUint character, Nbool downevent)
+Nbool Menu_Edit_KeyPress (Menu_EditItem *item, UNUSED NUint mod, NUint sym, NUint character, Nbool downevent)
 {
-	Menu_EditItem *thisi = item;
 	if (sym == SDLK_RETURN || sym == MOUSE1)
 	{
 //		if (downevent)
-//			Shell_ExecuteScript("console", thisi->command);
+//			Shell_ExecuteScript("console", item->command);
 		return true;
 	}
 	if (sym == SDLK_BACKSPACE)
 	{
 		if (!downevent)
 			return true;
-		if (!thisi->cursorpos)
+		if (!item->cursorpos)
 		{
-			if (*thisi->text)
-				thisi->cursorpos = 1;
+			if (*item->text)
+				item->cursorpos = 1;
 			else
 				return true;
 		}
 
-		memmove(thisi->text+thisi->cursorpos-1, thisi->text+thisi->cursorpos, strlen(thisi->text+thisi->cursorpos)+1);
-		thisi->cursorpos--;
+		memmove(item->text+item->cursorpos-1, item->text+item->cursorpos, strlen(item->text+item->cursorpos)+1);
+		item->cursorpos--;
 		return true;
 	}
 	if (sym == SDLK_HOME)
 	{
-		thisi->cursorpos = 0;
+		item->cursorpos = 0;
 		return true;
 	}
 	if (sym == SDLK_END)
 	{
-		thisi->cursorpos = strlen(thisi->text);
+		item->cursorpos = strlen(item->text);
 		return true;
 	}
 	if (sym == SDLK_LEFT)
 	{
-		thisi->cursorpos -= downevent;
-		if (thisi->cursorpos < 0)
-			thisi->cursorpos = 0;
+		item->cursorpos -= downevent;
+		if (item->cursorpos < 0)
+			item->cursorpos = 0;
 		return true;
 	}
 	if (sym == SDLK_RIGHT)
 	{
-		thisi->cursorpos += downevent;
-		if (thisi->cursorpos > strlen(thisi->text))
-			thisi->cursorpos = strlen(thisi->text);
+		item->cursorpos += downevent;
+		if (item->cursorpos > strlen(item->text))
+			item->cursorpos = strlen(item->text);
 		return true;
 	}
 
@@ -267,18 +260,18 @@
 		if (!downevent)
 			return true;
 
-		if (thisi->maxchars && thisi->maxchars <= strlen(thisi->text))
+		if (item->maxchars && item->maxchars <= strlen(item->text))
 			return true;	//already reached the max
 
-		newt = Mem_Alloc(Menu.menu_zone, strlen(thisi->text)+2);
-		memcpy(newt, thisi->text, thisi->cursorpos);
-		memcpy(newt+thisi->cursorpos+1, thisi->text+thisi->cursorpos, strlen(thisi->text+thisi->cursorpos)+1);
-		newt[thisi->cursorpos] = character;
+		newt = Mem_Alloc(Menu.menu_zone, strlen(item->text)+2);
+		memcpy(newt, item->text, item->cursorpos);
+		memcpy(newt+item->cursorpos+1, item->text+item->cursorpos, strlen(item->text+item->cursorpos)+1);
+		newt[item->cursorpos] = character;
 
-		Mem_Free(&thisi->text);
-		thisi->text = newt;
+		Mem_Free(&item->text);
+		item->text = newt;
 
-		thisi->cursorpos++;
+		item->cursorpos++;
 		return true;
 	}
 	return false;
@@ -313,30 +306,29 @@
 
 
 //combos
-void Menu_DrawComboItem(void *item, Menu_Inheritance *inh)
+void Menu_DrawComboItem(Menu_ComboItem *item, Menu_Inheritance *inh)
 {
-	Menu_ComboItem *thisi = item;
 	R_SetBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 	R_SetTexture(R.resource_font);
-	R_DrawString(thisi->text, 0, thisi->super.pos[0] + inh->addpos[0], thisi->super.pos[1] + inh->addpos[1], 8, 8, Console_DefaultColorTable, Console_DefaultColorTableSize, thisi->super.parent->selecteditem == &thisi->super);
+	R_DrawString(item->text, 0, item->super.pos[0] + inh->addpos[0], item->super.pos[1] + inh->addpos[1], 8, 8, Console_DefaultColorTable, Console_DefaultColorTableSize, item->super.parent->selecteditem == &item->super);
 
-	R_DrawString("V", 0, thisi->super.pos[0] + thisi->super.size[0]-8 + inh->addpos[0], thisi->super.pos[1] + inh->addpos[1], 8, 8, Console_DefaultColorTable, Console_DefaultColorTableSize, thisi->super.parent->selecteditem == &thisi->super);
+	R_DrawString("V", 0, item->super.pos[0] + item->super.size[0]-8 + inh->addpos[0], item->super.pos[1] + inh->addpos[1], 8, 8, Console_DefaultColorTable, Console_DefaultColorTableSize, item->super.parent->selecteditem == &item->super);
 }
 
-void Menu_Combo_SetText(Menu_ComboItem *thisi, char *text)//it's just easier. not sure weather this should be public or not.
+void Menu_Combo_SetText(Menu_ComboItem *item, char *text)//it's just easier. not sure whether this should be public or not.
 {
 	Menu_ComboOption *option;
 	char *oldtext;
-	oldtext = thisi->text;
-	thisi->text = Mem_Alloc(Menu.menu_zone, strlen(text)+1);
-	strcpy(thisi->text, text);
+	oldtext = item->text;
+	item->text = Mem_Alloc(Menu.menu_zone, strlen(text)+1);
+	strcpy(item->text, text);
 
-	thisi->selected = NULL;
-	for (option = thisi->options; option; option = option->next)
+	item->selected = NULL;
+	for (option = item->options; option; option = option->next)
 	{
 		if (!strcmp(option->text, text))
 		{
-			thisi->selected = option;
+			item->selected = option;
 			break;
 		}
 	}
@@ -344,67 +336,66 @@
 	Mem_Free(&oldtext);
 }
 
-void Menu_ComboSlider (struct Menu_SliderItem *slider)
+void Menu_ComboSlider (Menu_SliderItem *slider)
 {
-	Menu_SubMenu *thisi = slider->data;
-	thisi->subwindow.pos[1] = -slider->value;
+	Menu_SubMenu *submenu = slider->data;
+	submenu->subwindow.pos[1] = -slider->value;
 }
 void Menu_UseOption (Menu_TextItem *it)
 {
-	Menu_ComboItem *thisi = (void*)it->command;
-	Menu_Combo_SetText(thisi, it->text);
+	Menu_ComboItem *comboitem = (void*)it->command;
+	Menu_Combo_SetText(comboitem, it->text);
 
 	//seeing as this happens from a key event, and the text control will return true, we can safly kill the popup
-	thisi->popup->super.Destroy(thisi->popup);
+	comboitem->popup->super.Destroy(comboitem->popup);
+	comboitem->popup = NULL;
 }
 
 
-Nbool Menu_Combo_KeyPress (void *item, UNUSED NUint mod, UNUSED NUint sym, UNUSED NUint character, UNUSED Nbool downevent)
+Nbool Menu_Combo_KeyPress (Menu_ComboItem *item, UNUSED NUint mod, UNUSED NUint sym, UNUSED NUint character, UNUSED Nbool downevent)
 {
 	if (sym == SDLK_RETURN || sym == MOUSE1)
 	{
 		Menu_TextItem *txt;
-		Menu_ComboItem *thisi = item;
 		Menu_ComboOption *option;
 		Menu_SubMenu *interior;
 		NSint pixels;
 		NUint i;
 
-		thisi->popup = Menu_CreateMenu(&Menu.rootmenu);
-		Menu_BringToFront(thisi->popup);
-		interior = Menu_CreateMenu(thisi->popup);
+		item->popup = Menu_CreateMenu(&Menu.rootmenu);
+		Menu_BringToFront(item->popup);
+		interior = Menu_CreateMenu(item->popup);
 		interior->allowclose = false;
-		Menu.grabs = &thisi->popup->super;
-		option = thisi->options;
+		Menu.grabs = &item->popup->super;
+		option = item->options;
 		for (i = 0; option; i+=8, option = option->next)
 		{
-			txt = Menu_CreateTextItem(interior, 0, i, option->text, thisi, Menu_UseOption);
-			txt->super.size[0] = thisi->super.size[0] - 8;
+			txt = Menu_CreateTextItem(interior, 0, i, option->text, item, Menu_UseOption);
+			txt->super.size[0] = item->super.size[0] - 8;
 		}
 		pixels = i-64;
 		if (pixels < 0)
 			pixels = 0;
-		Menu_CreateVSliderItem(thisi->popup, thisi->super.size[0] - 8, 0, 8, ((i>64)?64:i), 0, pixels, 0, Menu_ComboSlider, NULL, interior);
+		Menu_CreateVSliderItem(item->popup, item->super.size[0] - 8, 0, 8, ((i>64)?64:i), 0, pixels, 0, Menu_ComboSlider, NULL, interior);
 
-		thisi->popup->super.pos[0] = Input.mouse[0];
-		thisi->popup->super.pos[1] = Input.mouse[1];
+		item->popup->super.pos[0] = Input.mouse[0];
+		item->popup->super.pos[1] = Input.mouse[1];
 
-		thisi->popup->subwindow.pos[0] = thisi->popup->super.pos[0];
-		thisi->popup->subwindow.pos[1] = thisi->popup->super.pos[1];
+		item->popup->subwindow.pos[0] = item->popup->super.pos[0];
+		item->popup->subwindow.pos[1] = item->popup->super.pos[1];
 		Menu_FinishMenu(interior);
 		interior->super.size[1] = ((i>64)?64:i);
-		Menu_FinishMenu(thisi->popup);
+		Menu_FinishMenu(item->popup);
 		return true;
 	}
 	return false;
 }
 
-void Menu_Combo_Destroy(void *item)
+void Menu_Combo_Destroy(Menu_ComboItem *item)
 {
-	Menu_ComboItem *combo = item;
-	if (combo->popup)
-		combo->popup->super.Destroy(combo->popup);
-	Menu_Generic_Destroy(item);
+	if (item->popup)
+		item->popup->super.Destroy(item->popup);
+	Menu_Generic_Destroy(&item->super);
 }
 
 Menu_ComboItem *Menu_CreateComboItem(Menu_SubMenu *parent, NSint x, NSint y, NUint w, char *defalt, char *list)
@@ -461,21 +452,19 @@
 
 
 //picture items
-void Menu_Picture_Draw(void *item, Menu_Inheritance *inh)
+void Menu_Picture_Draw(Menu_PictureItem *item, Menu_Inheritance *inh)
 {
-	Menu_PictureItem *thisi = item;
 	R_SetBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 	R_SetColor(1, 1, 1, 1);
-	R_SetTexture(Resource_IndexForName(thisi->imagename, RESOURCETYPE_TEXTURE, 0, 0));
-	R_DrawPic(thisi->super.pos[0] + inh->addpos[0], thisi->super.pos[1] + inh->addpos[1], thisi->super.size[0], thisi->super.size[1]);
+	R_SetTexture(Resource_IndexForName(item->imagename, RESOURCETYPE_TEXTURE, 0, 0));
+	R_DrawPic(item->super.pos[0] + inh->addpos[0], item->super.pos[1] + inh->addpos[1], item->super.size[0], item->super.size[1]);
 }
-Nbool Menu_Picture_KeyPress (void *item, UNUSED NUint mod, NUint sym, UNUSED NUint character, Nbool downevent)
+Nbool Menu_Picture_KeyPress (Menu_PictureItem *item, UNUSED NUint mod, NUint sym, UNUSED NUint character, Nbool downevent)
 {
-	Menu_PictureItem *thisi = item;
 	if (sym == SDLK_RETURN || sym == MOUSE1)
 	{
 		if (downevent)
-			Shell_ExecuteScript("console", thisi->command);
+			Shell_ExecuteScript("console", item->command);
 		return true;
 	}
 	return false;
@@ -509,55 +498,52 @@
 
 
 //sliderh items
-void Menu_SliderH_Draw(void *item, Menu_Inheritance *inh)
+void Menu_SliderH_Draw(Menu_SliderItem *item, Menu_Inheritance *inh)
 {
-	Menu_SliderItem *thisi = item;
-
 	Nfloat frac;
 
 //	R_SetBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 //	R_SetColor(1, 1, 1, 1);
-//	R_SetTexture(Resource_IndexForName(thisi->imagename, RESOURCETYPE_TEXTURE, 0, 0));
-//	R_DrawPic(thisi->super.pos[0] + inh->addpos[0], thisi->super.pos[1] + inh->addpos[1], thisi->super.size[0], thisi->super.size[1]);
+//	R_SetTexture(Resource_IndexForName(item->imagename, RESOURCETYPE_TEXTURE, 0, 0));
+//	R_DrawPic(item->super.pos[0] + inh->addpos[0], item->super.pos[1] + inh->addpos[1], item->super.size[0], item->super.size[1]);
 
-	if (Menu.grabs == item)
+	if (Menu.grabs == &item->super)
 	{
 		{
-			thisi->value = Input.mouse[0] - (thisi->super.pos[0]+inh->addpos[0] + thisi->scale*1.5);
-			if (thisi->value < 0)
-				thisi->value = 0;
-			if (thisi->value > thisi->super.size[0] - thisi->scale*3)
-				thisi->value = thisi->super.size[0] - thisi->scale*3;
+			item->value = Input.mouse[0] - (item->super.pos[0]+inh->addpos[0] + item->scale*1.5);
+			if (item->value < 0)
+				item->value = 0;
+			if (item->value > item->super.size[0] - item->scale*3)
+				item->value = item->super.size[0] - item->scale*3;
 
-			thisi->value *= thisi->maxv - thisi->minv;
-			thisi->value /= thisi->super.size[0] - thisi->scale*3;
-			thisi->value += thisi->minv;
+			item->value *= item->maxv - item->minv;
+			item->value /= item->super.size[0] - item->scale*3;
+			item->value += item->minv;
 
-			thisi->SliderChanged(thisi);
+			item->SliderChanged(item);
 		}
 	}
 
-	if (thisi->SliderUpdate)
-		thisi->SliderUpdate(thisi);
+	if (item->SliderUpdate)
+		item->SliderUpdate(item);
 
 	R_SetBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 
-	frac = (thisi->value-thisi->minv)/(thisi->maxv-thisi->minv);
+	frac = (item->value-item->minv)/(item->maxv-item->minv);
 	R_SetTexture(R.resource_font);
 //	snprintf(value, sizeof(value), "%f%%", frac);
-//	R_DrawString(value, 0, thisi->super.pos[0] + inh->addpos[0], thisi->super.pos[1] + inh->addpos[1], 8, 8, Console_DefaultColorTable, Console_DefaultColorTableSize, thisi->super.parent->selecteditem == &thisi->super);
+//	R_DrawString(value, 0, item->super.pos[0] + inh->addpos[0], item->super.pos[1] + inh->addpos[1], 8, 8, Console_DefaultColorTable, Console_DefaultColorTableSize, item->super.parent->selecteditem == &item->super);
 
-	R_DrawString("x", 0, thisi->super.pos[0] + inh->addpos[0] + thisi->scale + (thisi->super.size[0]-thisi->scale*3)*frac, thisi->super.pos[1] + inh->addpos[1], thisi->scale, thisi->scale, Console_DefaultColorTable, Console_DefaultColorTableSize, thisi->super.parent->selecteditem == &thisi->super);
-	R_DrawString("<", 0, thisi->super.pos[0] + inh->addpos[0], thisi->super.pos[1] + inh->addpos[1], thisi->scale, thisi->scale, Console_DefaultColorTable, Console_DefaultColorTableSize, thisi->super.parent->selecteditem == &thisi->super);
-	R_DrawString(">", 0, thisi->super.pos[0] + inh->addpos[0] - thisi->scale + (thisi->super.size[0]), thisi->super.pos[1] + inh->addpos[1], thisi->scale, thisi->scale, Console_DefaultColorTable, Console_DefaultColorTableSize, thisi->super.parent->selecteditem == &thisi->super);
+	R_DrawString("x", 0, item->super.pos[0] + inh->addpos[0] + item->scale + (item->super.size[0]-item->scale*3)*frac, item->super.pos[1] + inh->addpos[1], item->scale, item->scale, Console_DefaultColorTable, Console_DefaultColorTableSize, item->super.parent->selecteditem == &item->super);
+	R_DrawString("<", 0, item->super.pos[0] + inh->addpos[0], item->super.pos[1] + inh->addpos[1], item->scale, item->scale, Console_DefaultColorTable, Console_DefaultColorTableSize, item->super.parent->selecteditem == &item->super);
+	R_DrawString(">", 0, item->super.pos[0] + inh->addpos[0] - item->scale + (item->super.size[0]), item->super.pos[1] + inh->addpos[1], item->scale, item->scale, Console_DefaultColorTable, Console_DefaultColorTableSize, item->super.parent->selecteditem == &item->super);
 }
-Nbool Menu_Slider_KeyPress (void *item, UNUSED NUint mod, NUint sym, UNUSED NUint character, Nbool downevent)
+Nbool Menu_Slider_KeyPress (Menu_SliderItem *item, UNUSED NUint mod, NUint sym, UNUSED NUint character, Nbool downevent)
 {
-	Menu_SliderItem *thisi = item;
 	if (sym == MOUSE1)
 	{
 		if (downevent)
-			Menu.grabs = item;
+			Menu.grabs = &item->super;
 		else
 			Menu.grabs = NULL;
 		return true;
@@ -566,8 +552,8 @@
 	{
 		if (downevent)
 		{
-			thisi->value -= 1;
-			thisi->SliderChanged(thisi);
+			item->value -= 1;
+			item->SliderChanged(item);
 		}
 		return true;
 	}
@@ -575,8 +561,8 @@
 	{
 		if (downevent)
 		{
-			thisi->value += 1;
-			thisi->SliderChanged(thisi);
+			item->value += 1;
+			item->SliderChanged(item);
 		}
 		return true;
 	}
@@ -613,46 +599,45 @@
 
 
 //sliderv items
-void Menu_SliderV_Draw(void *item, Menu_Inheritance *inh)
+void Menu_SliderV_Draw(Menu_SliderItem *item, Menu_Inheritance *inh)
 {
-	Menu_SliderItem *thisi = item;
 	Nfloat frac;
 
 //	R_SetBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 //	R_SetColor(1, 1, 1, 1);
-//	R_SetTexture(Resource_IndexForName(thisi->imagename, RESOURCETYPE_TEXTURE, 0, 0));
-//	R_DrawPic(thisi->super.pos[0] + inh->addpos[0], thisi->super.pos[1] + inh->addpos[1], thisi->super.size[0], thisi->super.size[1]);
+//	R_SetTexture(Resource_IndexForName(item->imagename, RESOURCETYPE_TEXTURE, 0, 0));
+//	R_DrawPic(item->super.pos[0] + inh->addpos[0], item->super.pos[1] + inh->addpos[1], item->super.size[0], item->super.size[1]);
 
-	if (Menu.grabs == item)
+	if (Menu.grabs == &item->super)
 	{
 		{
-			thisi->value = Input.mouse[1] - ((thisi->super.pos[1]+inh->addpos[1]) + thisi->scale*1.5);
-			if (thisi->value < 0)
-				thisi->value = 0;
-			if (thisi->value > thisi->super.size[1] - thisi->scale*3)
-				thisi->value = thisi->super.size[1] - thisi->scale*3;
+			item->value = Input.mouse[1] - ((item->super.pos[1]+inh->addpos[1]) + item->scale*1.5);
+			if (item->value < 0)
+				item->value = 0;
+			if (item->value > item->super.size[1] - item->scale*3)
+				item->value = item->super.size[1] - item->scale*3;
 
-			thisi->value *= thisi->maxv - thisi->minv;
-			thisi->value /= thisi->super.size[1] - thisi->scale*3;
-			thisi->value += thisi->minv;
+			item->value *= item->maxv - item->minv;
+			item->value /= item->super.size[1] - item->scale*3;
+			item->value += item->minv;
 
-			thisi->SliderChanged(thisi);
+			item->SliderChanged(item);
 		}
 	}
 
-	if (thisi->SliderUpdate)
-		thisi->SliderUpdate(thisi);
+	if (item->SliderUpdate)
+		item->SliderUpdate(item);
 
 	R_SetBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 
-	frac = (thisi->value-thisi->minv)/(thisi->maxv-thisi->minv);
+	frac = (item->value-item->minv)/(item->maxv-item->minv);
 	R_SetTexture(R.resource_font);
 //	snprintf(value, sizeof(value), "%f%%", frac);
-//	R_DrawString(value, 0, thisi->super.pos[0] + inh->addpos[0], thisi->super.pos[1] + inh->addpos[1], 8, 8, Console_DefaultColorTable, Console_DefaultColorTableSize, thisi->super.parent->selecteditem == &thisi->super);
+//	R_DrawString(value, 0, item->super.pos[0] + inh->addpos[0], item->super.pos[1] + inh->addpos[1], 8, 8, Console_DefaultColorTable, Console_DefaultColorTableSize, item->super.parent->selecteditem == &item->super);
 
-	R_DrawString("x", 0, thisi->super.pos[0] + inh->addpos[0], thisi->super.pos[1] + inh->addpos[1] + thisi->scale + (thisi->super.size[1]-thisi->scale*3)*frac, thisi->scale, thisi->scale, Console_DefaultColorTable, Console_DefaultColorTableSize, thisi->super.parent->selecteditem == &thisi->super);
-	R_DrawString("A", 0, thisi->super.pos[0] + inh->addpos[0], thisi->super.pos[1] + inh->addpos[1], thisi->scale, thisi->scale, Console_DefaultColorTable, Console_DefaultColorTableSize, thisi->super.parent->selecteditem == &thisi->super);
-	R_DrawString("V", 0, thisi->super.pos[0] + inh->addpos[0], thisi->super.pos[1] + inh->addpos[1] - thisi->scale + (thisi->super.size[1]), thisi->scale, thisi->scale, Console_DefaultColorTable, Console_DefaultColorTableSize, thisi->super.parent->selecteditem == &thisi->super);
+	R_DrawString("x", 0, item->super.pos[0] + inh->addpos[0], item->super.pos[1] + inh->addpos[1] + item->scale + (item->super.size[1]-item->scale*3)*frac, item->scale, item->scale, Console_DefaultColorTable, Console_DefaultColorTableSize, item->super.parent->selecteditem == &item->super);
+	R_DrawString("A", 0, item->super.pos[0] + inh->addpos[0], item->super.pos[1] + inh->addpos[1], item->scale, item->scale, Console_DefaultColorTable, Console_DefaultColorTableSize, item->super.parent->selecteditem == &item->super);
+	R_DrawString("V", 0, item->super.pos[0] + inh->addpos[0], item->super.pos[1] + inh->addpos[1] - item->scale + (item->super.size[1]), item->scale, item->scale, Console_DefaultColorTable, Console_DefaultColorTableSize, item->super.parent->selecteditem == &item->super);
 }
 Menu_SliderItem *Menu_CreateVSliderItem(Menu_SubMenu *parent, NSint x, NSint y, NUint w, NUint h, Nfloat minv, Nfloat maxv, Nfloat defaultv, void (*ChangeNotification)(Menu_SliderItem*), void (*UpdateSlider)(Menu_SliderItem*), void *data)
 {
@@ -687,36 +672,35 @@
 
 
 //submenus
-void Menu_MouseMoveSubMenu(void *item, Menu_Inheritance *inh)
+void Menu_MouseMoveSubMenu(Menu_SubMenu *item, Menu_Inheritance *inh)
 {
-	Menu_SubMenu *thisi = item;
 	Menu_Item *subitem;
 	Menu_Inheritance ninh;
 	NUint j;
 
-	if (Menu.grabs == &thisi->super && thisi->dragable)
+	if (Menu.grabs == &item->super && item->dragable)
 	{
-		thisi->subwindow.pos[0] += Input.mouse[0] - thisi->dragmousepos[0];
-		thisi->subwindow.pos[1] += Input.mouse[1] - thisi->dragmousepos[1];
-		thisi->super.pos[0] += Input.mouse[0] - thisi->dragmousepos[0];
-		thisi->super.pos[1] += Input.mouse[1] - thisi->dragmousepos[1];
-		thisi->dragmousepos[0] = Input.mouse[0];
-		thisi->dragmousepos[1] = Input.mouse[1];
-//		Menu_FinishMenu(thisi->super.parent);
+		item->subwindow.pos[0] += Input.mouse[0] - item->dragmousepos[0];
+		item->subwindow.pos[1] += Input.mouse[1] - item->dragmousepos[1];
+		item->super.pos[0] += Input.mouse[0] - item->dragmousepos[0];
+		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);
 	}
 
 	for (j = 0; j < 2; j++)
 	{
 		NSint wmin, wmax;
-/*		if (Input.mouse[j] < thisi->subwindow.pos[j]+inh->addpos[j] || Input.mouse[j] > thisi->subwindow.pos[j]+inh->addpos[j] + thisi->subwindow.size[j])
+/*		if (Input.mouse[j] < item->subwindow.pos[j]+inh->addpos[j] || Input.mouse[j] > item->subwindow.pos[j]+inh->addpos[j] + item->subwindow.size[j])
 		{
-			thisi->indrag = false;
+			item->indrag = false;
 			return;
 		}
 */
 
-		wmin = inh->addpos[j] + thisi->super.pos[j];
-		wmax = wmin + thisi->super.size[j];
+		wmin = inh->addpos[j] + item->super.pos[j];
+		wmax = wmin + item->super.size[j];
 		if (inh->window.pos[j] > wmin)
 			wmin = inh->window.pos[j];
 		if (inh->window.pos[j] + inh->window.size[j] < wmax)
@@ -731,39 +715,38 @@
 		ninh.window.size[j] = wmax-wmin;
 	}
 
-	ninh.addpos[0] = inh->addpos[0] + thisi->subwindow.pos[0];
-	ninh.addpos[1] = inh->addpos[1] + thisi->subwindow.pos[1];
+	ninh.addpos[0] = inh->addpos[0] + item->subwindow.pos[0];
+	ninh.addpos[1] = inh->addpos[1] + item->subwindow.pos[1];
 
 
-	if (thisi->super.parent)
-		thisi->super.parent->selecteditem = &thisi->super;	//mouse is in us.
+	if (item->super.parent)
+		item->super.parent->selecteditem = &item->super;	//mouse is in us.
 
-	thisi->selecteditem = NULL;
+	item->selecteditem = NULL;
 
-	for (subitem = thisi->subitems; subitem; subitem = subitem->next)
+	for (subitem = item->subitems; subitem; subitem = subitem->next)
 		subitem->MouseMove(subitem, &ninh);
 }
-void Menu_DrawSubMenu(void *item, Menu_Inheritance *inh)
+void Menu_DrawSubMenu(Menu_SubMenu *item, Menu_Inheritance *inh)
 {
-	Menu_SubMenu *thisi = item;
 	Menu_Item *subitem, *next;
 	Menu_Inheritance ninh;
 	NUint j;
 
-	if (thisi->super.parent)
+	if (item->super.parent)
 	{
-		if (thisi->super.parent->selecteditem != item)
-			thisi->selecteditem = NULL;
+		if (item->super.parent->selecteditem != &item->super)
+			item->selecteditem = NULL;
 	}
 
-	ninh.addpos[0] = inh->addpos[0] + thisi->subwindow.pos[0];
-	ninh.addpos[1] = inh->addpos[1] + thisi->subwindow.pos[1];
+	ninh.addpos[0] = inh->addpos[0] + item->subwindow.pos[0];
+	ninh.addpos[1] = inh->addpos[1] + item->subwindow.pos[1];
 
 	for (j = 0; j < 2; j++)
 	{
 		NSint wmin, wmax;
-		wmin = inh->addpos[j] + thisi->super.pos[j];
-		wmax = wmin + thisi->super.size[j];
+		wmin = inh->addpos[j] + item->super.pos[j];
+		wmax = wmin + item->super.size[j];
 		if (wmin < inh->window.pos[j])
 			wmin = inh->window.pos[j];
 		ninh.window.pos[j] = wmin;
@@ -775,7 +758,7 @@
 
 	R_SetScissor(ninh.window.pos[0], ninh.window.pos[1], ninh.window.size[0], ninh.window.size[1]);
 
-	for (subitem = thisi->subitems; subitem; subitem = next)
+	for (subitem = item->subitems; subitem; subitem = next)
 	{
 		next = subitem->next;//this funkyness is so that we can unlink and kill things in the draw function (if the need arises).
 		subitem->DrawMenu(subitem, &ninh);
@@ -783,60 +766,59 @@
 
 	R_SetScissor(inh->window.pos[0], inh->window.pos[1], inh->window.size[0], inh->window.size[1]);
 }
-Nbool Menu_KeyEventSubMenu (void *item, NUint mod, NUint sym, NUint character, Nbool downevent)
+Nbool Menu_KeyEventSubMenu (Menu_SubMenu *item, NUint mod, NUint sym, NUint character, Nbool downevent)
 {
-	Menu_SubMenu *thisi = item;
 	Menu_Item *subitem;
 
-	Menu_BringToFront(thisi);
+	Menu_BringToFront(item);
 
-	subitem = thisi->selecteditem;
-	if (thisi->selecteditem)
+	subitem = item->selecteditem;
+	if (item->selecteditem)
 		if (subitem->KeyEvent(subitem, mod, sym, character, downevent))
 			return true;
 
-	if (thisi->allowclose && sym == SDLK_ESCAPE)
+	if (item->allowclose && sym == SDLK_ESCAPE)
 	{
-		Menu_RemoveFromParent(thisi);
-		thisi->super.Destroy(thisi);
+		Menu_RemoveFromParent(&item->super);
+		item->super.Destroy(item);
 		return true;
 	}
 
-	if (thisi->dragable)
+	if (item->dragable)
 	{
 		if (sym == SDLK_LEFT)
 		{
-			thisi->super.pos[0] -= 4;
-			Menu_FinishMenu(thisi);
+			item->super.pos[0] -= 4;
+			Menu_FinishMenu(item);
 			return true;
 		}
 		if (sym == SDLK_UP)
 		{
-			thisi->super.pos[1] -= 4;
-			Menu_FinishMenu(thisi);
+			item->super.pos[1] -= 4;
+			Menu_FinishMenu(item);
 			return true;
 		}
 		if (sym == SDLK_RIGHT)
 		{
-			thisi->super.pos[0] += 4;
-			Menu_FinishMenu(thisi);
+			item->super.pos[0] += 4;
+			Menu_FinishMenu(item);
 			return true;
 		}
 		if (sym == SDLK_DOWN)
 		{
-			thisi->super.pos[1] += 4;
-			Menu_FinishMenu(thisi);
+			item->super.pos[1] += 4;
+			Menu_FinishMenu(item);
 			return true;
 		}
 
 		if (sym == MOUSE1)
 		{
 			if (downevent)
-				Menu.grabs = &thisi->super;
+				Menu.grabs = &item->super;
 			else
 				Menu.grabs = NULL;
-			thisi->dragmousepos[0] = Input.mouse[0];
-			thisi->dragmousepos[1] = Input.mouse[1];
+			item->dragmousepos[0] = Input.mouse[0];
+			item->dragmousepos[1] = Input.mouse[1];
 			return true;
 		}
 	}
@@ -844,17 +826,16 @@
 	return false;
 }
 
-void Menu_SubMenu_Destroy(void *item)
+void Menu_SubMenu_Destroy(Menu_SubMenu *item)
 {
-	Menu_SubMenu *thisi = item;
 	Menu_Item *sub, *old;
-	for (sub = thisi->subitems; sub; )
+	for (sub = item->subitems; sub; )
 	{
 		old = sub;
 		sub = sub->next;
 		old->Destroy(old);
 	}
-	Menu_Generic_Destroy(item);
+	Menu_Generic_Destroy(&item->super);
 }
 
 Menu_SubMenu *Menu_CreateMenu(Menu_SubMenu *parent)




More information about the neither-commits mailing list