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