summaryrefslogtreecommitdiff
path: root/src/client/ui/menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/ui/menu.c')
-rw-r--r--src/client/ui/menu.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/client/ui/menu.c b/src/client/ui/menu.c
index ec8fbf6..32c9d7f 100644
--- a/src/client/ui/menu.c
+++ b/src/client/ui/menu.c
@@ -17,6 +17,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
*/
#include "ui.h"
+#include "server/server.h"
/*
===================================================================
@@ -77,7 +78,13 @@ static void Action_Draw(menuAction_t *a)
}
}
+ if (a->generic.flags & QMF_GRAYED) {
+ R_SetColor(uis.color.disabled.u32);
+ }
UI_DrawString(a->generic.x, a->generic.y, flags, a->generic.name);
+ if (a->generic.flags & QMF_GRAYED) {
+ R_ClearColor();
+ }
}
/*
@@ -1513,6 +1520,33 @@ static void Separator_Draw(menuSeparator_t *s)
/*
===================================================================
+SAVEGAME CONTROL
+
+===================================================================
+*/
+
+static void Savegame_Push(menuAction_t *a)
+{
+ char *info;
+
+ Z_Free(a->generic.name);
+
+ info = SV_GetSaveInfo(a->cmd);
+ if (info) {
+ a->generic.name = info;
+ a->generic.flags &= ~QMF_GRAYED;
+ } else {
+ a->generic.name = Z_CopyString("<EMPTY>");
+ if (a->generic.type == MTYPE_LOADGAME)
+ a->generic.flags |= QMF_GRAYED;
+ }
+
+ UI_StringDimensions(&a->generic.rect, a->generic.uiFlags, a->generic.name);
+}
+
+/*
+===================================================================
+
MISC
===================================================================
@@ -1610,6 +1644,8 @@ void Menu_Init(menuFrameWork_t *menu)
SpinControl_Init(item);
break;
case MTYPE_ACTION:
+ case MTYPE_SAVEGAME:
+ case MTYPE_LOADGAME:
Action_Init(item);
break;
case MTYPE_SEPARATOR:
@@ -1933,6 +1969,8 @@ void Menu_Draw(menuFrameWork_t *menu)
SpinControl_Draw(item);
break;
case MTYPE_ACTION:
+ case MTYPE_SAVEGAME:
+ case MTYPE_LOADGAME:
Action_Draw(item);
break;
case MTYPE_SEPARATOR:
@@ -1991,6 +2029,8 @@ menuSound_t Menu_SelectItem(menuFrameWork_t *s)
case MTYPE_ACTION:
case MTYPE_LIST:
case MTYPE_BITMAP:
+ case MTYPE_SAVEGAME:
+ case MTYPE_LOADGAME:
return Common_DoEnter(item);
default:
return QMS_NOTHANDLED;
@@ -2195,6 +2235,10 @@ qboolean Menu_Push(menuFrameWork_t *menu)
case MTYPE_FIELD:
Field_Push(item);
break;
+ case MTYPE_SAVEGAME:
+ case MTYPE_LOADGAME:
+ Savegame_Push(item);
+ break;
default:
break;
}
@@ -2249,6 +2293,8 @@ void Menu_Free(menuFrameWork_t *menu)
switch (((menuCommon_t *)item)->type) {
case MTYPE_ACTION:
+ case MTYPE_SAVEGAME:
+ case MTYPE_LOADGAME:
Action_Free(item);
break;
case MTYPE_SLIDER: