r675 - trunk/game

spike at icculus.org spike at icculus.org
Mon Mar 13 16:28:38 EST 2006


Author: spike
Date: 2006-03-13 16:28:38 -0500 (Mon, 13 Mar 2006)
New Revision: 675

Modified:
   trunk/game/m_menucore.c
   trunk/game/m_menucore.h
Log:
Attempt two at sliders. The total code is smaller and shared between both sorts of slider (except the 3 actual calls to drawing functions).

Modified: trunk/game/m_menucore.c
===================================================================
--- trunk/game/m_menucore.c	2006-03-13 21:15:28 UTC (rev 674)
+++ trunk/game/m_menucore.c	2006-03-13 21:28:38 UTC (rev 675)
@@ -579,7 +579,7 @@
 
 
 //sliderh items
-void Menu_HSlider_Draw(Menu_SliderItem *item, Menu_Inheritance *inh)
+void Menu_Slider_Draw(Menu_SliderItem *item, Menu_Inheritance *inh)
 {
 	Nfloat frac;
 
@@ -591,14 +591,14 @@
 	if (Menu.grabs == &item->super)
 	{
 		{
-			item->value = Input.mouse[0] - (item->super.pos[0]+inh->addpos[0] + item->scale*1.5);
+			item->value = Input.mouse[item->axis] - (item->super.pos[item->axis]+inh->addpos[item->axis] + 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;
+			if (item->value > item->super.size[item->axis] - item->scale*3)
+				item->value = item->super.size[item->axis] - item->scale*3;
 
 			item->value *= item->maxv - item->minv;
-			item->value /= item->super.size[0] - item->scale*3;
+			item->value /= item->super.size[item->axis] - item->scale*3;
 			item->value += item->minv;
 
 			item->SliderChanged(item, item->cookie);
@@ -612,12 +612,19 @@
 
 	frac = (item->value-item->minv)/(item->maxv-item->minv);
 	R_SetTexture(R.resource_font);
-//	snprintf(value, sizeof(value), "%f%%", frac);
-//	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, 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);
+	if (item->axis == 0)
+	{
+		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);
+	}
+	else
+	{
+		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);
+	}
 }
 Nbool Menu_Slider_KeyPress (Menu_SliderItem *item, UNUSED NUint mod, NUint sym, UNUSED NUint character, Nbool downevent)
 {
@@ -649,20 +656,22 @@
 	}
 	return false;
 }
-Menu_SliderItem *Menu_HSlider_Create(Menu_SubMenu *parent, NSint x, NSint y, NUint w, NUint h, Nfloat minv, Nfloat maxv, Nfloat defaultv, void (*ChangeNotification)(Menu_SliderItem *item, void *cookie), void (*UpdateSlider)(Menu_SliderItem *item, void *cookie), void *cookie)
+Menu_SliderItem *Menu_Slider_Create(Menu_SubMenu *parent, NUint axis, NSint x, NSint y, NUint w, NUint h, Nfloat minv, Nfloat maxv, Nfloat defaultv, void (*ChangeNotification)(Menu_SliderItem *item, void *cookie), void (*UpdateSlider)(Menu_SliderItem *item, void *cookie), void *cookie)
 {
 	Menu_SliderItem *it;
 	it = (Menu_SliderItem*)Menu_Generic_Create(parent, x, y, sizeof(Menu_SliderItem));
 
-	it->super.DrawMenu = Menu_HSlider_Draw;
+	it->super.DrawMenu = Menu_Slider_Draw;
 	it->super.MouseMove = Menu_Generic_MouseMoveSelectable;
 	it->super.KeyEvent = Menu_Slider_KeyPress;
 
 	it->super.size[0] = w;
 	it->super.size[1] = h;
 
-	it->scale = h;
+	it->axis = axis;
 
+	it->scale = axis?w:h;
+
 	it->cookie = cookie;
 	it->maxv = maxv;
 	it->minv = minv;
@@ -672,86 +681,25 @@
 
 	return it;
 }
-
-
-
-
-
-
-
-//sliderv items
-void Menu_VSlider_Draw(Menu_SliderItem *item, Menu_Inheritance *inh)
+Menu_SliderItem *Menu_HSlider_Create(Menu_SubMenu *parent, NSint x, NSint y, NUint w, NUint h, Nfloat minv, Nfloat maxv, Nfloat defaultv, void (*ChangeNotification)(Menu_SliderItem *item, void *cookie), void (*UpdateSlider)(Menu_SliderItem *item, void *cookie), void *cookie)
 {
-	Nfloat frac;
-
-//	R_SetBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-//	R_SetColor(1, 1, 1, 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->super)
-	{
-		{
-			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;
-
-			item->value *= item->maxv - item->minv;
-			item->value /= item->super.size[1] - item->scale*3;
-			item->value += item->minv;
-
-			item->SliderChanged(item, item->cookie);
-		}
-	}
-
-	if (item->SliderUpdate)
-		item->SliderUpdate(item, item->cookie);
-
-	R_SetBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
-	frac = (item->value-item->minv)/(item->maxv-item->minv);
-	R_SetTexture(R.resource_font);
-//	snprintf(value, sizeof(value), "%f%%", frac);
-//	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, 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);
+	return Menu_Slider_Create(parent, 0, x, y, w, h, minv, maxv, defaultv, ChangeNotification, UpdateSlider, cookie);
 }
 Menu_SliderItem *Menu_VSlider_Create(Menu_SubMenu *parent, NSint x, NSint y, NUint w, NUint h, Nfloat minv, Nfloat maxv, Nfloat defaultv, void (*ChangeNotification)(Menu_SliderItem *item, void *cookie), void (*UpdateSlider)(Menu_SliderItem *item, void *cookie), void *cookie)
 {
-	Menu_SliderItem *it;
-	it = (Menu_SliderItem*)Menu_Generic_Create(parent, x, y, sizeof(Menu_SliderItem));
+	return Menu_Slider_Create(parent, 1, x, y, w, h, minv, maxv, defaultv, ChangeNotification, UpdateSlider, cookie);
+}
 
-	it->super.DrawMenu = Menu_VSlider_Draw;
-	it->super.MouseMove = Menu_Generic_MouseMoveSelectable;
-	it->super.KeyEvent = Menu_Slider_KeyPress;
 
-	it->super.size[0] = w;
-	it->super.size[1] = h;
 
-	it->scale = w;
 
-	it->cookie = cookie;
-	it->maxv = maxv;
-	it->minv = minv;
-	it->value = defaultv;
-	it->SliderChanged = ChangeNotification;
-	it->SliderUpdate = UpdateSlider;
 
-	return it;
-}
 
 
 
 
 
 
-
-
-
 //submenus
 void Menu_SubMenu_MouseMove(Menu_SubMenu *item, Menu_Inheritance *inh)
 {
@@ -1097,15 +1045,13 @@
 	Menu_SubMenu *child;
 
 	child = Menu_SubMenu_Create(menu);
-	child->subwindow.pos[0] = sliderscale;
-	child->subwindow.pos[1] = sliderscale;
 	child->super.pos[0] = sliderscale;
 	child->super.pos[1] = sliderscale;
 
-	Menu_HSlider_Create(menu, sliderscale, 0, windowsize, sliderscale, sliderscale, sliderscale-imagesize + windowsize, 0, MoveMenuH, UpdateMoveMenuH, child);
-	Menu_HSlider_Create(menu, sliderscale, sliderscale+windowsize, windowsize, sliderscale, sliderscale, sliderscale-imagesize + windowsize, 0, MoveMenuH, UpdateMoveMenuH, child);
-	Menu_VSlider_Create(menu, 0, sliderscale, sliderscale, windowsize, sliderscale, sliderscale-imagesize + windowsize, 0, MoveMenuV, UpdateMoveMenuV, child);
-	Menu_VSlider_Create(menu, sliderscale+windowsize, sliderscale, sliderscale, windowsize, sliderscale, sliderscale-imagesize + windowsize, 0, MoveMenuV, UpdateMoveMenuV, child);
+	Menu_HSlider_Create(menu, sliderscale, 0, windowsize, sliderscale, 0, -imagesize + windowsize, 0, MoveMenuH, UpdateMoveMenuH, child);
+	Menu_HSlider_Create(menu, sliderscale, sliderscale+windowsize, windowsize, sliderscale, 0, -imagesize + windowsize, 0, MoveMenuH, UpdateMoveMenuH, child);
+	Menu_VSlider_Create(menu, 0, sliderscale, sliderscale, windowsize, 0, -imagesize + windowsize, 0, MoveMenuV, UpdateMoveMenuV, child);
+	Menu_VSlider_Create(menu, sliderscale+windowsize, sliderscale, sliderscale, windowsize, 0, -imagesize + windowsize, 0, MoveMenuV, UpdateMoveMenuV, child);
 	Menu_Picture_Create(child, 0, 0, imagesize, imagesize, "lhfont.tga", NULL, NULL);
 
 	Menu_SubMenu_Finish(child);

Modified: trunk/game/m_menucore.h
===================================================================
--- trunk/game/m_menucore.h	2006-03-13 21:15:28 UTC (rev 674)
+++ trunk/game/m_menucore.h	2006-03-13 21:28:38 UTC (rev 675)
@@ -108,6 +108,7 @@
 typedef struct Menu_SliderItem
 {
 	Menu_Item super;
+	NUint axis;
 
 	void *cookie;	//for custom stuff
 	Nfloat value;//set and used in the slider code




More information about the neither-commits mailing list