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